Inferencia de detección de objetos en Python con YOLOv5 y PyTorch PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Inferencia de detección de objetos en Python con YOLOv5 y PyTorch

Introducción

La detección de objetos es un campo amplio en la visión por computadora y una de las aplicaciones más importantes de la visión por computadora "en la naturaleza". Por un lado, se puede usar para construir sistemas autónomos que guíen a los agentes a través de los entornos, ya sean robots que realizan tareas o automóviles autónomos, pero esto requiere la intersección con otros campos. Sin embargo, la detección de anomalías (como productos defectuosos en una línea), la ubicación de objetos dentro de las imágenes, la detección facial y varias otras aplicaciones de detección de objetos se pueden realizar sin cruzar otros campos.

La detección de objetos no está tan estandarizada como la clasificación de imágenes, principalmente porque la mayoría de los nuevos desarrollos generalmente los realizan investigadores, mantenedores y desarrolladores individuales, en lugar de grandes bibliotecas y marcos. Es difícil empaquetar los scripts de utilidades necesarios en un marco como TensorFlow o PyTorch y mantener las pautas de la API que guiaron el desarrollo hasta el momento.

Esto hace que la detección de objetos sea algo más compleja, normalmente más detallada (pero no siempre) y menos accesible que la clasificación de imágenes. Uno de los principales beneficios de estar en un ecosistema es que le brinda una forma de no buscar información útil sobre buenas prácticas, herramientas y enfoques para usar. Con la detección de objetos, la mayoría de las personas tienen que investigar mucho más en el paisaje del campo para obtener un buen agarre.

Afortunadamente para las masas, Ultralytics ha desarrollado una API de detección de objetos simple, muy poderosa y hermosa en torno a su implementación de YOLOv5.

En esta breve guía, realizaremos la detección de objetos en Python, con YOLOv5 creado por Ultralytics en PyTorch, utilizando un conjunto de pesos previamente entrenados en MS COCO.

YOLOv5

YOLO (Solo se mira una vez) es una metodología, así como una familia de modelos construidos para la detección de objetos. Desde el inicio en 2015, YOLOv1, YOLOv2 (YOLO9000) y YOLOv3 han sido propuestos por los mismos autores, y la comunidad de aprendizaje profundo continuó con avances de código abierto en los años siguientes.

YOLOv5 de ultralíticos es la primera implementación a gran escala de YOLO en PyTorch, lo que lo hizo más accesible que nunca, pero la razón principal por la que YOLOv5 se ha afianzado tanto es también la API maravillosamente simple y poderosa construida a su alrededor. El proyecto abstrae los detalles innecesarios, al tiempo que permite la personalización, prácticamente todos los formatos de exportación utilizables, y emplea prácticas sorprendentes que hacen que todo el proyecto sea eficiente y óptimo. Verdaderamente, es un ejemplo de la belleza de la implementación de software de código abierto y cómo impulsa el mundo en el que vivimos.

El proyecto proporciona ponderaciones previamente entrenadas en MS COCO, un conjunto de datos básico sobre objetos en contexto, que se puede usar tanto para comparar como para construir sistemas generales de detección de objetos, pero lo más importante, se puede usar para transferir el conocimiento general de los objetos en contexto a los personalizados. conjuntos de datos

Detección de objetos con YOLOv5

Antes de seguir adelante, asegúrese de tener torch y torchvision instalado:

! python -m pip install torch torchvision

YOLOv5 tiene una documentación detallada y sensata y una API maravillosamente simple, como se muestra en el propio repositorio y en el siguiente ejemplo:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

El segundo argumento de la hub.load() El método especifica los pesos que nos gustaría usar. Eligiendo cualquier lugar entre yolov5n a yolov5l6 – estamos cargando las pesas preentrenadas de MS COCO. Para modelos personalizados:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

En cualquier caso, una vez que pasa la entrada a través del modelo, el objeto devuelto incluye métodos útiles para interpretar los resultados, y hemos optado por render() ellos, que devuelve una matriz NumPy que podemos tirar en un imshow() llamar. Esto da como resultado un formato agradable:

Guardar resultados como archivos

Puede guardar los resultados de la inferencia como un archivo, usando el results.save() método:

results.save(save_dir='results')

Esto creará un nuevo directorio si aún no está presente y guardará la misma imagen que acabamos de trazar como un archivo.

Recortar objetos

También puede decidir recortar los objetos detectados como archivos individuales. En nuestro caso, por cada etiqueta detectada, se pueden extraer una serie de imágenes. Esto se logra fácilmente a través de la results.crop() método, que crea un runs/detect/ directorio, con expN/crops (donde N aumenta para cada ejecución), en el que se crea un directorio con imágenes recortadas para cada etiqueta:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

También puede verificar la estructura del archivo de salida con:

Consulte nuestra guía práctica y práctica para aprender Git, con las mejores prácticas, los estándares aceptados por la industria y la hoja de trucos incluida. Deja de buscar en Google los comandos de Git y, de hecho, aprenden ella!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Conteo de objetos

De forma predeterminada, cuando realiza una detección o imprime el results objeto: obtendrá la cantidad de imágenes en las que se realizó la inferencia para ese results objeto (YOLOv5 también funciona con lotes de imágenes), su resolución y el recuento de cada etiqueta detectada:

print(results)

Esto resulta en:

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

Inferencia con Scripts

Alternativamente, puede ejecutar el script de detección, detect.py, clonando el repositorio YOLOv5:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

Y luego corriendo:

$ python detect.py --source img.jpg

Alternativamente, puede proporcionar una URL, un archivo de video, una ruta a un directorio con varios archivos, un globo en una ruta para que coincida solo con ciertos archivos, un enlace de YouTube o cualquier otra transmisión HTTP. Los resultados se guardan en el runs/detect directorio.

Yendo más lejos: aprendizaje profundo práctico para la visión por computadora

¿Tu naturaleza inquisitiva te hace querer ir más allá? Recomendamos revisar nuestro Curso: “Aprendizaje Profundo Práctico para Visión por Computador con Python”.

Inferencia de detección de objetos en Python con YOLOv5 y PyTorch PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

¿Otro curso de visión artificial?

No haremos clasificación de dígitos MNIST o moda MNIST. Cumplieron su parte hace mucho tiempo. Demasiados recursos de aprendizaje se centran en conjuntos de datos básicos y arquitecturas básicas antes de permitir que las arquitecturas avanzadas de caja negra carguen con la carga del rendimiento.

queremos centrarnos en desmitificación, sentido práctico, comprensión, intuición y proyectos reales. Querer aprender cómo ¿Tu puedes hacer la diferencia? Lo llevaremos en un viaje desde la forma en que nuestros cerebros procesan imágenes hasta escribir un clasificador de aprendizaje profundo de grado de investigación para el cáncer de mama y redes de aprendizaje profundo que "alucinan", enseñándole los principios y la teoría a través del trabajo práctico, equipándolo con el conocimientos y herramientas para convertirse en un experto en la aplicación del aprendizaje profundo para resolver la visión artificial.

¿Qué hay adentro?

  • Los primeros principios de la visión y cómo se puede enseñar a las computadoras a “ver”
  • Diferentes tareas y aplicaciones de la visión artificial
  • Las herramientas del oficio que facilitarán tu trabajo
  • Encontrar, crear y utilizar conjuntos de datos para la visión por computadora
  • La teoría y aplicación de las Redes Neuronales Convolucionales
  • Manejo de cambio de dominio, co-ocurrencia y otros sesgos en conjuntos de datos
  • Transfiera el aprendizaje y utilice el tiempo de capacitación y los recursos computacionales de otros para su beneficio
  • Construyendo y entrenando un clasificador de cáncer de mama de última generación
  • Cómo aplicar una buena dosis de escepticismo a las ideas principales y comprender las implicaciones de las técnicas ampliamente adoptadas
  • Visualización del "espacio conceptual" de ConvNet usando t-SNE y PCA
  • Casos prácticos de cómo las empresas utilizan técnicas de visión artificial para lograr mejores resultados
  • Evaluación adecuada del modelo, visualización del espacio latente e identificación de la atención del modelo.
  • Realizar investigaciones de dominio, procesar sus propios conjuntos de datos y establecer pruebas modelo
  • Arquitecturas de vanguardia, la progresión de las ideas, qué las hace únicas y cómo implementarlas
  • KerasCV: una biblioteca WIP para crear canalizaciones y modelos de última generación
  • Cómo analizar y leer documentos e implementarlos usted mismo
  • Selección de modelos en función de su aplicación
  • Creación de una canalización de aprendizaje automático de extremo a extremo
  • Panorama e intuición sobre la detección de objetos con Faster R-CNN, RetinaNets, SSD y YOLO
  • Instancia y segmentación semántica
  • Reconocimiento de objetos en tiempo real con YOLOv5
  • Capacitación de detectores de objetos YOLOv5
  • Trabajando con Transformers usando KerasNLP (biblioteca WIP de fuerza industrial)
  • Integrando Transformers con ConvNets para generar subtítulos de imágenes
  • sueño profundo

Conclusión

En esta breve guía, analizamos cómo puede realizar la detección de objetos con YOLOv5 creado con PyTorch.

Sello de tiempo:

Mas de Abuso de pila