Ir al contenido

Entrenar YOLOv5 con 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 a 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

La creación de un modelo personalizado para detectar objetos es un proceso iterativo que consiste en recopilar y organizar imágenes, etiquetar los objetos de interés, entrenar un modelo, desplegarlo en la naturaleza para realizar predicciones y, a continuación, utilizar ese modelo desplegado para recopilar ejemplos de casos extremos para repetirlos y mejorarlos.

Licencias

Ultralytics ofrece dos opciones de licencia:

Para más detalles, consulte Ultralytics Licensing.

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

Opción 1: Crear un Roboflow Conjunto de datos

1.1 Recopilar imágenes

Su 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 recopilar una amplia variedad de imágenes con la misma configuración (cámara, ángulo, iluminación, etc.) con la que se desplegará finalmente el proyecto.

Si esto no es posible, puede partir de un conjunto de datos público para entrenar su modelo inicial y, a continuación, muestrear imágenes de la naturaleza durante la inferencia para mejorar su conjunto de datos y modelo de forma iterativa.

1.2 Crear etiquetas

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

YOLOv5 precisiones

Roboflow Annotate es una sencilla herramienta basada en web para gestionar y etiquetar las 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 etiqueta sus imágenes con Roboflow como si no, puede utilizarlo para convertir su conjunto de datos al formato YOLO , crear un archivo de configuración YAML YOLOv5 y alojarlo para importarlo en su script de entrenamiento.

Cree una cuenta gratuita en Roboflow y cargue su conjunto de datos en Public etiquete las imágenes no anotadas y, a continuación, genere y exporte una versión de su conjunto de datos en YOLOv5 Pytorch formato.

Nota: YOLOv5 realiza el aumento en línea durante el entrenamiento, por lo que no recomendamos aplicar ningún paso de aumento en Roboflow para el entrenamiento 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 las imágenes.
  • Redimensionar (Estirar) - al tamaño cuadrado de entrada de su modelo (640x640 es el valor por defecto de YOLOv5 ).

La generación de una versión le proporcionará una instantánea de su conjunto de datos, por lo que siempre podrá volver atrás y comparar sus futuras ejecuciones de entrenamiento del modelo con él, incluso si añade más imágenes o cambia su configuración más adelante.

Exportación en formato YOLOv5

Exportar en YOLOv5 Pytorch y, a continuación, copie el fragmento en su script de entrenamiento o cuaderno para descargar su 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 train2017. Estas mismas 128 imágenes se utilizan tanto para el entrenamiento como para la validación con el fin de verificar que nuestro proceso de entrenamiento es capaz de sobreajuste. 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 ). En *.txt son las especificaciones del archivo:

  • 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 sus casillas están en píxeles, divida 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

Organice sus 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 automáticamente las etiquetas de 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. Seleccione un modelo

Selecciona un modelo preentrenado para 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. Tren

Entrenar un modelo YOLOv5s en COCO128 especificando el conjunto de datos, el tamaño del lote, el tamaño de la imagen y el preentrenamiento. --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 incrementales, es decir runs/train/exp2, runs/train/exp3 etc. Para más detalles, consulte la sección Formación de nuestro cuaderno de tutoriales. Abrir en Colab Abrir en Kaggle

5. Visualice

Comet Registro y visualización 🌟 NUEVO

Comet está ahora totalmente integrado con YOLOv5. Siga y visualice las métricas del modelo en tiempo real, guarde sus hiperparámetros, conjuntos de datos y puntos de control del modelo, y visualice las predicciones de su modelo con los paneles personalizados deComet . Comet se asegura de que nunca pierda el hilo de su 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, consulte la página Comet Tutorial. Si desea más información sobre Comet, visite nuestra página web. documentación. Empieza probando el cuaderno Colab de Comet : Abrir en Colab

YOLO INTERFAZ DE USUARIO

ClearML Registro y automatización 🌟 NUEVO

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

  • pip install clearml
  • ejecute clearml-init para conectarse a un servidor ClearML

Obtendrás todas las grandes características esperadas de un gestor de experimentos: actualizaciones en vivo, carga de modelos, comparación de experimentos, etc. pero ClearML también rastrea los cambios no comprometidos y los paquetes instalados, por ejemplo. Gracias a esto ClearML Tasks (que es como llamamos a los experimentos) ¡también son reproducibles en diferentes máquinas! Con sólo 1 línea extra, podemos programar una tarea de entrenamiento YOLOv5 en una cola para ser ejecutada por cualquier número de ClearML Agentes (trabajadores).

Puede utilizar ClearML Data para versionar su conjunto de datos y luego pasarlo a YOLOv5 simplemente utilizando su ID único. Esto le ayudará a realizar un seguimiento de sus datos sin más complicaciones. Para más información, consulte el tutorial deClearML .

ClearML Interfaz de usuario para la 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 entrenamiento y validación, mosaicos, etiquetas, predicciones y mosaicos aumentados, así como métricas y gráficos que incluyen curvas de precisión-recuperación (PR) y matrices de confusión.

Resultados del registro local

Archivo de resultados results.csv se actualiza después de cada épocay se representa como results.png (abajo) una vez finalizado el entrenamiento. También puede 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 que su modelo está entrenado puede utilizar su mejor punto de control best.pt a:

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

Entornos compatibles

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

Estado del proyecto

YOLOv5 CI

Este distintivo indica que todas las pruebas de integración continua (IC) deYOLOv5 GitHub Actions 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 en cada nueva confirmación.

PREGUNTAS FRECUENTES

¿Cómo entreno YOLOv5 en mi conjunto de datos personalizado?

El entrenamiento de YOLOv5 en un conjunto de datos personalizado implica varios pasos:

  1. Prepare su conjunto de datos: Recopile y etiquete las imágenes. Utilice herramientas como Roboflow para organizar los datos y exportarlos en formatoYOLOv5 .
  2. Configuración del entorno: Clona el repositorio YOLOv5 e instala las dependencias:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Crear configuración de conjunto de datos: Escribe un dataset.yaml que define las rutas tren/val y los nombres de las clases.
  4. Entrenar el modelo:
    python train.py --img 640 --epochs 3 --data dataset.yaml --weights yolov5s.pt
    

¿Qué herramientas puedo utilizar para anotar mi conjunto de datos YOLOv5 ?

Puede utilizar Roboflow Annotate, una intuitiva herramienta basada en web para etiquetar imágenes. Admite la colaboración en equipo y exporta en formato YOLOv5 . Tras recopilar las imágenes, utilice Roboflow para crear y gestionar las anotaciones de forma eficaz. Otras opciones son herramientas como LabelImg y CVAT para anotaciones locales.

¿Por qué debería utilizar Ultralytics HUB para formar a mis modelos YOLO ?

Ultralytics HUB ofrece una plataforma integral para la formación, despliegue y gestión de modelos YOLO sin necesidad de grandes conocimientos de codificación. Entre sus ventajas se incluyen:

  • Fácil formación de modelos: Simplifica el proceso de formación con entornos preconfigurados.
  • Gestión de datos: Gestiona sin esfuerzo conjuntos de datos y control de versiones.
  • Supervisión en tiempo real: Integra herramientas como Comet para el seguimiento y la visualización de métricas en tiempo real.
  • Colaboración: Ideal para proyectos en equipo con recursos compartidos y fácil gestión.

Para obtener información detallada, consulte Cómo entrenar sus modelos personalizados con Ultralytics HUB.

¿Cómo convierto mis datos anotados al formato YOLOv5 ?

Para convertir datos anotados al formato YOLOv5 utilizando Roboflow:

  1. Cargue su conjunto de datos en un espacio de trabajo Roboflow .
  2. Etiquetar las imágenes si no están ya etiquetadas.
  3. Generar y exportar el conjunto de datos en YOLOv5 Pytorch formato. Asegúrese de que se aplican pasos de preprocesamiento como la orientación automática y el cambio de tamaño (estiramiento) al tamaño de entrada cuadrado (por ejemplo, 640x640).
  4. Descargue el conjunto de datos e intégrelo en su script de entrenamiento YOLOv5 .

¿Cuáles son las opciones de licencia para utilizar YOLOv5 en aplicaciones comerciales?

Ultralytics ofrece dos opciones de licencia:

  • AGPL-3.0 Licencia: Una licencia de código abierto apta para uso no comercial, ideal para estudiantes y aficionados.
  • Licencia para empresas: Diseñada para empresas que desean integrar YOLOv5 en productos y servicios comerciales. Para obtener información detallada, visite nuestra página de licencias.

Para más detalles, consulte nuestra guía sobre licenciasUltralytics .

Creado hace 1 año ✏️ Actualizado hace 5 días

Comentarios