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
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:
- La LicenciaAGPL-3.0 , una licencia de código abierto aprobada por la OSI, ideal para estudiantes y entusiastas.
- La Licencia Enterprise para empresas que deseen incorporar nuestros modelos de IA a sus productos y servicios.
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.
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:
- 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 YOLOv5 Pytorch
y, a continuación, copia el fragmento en tu guión de entrenamiento o cuaderno para descargar tu 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 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
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
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
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:
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.
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.
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.
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 :
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.
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 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.
Archivo de resultados results.csv
se actualiza después de cada épocay 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'
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
- Valida la precisión en las divisiones de entrenamiento, val y prueba
- Exporta a TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML y TensorRT formatos
- 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, CUDNNPythony PyTorchpara poner en marcha tus proyectos.
- Cuadernos gratuitos GPU:
- Google La 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) 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.
PREGUNTAS FRECUENTES
¿Cómo entreno YOLOv5 en mi conjunto de datos personalizado?
Entrenar YOLOv5 en un conjunto de datos personalizado implica varios pasos:
- Prepara tu conjunto de datos: Recoge y etiqueta las imágenes. Utiliza herramientas como Roboflow para organizar los datos y exportarlos en formatoYOLOv5 .
- Configurar el entorno: Clona el repositorio YOLOv5 e instala las dependencias:
- Crear configuración del conjunto de datos: Escribe un
dataset.yaml
que define las rutas tren/val y los nombres de las clases. - Entrenar al modelo:
¿Qué herramientas puedo utilizar para anotar mi conjunto de datos YOLOv5 ?
Puedes utilizar Roboflow Annotate, una intuitiva herramienta web para etiquetar imágenes. Admite la colaboración en equipo y exporta en formato YOLOv5 . Tras recopilar las imágenes, utiliza 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 entrenar a mis modelos YOLO ?
Ultralytics HUB ofrece una plataforma integral para formar, desplegar y gestionar modelos YOLO sin necesidad de grandes conocimientos de codificación. Las ventajas de utilizar Ultralytics HUB incluyen:
- Fácil entrenamiento de modelos: Simplifica el proceso de entrenamiento con entornos preconfigurados.
- Gestión de datos: Gestiona sin esfuerzo los conjuntos de datos y el control de versiones.
- Monitorización en tiempo real: Integra herramientas como Comet para el seguimiento y visualización de métricas en tiempo real.
- Colaboración: Ideal para proyectos en equipo con recursos compartidos y fácil gestión.
¿Cómo convierto mis datos anotados al formato YOLOv5 ?
Para convertir datos anotados al formato YOLOv5 utilizando Roboflow:
- Sube tu conjunto de datos a un espacio de trabajo Roboflow .
- Etiqueta las imágenes si no están ya etiquetadas.
- Generar y exportar el conjunto de datos en
YOLOv5 Pytorch
formato. Asegúrate de que se aplican pasos de preprocesado como Orientación automática y Redimensionar (Estirar) al tamaño de entrada cuadrado (por ejemplo, 640x640). - Descarga el Conjunto de datos e intégralo en tu guión 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 de empresa: Adaptada a las empresas que desean integrar YOLOv5 en productos y servicios comerciales. Para obtener información detallada, visita nuestra página de Licencias.
Para más detalles, consulta nuestra guía sobre LicenciasUltralytics .