Saltar al contenido

Entrenar datos personalizados

📚 Esta guía explica cómo entrenar tu propio conjunto de datos personalizado con YOLOv5 🚀.

Antes de empezar

Clonar repo e instalar requirements.txt en un Python>=3.8.0 incluyendo PyTorch>=1.8. Los modelos y conjuntos de datos se descargan automáticamente de la últimaversión de YOLOv5 .

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

Entrenar con datos personalizados

Ultralytics aprendizaje activo

Crear un modelo personalizado para detectar tus objetos es un proceso iterativo de recopilación y organización de imágenes, etiquetado de tus objetos de interés, entrenamiento de un modelo, despliegue en la naturaleza para hacer predicciones y, a continuación, uso de ese modelo desplegado para recopilar ejemplos de casos extremos para repetirlos y mejorarlos.

Licencias

Ultralytics ofrece dos opciones de licencia:

Para más detalles, consulta Ultralytics Licencias.

YOLOv5 Los modelos deben entrenarse con datos etiquetados para aprender las clases de objetos de esos datos. Hay dos opciones para crear tu conjunto de datos antes de empezar el entrenamiento:

Opción 1: Crear un Roboflow Conjunto de datos

1.1 Recoger imágenes

Tu modelo aprenderá con el ejemplo. El entrenamiento con imágenes similares a las que verá en la naturaleza es de suma importancia. Lo ideal es que recopiles una amplia variedad de imágenes con la misma configuración (cámara, ángulo, iluminación, etc.) con la que finalmente desplegarás tu proyecto.

Si esto no es posible, puedes partir de un conjunto de datos público para entrenar tu modelo inicial y luego muestrear imágenes de la naturaleza durante la inferencia para mejorar tu conjunto de datos y tu modelo de forma iterativa.

1.2 Crear etiquetas

Una vez que hayas recopilado las imágenes, tendrás que anotar los objetos de interés para crear una verdad básica de la que pueda aprender tu modelo.

YOLOv5 precisiones

Roboflow Anotar es una sencilla herramienta web para gestionar y etiquetar tus imágenes con tu equipo y exportarlas en el formato de anotación deYOLOv5.

1.3 Preparar el conjunto de datos para YOLOv5

Tanto si etiquetas tus imágenes con Roboflow como si no, puedes utilizarlo para convertir tu conjunto de datos al formato YOLO , crear un archivo de configuración YAML YOLOv5 y alojarlo para importarlo en tu script de entrenamiento.

Crea una cuenta gratuita en Roboflow y sube tu conjunto de datos a Public espacio de trabajo, etiqueta las imágenes no anotadas y, a continuación, genera y exporta una versión de tu conjunto de datos en YOLOv5 Pytorch formato.

Nota: YOLOv5 realiza un aumento en línea durante el entrenamiento, por lo que no recomendamos aplicar ningún paso de aumento en Roboflow para entrenar con YOLOv5. Pero recomendamos aplicar los siguientes pasos de preprocesamiento:

Pasos de preprocesamiento recomendados

  • Orientación automática: para eliminar la orientación EXIF de tus imágenes.
  • Redimensionar (Estirar) - al tamaño de entrada cuadrado de tu modelo (640x640 es el valor por defecto de YOLOv5 ).

Generar una versión te dará una instantánea de tu conjunto de datos, de modo que siempre podrás volver atrás y comparar tus futuras ejecuciones de entrenamiento del modelo con él, incluso si añades más imágenes o cambias su configuración más adelante.

Exportar en formato YOLOv5

Exportar en YOLOv5 Pytorch y, a continuación, copia el fragmento en tu guión de entrenamiento o cuaderno para descargar tu conjunto de datos.

Roboflow fragmento de descarga del conjunto de datos

Opción 2: Crear un conjunto de datos manual

2.1 Crear dataset.yaml

COCO128 es un ejemplo de pequeño conjunto de datos tutorial compuesto por las 128 primeras imágenes de COCO entrenar2017. Estas mismas 128 imágenes se utilizan tanto para el entrenamiento como para la validación, a fin de verificar que nuestro proceso de entrenamiento es capaz de sobreajustarse. data/coco128.yamlque se muestra a continuación, es el archivo de configuración del conjunto de datos que define 1) el directorio raíz del conjunto de datos path y rutas relativas a train / val / test directorios de imágenes (o *.txt con rutas de imágenes) y 2) una clase names diccionario:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)

# Classes (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

2.2 Crear etiquetas

Después de utilizar una herramienta de anotación para etiquetar tus imágenes, exporta tus etiquetas a YOLO formatocon una *.txt por imagen (si no hay objetos en la imagen, no hay *.txt es necesario). En *.txt las especificaciones del archivo son:

  • Una fila por objeto
  • Cada fila es class x_center y_center width height formato.
  • Las coordenadas de la casilla deben estar en xywh normalizado (de 0 a 1). Si tus casillas están en píxeles, divide x_center y width por ancho de imagen, y y_center y height por la altura de la imagen.
  • Los números de clase tienen índice cero (empiezan por 0).

Roboflow anotaciones

El archivo de etiquetas correspondiente a la imagen anterior contiene 2 personas (clase 0) y un empate (clase 27):

Roboflow preprocesamiento del conjunto de datos

2.3 Organizar directorios

Organiza tus imágenes y etiquetas de tren y val según el ejemplo siguiente. YOLOv5 asume /coco128 está dentro de un /datasets directorio junto a el /yolov5 directorio. YOLOv5 localiza etiquetas automáticamente para cada imagen sustituyendo la última instancia de /images/ en cada ruta de imagen con /labels/. Por ejemplo:

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 estructura del conjunto de datos

3. Selecciona un modelo

Selecciona un modelo preentrenado a partir del cual empezar a entrenar. Aquí seleccionamos YOLOv5s, el segundo modelo más pequeño y rápido disponible. Consulta nuestra tabla LÉEME para ver una comparación completa de todos los modelos.

YOLOv5 modelos

4. Entrena

Entrena un modelo YOLOv5s en COCO128 especificando el conjunto de datos, el tamaño del lote, el tamaño de la imagen y o bien preentrenado --weights yolov5s.pt (recomendado), o inicializado aleatoriamente --weights '' --cfg yolov5s.yaml (no recomendado). Los pesos preentrenados se descargan automáticamente de la base de datos última versión de YOLOv5.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

Consejo

💡 Añadir --cache ram o --cache disk para acelerar el entrenamiento (requiere importantes recursos de RAM/disco).

Consejo

💡 Entrena siempre a partir de un conjunto de datos local. Las unidades montadas o en red, como Google Drive, serán muy lentas.

Todos los resultados del entrenamiento se guardan en runs/train/ con directorios de ejecución crecientes, es decir runs/train/exp2, runs/train/exp3 etc. Para más detalles, consulta la sección Formación de nuestro cuaderno de tutoriales. Abrir en Colab Abrir en Kaggle

5. Visualiza

Comet Registro y visualización 🌟 NUEVO

Comet está ahora totalmente integrado con YOLOv5. Haz un seguimiento y visualiza las métricas del modelo en tiempo real, guarda tus hiperparámetros, conjuntos de datos y puntos de control del modelo, y visualiza las predicciones de tu modelo con los paneles personalizados deComet . Comet se asegura de que nunca pierdas de vista tu trabajo y facilita el intercambio de resultados y la colaboración entre equipos de todos los tamaños.

Empezar es fácil:

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

Para obtener más información sobre todas las funciones de Comet compatibles con esta integración, consulta la página Comet Tutorial. Si quieres saber más sobre Comet, visita nuestra página web. documentación. Empieza probando el Cuaderno Colab Comet : Abrir en Colab

YOLO IU

ClearML Registro y automatización 🌟 NUEVO

ClearML está completamente integrado en YOLOv5 para realizar un seguimiento de tu experimentación, gestionar las versiones de los conjuntos de datos e incluso ejecutar remotamente las ejecuciones de entrenamiento. Para habilitar ClearML:

  • pip install clearml
  • ejecuta clearml-init para conectarte a un servidor ClearML

Tendrás todas las grandes funciones que se esperan de un gestor de experimentos: actualizaciones en directo, carga de modelos, comparación de experimentos, etc., pero ClearML también hace un seguimiento de los cambios no comprometidos y de los paquetes instalados, por ejemplo. Gracias a ello, ¡las Tareas ClearML (que es como llamamos a los experimentos) también son reproducibles en diferentes máquinas! Con sólo 1 línea adicional, podemos programar una tarea de entrenamiento YOLOv5 en una cola para que la ejecuten cualquier número de Agentes ClearML (trabajadores).

Puedes utilizar ClearML Data para versionar tu conjunto de datos y luego pasarlo a YOLOv5 simplemente utilizando su ID único. Esto te ayudará a hacer un seguimiento de tus datos sin añadir complicaciones adicionales. Explora el tutorial deClearML para más detalles.

ClearML Interfaz de usuario de gestión de experimentos

Registro local

Los resultados del entrenamiento se registran automáticamente con Tensorboard y CSV registradores para runs/traincon un nuevo directorio de experimentos creado para cada nuevo entrenamiento como runs/train/exp2, runs/train/exp3etc.

Este directorio contiene estadísticas de tren y val, mosaicos, etiquetas, predicciones y mosaicos aumentados, así como métricas y gráficos, incluidas las curvas de precisión-recuerdo (PR) y las matrices de confusión.

Resultados del registro local

Archivo de resultados results.csv se actualiza después de cada época, y luego se representa gráficamente como results.png (abajo) una vez finalizado el entrenamiento. También puedes trazar cualquier results.csv manualmente:

from utils.plots import plot_results

plot_results("path/to/results.csv")  # plot 'results.csv' as 'results.png'

resultados.png

Próximos pasos

Una vez entrenado tu modelo, puedes utilizar tu mejor punto de control best.pt a:

  • Ejecuta CLI o Python inferencia en nuevas imágenes y vídeos
  • Validar la precisión en las divisiones de entrenamiento, val y prueba
  • Exporta a los formatos TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML y TensorRT
  • Evoluciona los hiperparámetros para mejorar el rendimiento
  • Mejora tu modelo tomando muestras de imágenes del mundo real y añadiéndolas a tu conjunto de datos

Entornos compatibles

Ultralytics proporciona una serie de entornos listos para usar, cada uno de ellos preinstalado con dependencias esenciales como CUDA, CUDNN, Pythony PyTorchpara poner en marcha tus proyectos.

Estado del proyecto

YOLOv5 CI

Este distintivo indica que todas las pruebas de Integración Continua (IC) de las Acciones de GitHub deYOLOv5 se han superado con éxito. Estas pruebas de IC comprueban rigurosamente la funcionalidad y el rendimiento de YOLOv5 en varios aspectos clave: formación, validación, inferencia, exportación y puntos de referencia. Garantizan un funcionamiento coherente y fiable en macOS, Windows y Ubuntu, con pruebas realizadas cada 24 horas y con cada nueva confirmación.



Creado 2023-11-12, Actualizado 2024-05-18
Autores: glenn-jocher (12), Burhan-Q (1)

Comentarios