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
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:
- La licenciaAGPL-3.0 , una licencia de código abierto aprobada por la OSI ideal para estudiantes y aficionados.
- La licencia Enterprise para empresas que deseen incorporar nuestros modelos de IA a sus productos y servicios.
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.
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:
- 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.
Exportar en YOLOv5 Pytorch
y, a continuación, copie el fragmento en su script de entrenamiento o cuaderno para descargar su 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
ywidth
por ancho de imagen, yy_center
yheight
por la altura de la imagen. - Los números de clase tienen índice cero (empiezan por 0).
El archivo de etiquetas correspondiente a la imagen anterior contiene 2 personas (clase 0
) y un empate (clase 27
):
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:
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.
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.
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.
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 :
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 .
Registro local
Los resultados del entrenamiento se registran automáticamente con Tensorboard y CSV registradores para runs/train
con un nuevo directorio de experimentos creado para cada nuevo entrenamiento como runs/train/exp2
, runs/train/exp3
etc.
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.
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'
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.
- Cuadernos gratuitos GPU:
- Google Nube: Guía de inicio rápido de GCP
- Amazon: Guía de inicio rápido de AWS
- Azure: Guía de inicio rápido de AzureML
- Docker: Guía de inicio rápido de Docker
Estado del proyecto
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:
- Prepare su conjunto de datos: Recopile y etiquete las imágenes. Utilice herramientas como Roboflow para organizar los datos y exportarlos en formatoYOLOv5 .
- Configuración del entorno: Clona el repositorio YOLOv5 e instala las dependencias:
- Crear configuración de conjunto de datos: Escribe un
dataset.yaml
que define las rutas tren/val y los nombres de las clases. - Entrenar el modelo:
¿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:
- Cargue su conjunto de datos en un espacio de trabajo Roboflow .
- Etiquetar las imágenes si no están ya etiquetadas.
- 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). - 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 .