Pytorch: detección de objetivos Yolo-V5 (arriba) (2023)

En términos de pruebas objetivo, los algoritmos YOLO y SSD son más populares. Este artículo registra cómo usar YOLO-V5 para la detección de objetivos. Debido a que la longitud total es muy larga, se divide en dos capítulos. Este artículo es la primera parte. Registra cómo ejecutar el código Yolo-V5 y realizar capacitación y probar el conjunto de datos COCO128. La siguiente parte registrará cómo marcar los datos y capacitar a su conjunto de datos.

Directorio de artículos

  • 1. Introducción
  • 2. Modelo de Yolo
  • 3. Entorno de configuración
  • 4. Prueba simple
  • 5. Descargue el conjunto de datos COCO128
  • 6. Empiece a entrenar
  • 7. Visualización de evaluación del modelo
  • 8. Sube la imagen para las pruebas
  • 9. Materiales de referencia

Yolo se llama solo mira una vez (solo necesitas verlo una vez). Al procesar imágenes de redes neuronales convolucionales, el núcleo de la convolución debe ser escaneado por la imagen, mientras que Yolo divide una imagen en innumerables cuadrados para determinar la posibilidad del objetivo de cada cuadrado por la máquina. La teoría específica es más complicada. Si desea comprender el principio, recomiendo ver los dos videos a continuación.
El primero es el algoritmo Yolo explicado por Wu Enda (Portal)
El segundo es el algoritmo Yolo-V3 más claro de la estación B (Portal)
La versión V en Yolo IS, que representa la versión. Los fundadores de Yolo se han actualizado de V1 a V3, mientras que V4 y V5 están escritos por otro autor. V3 Versión.

(Video) APRENDE A DETECTAR OBJETOS EN TIEMPO REAL | Entrena y ejecuta tu propia red neuronal con Yolov5

Pytorch: detección de objetivos Yolo-V5 (arriba) (1)

Yolo-V5 tiene un total de cuatro modelos de pre-entrenamiento, V5S, V5M, V5L, V5X, S es pequeño, M es medio, L es grande. Por ejemplo, como modelo previo al entrenamiento.
El rendimiento específico de los cuatro modelos se muestra a continuación:
Pytorch: detección de objetivos Yolo-V5 (arriba) (2)

Mi entorno de computadora:
Configuración de hardware: GPU2060, 32 g de memoria;
Configuración del software: Ventana 10, IDE: Pycharm 2020, Python: 3.8, Versión de PytorchGPU
Use Git Bash para descargar el código fuente YOLOV5:

git clone https://github.com/ultralytics/yolov5

O también puede copiar la conexión para descargar el archivo zip

(Video) Detección de objetos en video con YOLO v3 y Pytorch

Después de cerrar el código fuente de Yolov5, hay un archivo requisitos.txt, que enumera algunos de los archivos de la biblioteca que deben instalarse
requirements.txt

# base ----------------------------------------matplotlib>=3.2.2numpy>=1.18.5opencv-python>=4.1.2PillowPyYAML>=5.3.1scipy>=1.4.1torch>=1.7.0torchvision>=0.8.1tqdm>=4.41.0# logging -------------------------------------tensorboard>=2.4.1# wandb# plotting ------------------------------------seaborn>=0.11.0pandas# export --------------------------------------# coremltools>=4.1# onnx>=1.9.0# scikit-learn==0.19.2 # for coreml quantization

Se puede ejecutar directamente en la terminal

pip install -r requirements.txt

El sistema lo ayudará a instalar todas las necesidades, pero algunas bibliotecas son relativamente grandes, es fácil instalar errores y se recomienda instalar instalación manual.
Después de completar la descarga, la composición del archivo se muestra en la figura a continuación:
Pytorch: detección de objetivos Yolo-V5 (arriba) (3)
El último yolov5s.pt es un archivo de peso modelo y debe descargarse adicional.
(Puede responder "yolo" en la cuenta pública de WeChat "Tengo un plan" y obtener el enlace de descarga de todos los archivos)

Después de configurar el entorno, puede iniciar una prueba simple.
El archivo de datos/imágenes proporciona dos imágenes predeterminadas de dos pruebas
Pytorch: detección de objetivos Yolo-V5 (arriba) (4)
Pytorch: detección de objetivos Yolo-V5 (arriba) (5)
Abrimos el archivo Detect.py y vemos la función principal

(Video) COMO entrenar una RED NEURONAL YoloV5 con DATOS PERSONALIZADOS

if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--weights', nargs='+', type=str, default='yolov5s.pt', help='model.pt path(s)') parser.add_argument('--source', type=str, default='data/images', help='source') # file/folder, 0 for webcam parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS') parser.add_argument('--max-det', type=int, default=1000, help='maximum number of detections per image') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--view-img', action='store_true', help='display results') parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') parser.add_argument('--save-crop', action='store_true', help='save cropped prediction boxes') parser.add_argument('--nosave', action='store_true', help='do not save images/videos') parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3') parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') parser.add_argument('--augment', action='store_true', help='augmented inference') parser.add_argument('--update', action='store_true', help='update all models') parser.add_argument('--project', default='runs/detect', help='save results to project/name') parser.add_argument('--name', default='exp', help='save results to project/name') parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') parser.add_argument('--line-thickness', default=3, type=int, help='bounding box thickness (pixels)') parser.add_argument('--hide-labels', default=False, action='store_true', help='hide labels') parser.add_argument('--hide-conf', default=False, action='store_true', help='hide confidences') opt = parser.parse_args()

Se encuentra que es realizado por líneas de comando analizadores, y el valor predeterminado en cada elemento es el valor predeterminado.
Al ver el contenido de - Souce, eligió la carpeta de imágenes, es decir, para probar todos los contenidos en la carpeta.
Ejecute el Detect.py, puede encontrar que hay dos imágenes más en la carpeta Runs/Detect/Exp, estos dos son los resultados de detección
Pytorch: detección de objetivos Yolo-V5 (arriba) (6)
Pytorch: detección de objetivos Yolo-V5 (arriba) (7)
Se puede ver que el efecto sigue siendo muy obvio.

El conjunto de datos de Coco es un conjunto de datos de 80 clases. Su contenido incluye cosas comunes en la vida, como aviones, trenes y automóviles. COCO128 son 128 imágenes en Coco.
En la carpeta Scripts descargada, hay un archivo de configuración con Coco128.yaml. Después de abrir, puede encontrar el enlace de descarga.

# download command/URL (optional)download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]train: ../coco128/images/train2017/ # 128 imagesval: ../coco128/images/train2017/ # 128 images# number of classesnc: 80# class namesnames: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush' ]# with open('data/coco.yaml') as f:# d = yaml.safe_load(f) # dict# for i, x in enumerate(d['names']):# print(i, x)

También puede ejecutar Train.py sin descargar, lo descargará automáticamente para usted, pero puede descargarlo y cargarla manualmente si la red no es buena. La he subido a la cuenta pública de WeChat "Tengo uno" y responder " Yolo "puedes verlo.
Tenga en cuenta que el conjunto de datos descargado debe colocarse debajo de la carpeta atada con yolov5.
Pytorch: detección de objetivos Yolo-V5 (arriba) (8)
Aquí hay un poco de suplemento para el archivo de configuración. Train: Conjunto de capacitación representativa, Val representa un conjunto de verificación, NC representa la clasificación, los nombres indican una pestaña de clasificación.

Ejecutar Train.py directamente, pero su tamaño por lotes predeterminado es relativamente grande, y puede haber una situación de memoria de video insuficiente. Simplemente ajuste el tamaño de lote. Lo ajusto a 8. Las épocas predeterminadas son 300 veces, lo que es más de tiempo. El primer uso se puede ajustar más pequeño.
Puede ajustar directamente los números, o puede ingresar en el terminal

(Video) 🦒 Detección de objetos con YOLOv3 (80 categorías) usando DNN de OpenCV | Python

train.py --epochs 10

Los 10 aquí cubrirán los 300 predeterminados.

Sin embargo, también uso las 300 veces predeterminadas para entrenar. La captura de pantalla de entrenamiento es la siguiente:
Pytorch: detección de objetivos Yolo-V5 (arriba) (9)
Un total de 0.7 horas.
Después de que la capacitación sea exitosa, habrá un aviso:
Pytorch: detección de objetivos Yolo-V5 (arriba) (10)
Le ayudará a guardar dos modelos, Last Model Last.PT.PT. El mejor modelo Best.
Además, se guardará mucha información en el archivo Runs/Train/Exp.
Por ejemplo, el etiquetado y la prueba de algún lote
Marca:
Pytorch: detección de objetivos Yolo-V5 (arriba) (11)
prueba:
Pytorch: detección de objetivos Yolo-V5 (arriba) (12)
Se puede ver que el efecto sigue siendo bastante bueno.

En la carpeta entrenada, además de algunas imágenes mencionadas anteriormente, hay algunas imágenes para mostrar indicadores de evaluación del modelo.
Pytorch: detección de objetivos Yolo-V5 (arriba) (13)
El significado de estos indicadores no se investigará cuidadosamente por el momento, y se resumirá por separado en el futuro.

Además, también puede usar la herramienta de visualización Tensorboard
Ingrese en la terminal

(Video) Detección de Objetos

tensorboard --logdir=runs

Saltará de un enlace local
http://localhost:6006/
Después de hacer clic, ingresará una nueva página, que puede ajustarse dinámicamente y visual, lo cual es muy conveniente y hermoso.
Pytorch: detección de objetivos Yolo-V5 (arriba) (14)

Para probar el efecto real del modelo, descargué una imagen de Internet y me puse en datos/imágenes
Pytorch: detección de objetivos Yolo-V5 (arriba) (15)
Modifique el valor predeterminado de Souce en Detect.py Data/Images/Plane.jpg
Después de ejecutar, puede ver los resultados en ejecuciones/detectar
Pytorch: detección de objetivos Yolo-V5 (arriba) (16)
¡Tres aviones fueron completamente detectados!

Yolo V5 logra la detección de objetivos

Videos

1. How To Deploy YOLOv5 Object Detection Model with OpenCV - With Example and Python Code
(Nicolai Nielsen - Computer Vision & AI)
2. How To Deploy Custom YOLOv5 Model for Object Detection with OpenCV - With Example and Python Code
(Nicolai Nielsen - Computer Vision & AI)
3. Deteccion de Arma con Machine Learning
(RediA)
4. YOLOv5 Custom Object Detection with Code and Dataset - Neural Networks and Deep Learning
(Nicolai Nielsen - Computer Vision & AI)
5. Install YOLOv5 to Detect Objects on Windows & Google Colab with PyTorch GPU Support | Part 1
(Weights & Biases)
6. [#05] SAHI+DETIC: Detectá Objetos a Gran Escala en Minutos
(machinelearnear)
Top Articles
Latest Posts
Article information

Author: Sen. Emmett Berge

Last Updated: 01/13/2023

Views: 5975

Rating: 5 / 5 (60 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Sen. Emmett Berge

Birthday: 1993-06-17

Address: 787 Elvis Divide, Port Brice, OH 24507-6802

Phone: +9779049645255

Job: Senior Healthcare Specialist

Hobby: Cycling, Model building, Kitesurfing, Origami, Lapidary, Dance, Basketball

Introduction: My name is Sen. Emmett Berge, I am a funny, vast, charming, courageous, enthusiastic, jolly, famous person who loves writing and wants to share my knowledge and understanding with you.