YOLO Vision 2026:

Entrena YOLOv5 con datos personalizados#

📚 Esta guía explica cómo entrenar tu propio conjunto de datos personalizado utilizando el modelo YOLOv5 🚀. El entrenamiento de modelos personalizados es un paso fundamental para adaptar las soluciones de visión artificial a aplicaciones específicas del mundo más allá de la detección de objetos genérica.

Antes de empezar#

Primero, asegúrate de tener configurado el entorno necesario. Clona el repositorio de YOLOv5 e instala las dependencias requeridas desde requirements.txt. Un entorno con Python>=3.8.0 y PyTorch>=1.8 es esencial. Los modelos y conjuntos de datos se descargan automáticamente de la última versión de YOLOv5 si no se encuentran localmente.

git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies

Entrenar con datos personalizados#

Diagrama del bucle de aprendizaje activo de Ultralytics

Desarrollar un modelo de detección de objetos personalizado es un proceso iterativo:

  1. Recopilar y organizar imágenes: Reúne imágenes relevantes para tu tarea específica. Los datos diversos y de alta calidad son cruciales. Consulta nuestra guía sobre Recopilación de datos y anotación.
  2. Etiqueta objetos: anota con precisión los objetos de interés dentro de tus imágenes.
  3. Entrenar un modelo: Utiliza los datos etiquetados para entrenar tu modelo YOLOv5. Aprovecha el aprendizaje por transferencia comenzando con pesos preentrenados.
  4. Desplegar y predecir: Utiliza el modelo entrenado para la inferencia en datos nuevos y no vistos.
  5. Recopilar casos límite: Identifica escenarios en los que el modelo funcione mal (casos límite) y añade datos similares a tu conjunto de datos para mejorar la solidez. Repite el ciclo.

Ultralytics Platform ofrece una solución optimizada y sin código para todo este ciclo de operaciones de aprendizaje automático (MLOps), incluida la gestión de conjuntos de datos, el entrenamiento de modelos y el despliegue.

Licencias

Ultralytics ofrece dos opciones de licencia para adaptarse a diversos escenarios de uso:

  • Licencia AGPL-3.0: Esta licencia de código abierto aprobada por la OSI es ideal para estudiantes, investigadores y entusiastas apasionados por la colaboración abierta y el intercambio de conocimientos. Requiere que las obras derivadas se compartan bajo la misma licencia. Consulta el archivo LICENSE para obtener todos los detalles.
  • Licencia Enterprise: Para uso en desarrollo y producción, esta licencia permite una integración fluida del software y los modelos de IA de Ultralytics en productos y servicios comerciales, incluidas herramientas internas, flujos de trabajo automatizados y despliegues en producción, eludiendo los requisitos de código abierto de AGPL-3.0. Para empezar, ponte en contacto con nosotros a través de Licenciamiento de Ultralytics.

Explora más a fondo nuestras opciones de licenciamiento en la página de Licenciamiento de Ultralytics.

Antes de iniciar el entrenamiento, la preparación del conjunto de datos es esencial.

Crea un conjunto de datos#

Los modelos YOLOv5 requieren datos etiquetados para aprender las características visuales de las clases de objetos. Organizar tu conjunto de datos correctamente es clave.

1.1 Crear dataset.yaml#

El archivo de configuración del conjunto de datos (por ejemplo, coco128.yaml) detalla la estructura del conjunto de datos, los nombres de las clases y las rutas a los directorios de imágenes. COCO128 sirve como un pequeño conjunto de datos de ejemplo, que comprende las primeras 128 imágenes del extenso conjunto de datos COCO. Es útil para probar rápidamente la tubería de entrenamiento y diagnosticar problemas potenciales como el sobreajuste.

La estructura del archivo dataset.yaml incluye:

  • path: El directorio raíz que contiene el conjunto de datos.
  • train, val, test: Rutas relativas desde path a los directorios que contienen imágenes o archivos de texto que enumeran las rutas de las imágenes para los conjuntos de entrenamiento, validación y prueba.
  • names: Un diccionario que mapea los índices de las clases (empezando desde 0) con sus nombres de clase correspondientes.

Puedes configurar path como un directorio absoluto (por ejemplo, /home/user/datasets/coco128) o como una ruta relativa como ../datasets/coco128 al iniciar el entrenamiento desde la raíz del repositorio de YOLOv5.

A continuación se muestra la estructura de coco128.yaml (ver en GitHub):

# Dataset root directory relative to the yolov5 directory
path: coco128

# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images

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

1.2 Aprovecha los modelos para el etiquetado automatizado#

El etiquetado manual es el enfoque habitual, pero consume mucho tiempo. Los modelos base pueden automatizar o semiautomatizar la anotación y acelerar la creación del conjunto de datos. Ejemplos de modelos que pueden ayudar a generar etiquetas:

  • Google Gemini: Los modelos multimodales grandes como Gemini poseen potentes capacidades de comprensión de imágenes. Se les puede pedir que identifiquen y ubiquen objetos dentro de las imágenes, generando cuadros delimitadores o descripciones que se pueden convertir en etiquetas con el formato YOLO. Explora su potencial en el cuaderno de tutorial proporcionado.
  • SAM2 (Segment Anything Model 2): Los modelos base centrados en la segmentación, como SAM2, pueden identificar y delinear objetos con gran precisión. Aunque están destinados principalmente a la segmentación, las máscaras resultantes a menudo se pueden convertir en anotaciones de cuadros delimitadores adecuadas para tareas de detección de objetos.
  • YOLOWorld: Este modelo ofrece capacidades de detección de vocabulario abierto. Puedes proporcionar descripciones de texto de los objetos que te interesan, y YOLOWorld puede localizarlos en las imágenes sin un entrenamiento previo en esas clases específicas. Esto se puede utilizar como punto de partida para generar etiquetas iniciales, que luego se pueden refinar.

El uso de estos modelos puede proporcionar un paso de «pre-etiquetado», reduciendo el esfuerzo manual requerido. Sin embargo, es fundamental revisar y refinar las etiquetas generadas automáticamente para garantizar la precisión y la consistencia, ya que la calidad afecta directamente al rendimiento de tu modelo YOLOv5 entrenado. Después de generar (y posiblemente refinar) tus etiquetas, asegúrate de que cumplan con el formato YOLO: un archivo *.txt por imagen, donde cada línea representa un objeto como class_index x_center y_center width height (coordenadas normalizadas, clase indexada desde cero). Si una imagen no tiene objetos de interés, no se necesita ningún archivo *.txt correspondiente.

Las especificaciones del archivo con el formato YOLO *.txt son precisas:

  • Una fila por cada cuadro delimitador de objeto.
  • Cada fila debe contener: class_index x_center y_center width height.
  • Las coordenadas deben estar normalizadas a un rango entre 0 y 1. Para lograr esto, divide los valores de píxeles de x_center y width por el ancho total de la imagen, y divide y_center y height por la altura total de la imagen.
  • Los índices de las clases están indexados desde cero (es decir, la primera clase está representada por 0, la segunda por 1, y así sucesivamente).

Example image with two persons and a tie annotated

El archivo de etiquetas correspondiente a la imagen anterior, que contiene dos objetos 'persona' (índice de clase 0) y un objeto 'corbata' (índice de clase 27), se vería así:

YOLO format label file content example

1.3 Organiza los directorios#

Estructura tu directorio de conjuntos de datos como se ilustra a continuación. De forma predeterminada, YOLOv5 anticipa que el directorio del conjunto de datos (por ejemplo, /coco128) resida dentro de una carpeta /datasets ubicada junto al directorio del repositorio /yolov5.

YOLOv5 localiza automáticamente las etiquetas de cada imagen sustituyendo la última instancia de /images/ en la ruta de la imagen por /labels/. Por ejemplo:

../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file

La estructura de directorios recomendada es:

/datasets/
└── coco128/  # Dataset root
    ├── images/
    │   ├── train2017/  # Training images
    │   │   ├── 000000000009.jpg
    │   │   └── ...
    │   └── val2017/    # Validation images (optional if using same set for train/val)
    │       └── ...
    └── labels/
        ├── train2017/  # Training labels
        │   ├── 000000000009.txt
        │   └── ...
        └── val2017/    # Validation labels (optional if using same set for train/val)
            └── ...

YOLOv5 recommended dataset directory structure

Selecciona un modelo#

Elige un modelo preentrenado para iniciar el proceso de entrenamiento. Comenzar con pesos preentrenados acelera significativamente el aprendizaje y mejora el rendimiento en comparación con entrenar desde cero. YOLOv5 ofrece varios tamaños de modelo, cada uno equilibrando la velocidad y la precisión de manera diferente. Por ejemplo, YOLOv5s es el segundo modelo más pequeño y rápido, adecuado para entornos con recursos limitados. Consulta la tabla del README para ver una comparación detallada de todos los modelos disponibles.

Comparison chart of YOLOv5 models showing size, speed, and accuracy

Entrena#

Comienza el entrenamiento del modelo utilizando el script train.py. Los argumentos esenciales incluyen:

  • --img: Define el tamaño de imagen de entrada (por ejemplo, --img 640). Los tamaños más grandes generalmente producen una mejor precisión, pero requieren más memoria de la GPU.
  • --batch: Determina el tamaño del lote (por ejemplo, --batch 16). Elige el tamaño más grande que tu GPU pueda manejar.
  • --epochs: Especifica el número total de épocas de entrenamiento (por ejemplo, --epochs 100). Una época representa un recorrido completo por todo el conjunto de datos de entrenamiento.
  • --data: Ruta a tu archivo dataset.yaml (por ejemplo, --data coco128.yaml).
  • --weights: Ruta al archivo de pesos iniciales. Se recomienda encarecidamente utilizar pesos preentrenados (por ejemplo, --weights yolov5s.pt) para una convergencia más rápida y resultados superiores. Para entrenar desde cero (no aconsejado a menos que tengas un conjunto de datos muy grande y necesidades específicas), utiliza --weights '' --cfg yolov5s.yaml.

Los pesos preentrenados se descargan automáticamente de la última versión de YOLOv5 si no se encuentran localmente.

# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
Optimiza la velocidad de entrenamiento

💡 Emplea --cache ram o --cache disk para almacenar en caché las imágenes del conjunto de datos en la RAM o en el disco local, respectivamente. Esto acelera drásticamente el entrenamiento, especialmente cuando las operaciones de E/S (Entrada/Salida) del conjunto de datos son un cuello de botella. Ten en cuenta que esto requiere una cantidad sustancial de RAM o espacio en disco.

Almacenamiento de datos local

💡 Entrena siempre utilizando conjuntos de datos almacenados localmente. El acceso a datos desde unidades de red (como Google Drive) o almacenamiento remoto puede ser significativamente más lento y dificultar el rendimiento del entrenamiento. Copiar tu conjunto de datos a un SSD local suele ser la mejor práctica.

Todos los resultados de entrenamiento, incluidos los pesos y los registros, se guardan en el directorio runs/train/. Cada sesión de entrenamiento crea un nuevo subdirectorio (por ejemplo, runs/train/exp, runs/train/exp2, etc.). Para una experiencia interactiva y práctica, explora la sección de entrenamiento en nuestros cuadernos de tutorial oficiales: Open In Colab Open In Kaggle

Visualiza#

YOLOv5 se integra perfectamente con varias herramientas para visualizar el progreso del entrenamiento, evaluar resultados y monitorear el rendimiento en tiempo real.

Registro y visualización con Comet#

Comet está totalmente integrado para un seguimiento completo de los experimentos. Visualiza métricas en directo, guarda hiperparámetros, gestiona conjuntos de datos y puntos de control de modelos, y analiza las predicciones del modelo utilizando los Paneles Personalizados de Comet interactivos.

Empezar es sencillo:

pip install comet_ml                                                          # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE                                        # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!

Profundiza en las características compatibles en nuestra Guía de integración de Comet. Obtén más información sobre las capacidades de Comet en su documentación oficial. Prueba el cuaderno de Colab de Comet para ver una demostración en directo: Open In Colab

Comet UI showing YOLOv5 training metrics and visualizations

Registro y automatización con ClearML#

La integración de ClearML permite un seguimiento detallado de los experimentos, la gestión de versiones de conjuntos de datos e incluso la ejecución remota de ejecuciones de entrenamiento. Activa ClearML con estos sencillos pasos:

  • Instala el paquete: pip install clearml
  • Inicializa ClearML: Ejecuta clearml-init una vez para conectarte a tu servidor de ClearML (ya sea autohospedado o en el nivel gratuito).

ClearML captura automáticamente los detalles de los experimentos, las subidas de modelos, las comparaciones, los cambios de código no confirmados y los paquetes instalados, garantizando una total reproducibilidad. Puedes programar fácilmente tareas de entrenamiento en agentes remotos y gestionar versiones de conjuntos de datos utilizando ClearML Data. Explora la Guía de integración de ClearML para obtener detalles completos.

ClearML experiment management UI for YOLOv5

Registro local#

Los resultados del entrenamiento se registran automáticamente utilizando TensorBoard y se guardan como archivos CSV dentro del directorio de experimentos específico (por ejemplo, runs/train/exp). Los datos registrados incluyen:

  • Métricas de pérdida y rendimiento de entrenamiento y validación.
  • Imágenes de muestra que muestran las aumentaciones aplicadas (como mosaicos).
  • Etiquetas de verdad fundamental junto con las predicciones del modelo para su inspección visual.
  • Métricas clave de evaluación como las curvas de Precisión-Exhaustividad (PR).
  • Matrices de confusión para un análisis detallado del rendimiento por clase.
YOLOv5 local logging results with charts and mosaics

El archivo results.csv se actualiza después de cada época y se grafica como results.png una vez que concluye el entrenamiento. También puedes graficar cualquier archivo results.csv manualmente utilizando la función de utilidad proporcionada:

from utils.plots import plot_results

# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv")  # This will generate 'results.png' in the same directory

YOLOv5 results.png training metrics plot

Pasos siguientes#

Una vez finalizado con éxito el entrenamiento, el punto de control del modelo con mejor rendimiento (best.pt) se guarda y está listo para su despliegue o refinamiento adicional. Los posibles pasos siguientes incluyen:

Entornos admitidos#

Ultralytics proporciona entornos listos para usar equipados con dependencias esenciales como CUDA, cuDNN, Python y PyTorch, lo que facilita un inicio sin contratiempos.

Estado del proyecto#

Insignia de estado de integración continua de YOLOv5

Este distintivo indica que todas las pruebas de Continuous Integration (CI) de GitHub Actions de YOLOv5 se están superando con éxito. Estas rigurosas pruebas de CI cubren las funcionalidades principales, incluyendo el entrenamiento, la validación, la inferencia, la exportación y los rendimientos de referencia, en los sistemas operativos macOS, Windows y Ubuntu. Las pruebas se ejecutan automáticamente cada 24 horas y en cada confirmación de código, lo que garantiza una estabilidad constante y un rendimiento óptimo.

FAQ#

  • Entrenar YOLOv5 con un conjunto de datos personalizado implica varios pasos clave:

    1. Prepara tu conjunto de datos: Recopila imágenes y anótalas. Asegúrate de que las anotaciones estén en el formato YOLO requerido. Organiza las imágenes y las etiquetas en los directorios train/ y val/ (y opcionalmente test/). Considera el uso de modelos como Google Gemini, SAM2 o YOLOWorld para ayudar en el proceso de etiquetado o automatizarlo (consulta la Sección 1.2).
    2. Configura tu entorno: Clona el repositorio de YOLOv5 e instala las dependencias utilizando pip install -r requirements.txt.
      git clone https://github.com/ultralytics/yolov5
      cd yolov5
      pip install -r requirements.txt
    3. Crea la configuración del conjunto de datos: Define las rutas del conjunto de datos, el número de clases y los nombres de las clases en un archivo dataset.yaml.
    4. Inicia el entrenamiento: Ejecuta el script train.py, proporcionando las rutas a tu dataset.yaml, los pesos preentrenados deseados (por ejemplo, yolov5s.pt), el tamaño de la imagen, el tamaño del lote y el número de épocas.
      python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
  • Ultralytics Platform es una plataforma integral diseñada para optimizar todo el ciclo de vida de desarrollo del modelo YOLO, a menudo sin necesidad de escribir código. Los beneficios clave incluyen:

    • Entrenamiento simplificado: Entrena modelos fácilmente usando entornos preconfigurados y una interfaz de usuario intuitiva.
    • Gestión de datos integrada: Sube, controla las versiones y gestiona tus conjuntos de datos de forma eficiente dentro de la plataforma.
    • Monitoreo en tiempo real: Rastrea el progreso del entrenamiento y visualiza las métricas de rendimiento utilizando herramientas integradas como Comet o TensorBoard.
    • Funciones de colaboración: Facilita el trabajo en equipo a través de recursos compartidos, herramientas de gestión de proyectos y un sencillo uso compartido de modelos.
    • Implementación sin código: Implementa modelos entrenados directamente en diversos destinos.

    Para una guía práctica, consulta nuestra publicación de blog: How to Train Your Custom Models with Ultralytics Platform.

  • Ya sea que anotes manualmente o utilices herramientas automatizadas (como las mencionadas en la Sección 1.2), las etiquetas finales deben estar en el formato YOLO específico requerido por YOLOv5:

    • Crea un archivo .txt para cada imagen. El nombre del archivo debe coincidir con el nombre de archivo de la imagen (por ejemplo, image1.jpg corresponde a image1.txt). Coloca estos archivos en un directorio labels/ paralelo a tu directorio images/ (por ejemplo, ../datasets/mydataset/labels/train/).
    • Cada línea dentro de un archivo .txt representa una anotación de objeto y sigue el formato: class_index center_x center_y width height.
    • Las coordenadas (center_x, center_y, width, height) deben estar normalizadas (valores entre 0.0 y 1.0) en relación con las dimensiones de la imagen.
    • Los índices de las clases están basados en cero (la primera clase es 0, la segunda es 1, etc.).

    Muchas herramientas de anotación manual ofrecen exportación directa al formato YOLO. Si utilizas modelos automatizados, necesitarás scripts o procesos para convertir su salida (por ejemplo, coordenadas de cuadros delimitadores, máscaras de segmentación) a este formato de texto normalizado específico. Asegúrate de que la estructura de tu conjunto de datos final cumpla con el ejemplo proporcionado en la guía. Para obtener más detalles, consulta nuestra Guía de recopilación y anotación de datos.

  • Ultralytics ofrece licencias flexibles adaptadas a diferentes necesidades:

    • Licencia AGPL-3.0: Esta licencia de código abierto es adecuada para la investigación académica, proyectos personales y situaciones en las que el cumplimiento del código abierto es aceptable. Exige que las modificaciones y las obras derivadas también se abran bajo la licencia AGPL-3.0. Revisa los detalles de la Licencia AGPL-3.0.
    • Licencia Enterprise: Una licencia comercial diseñada para empresas que integran YOLOv5 en productos o servicios propietarios. Esta licencia elimina las obligaciones de código abierto de AGPL-3.0, permitiendo la distribución de código cerrado. Visita nuestra página de Licenciamiento para obtener más detalles o solicitar una Licencia Enterprise.

    Selecciona la licencia que mejor se alinee con los requisitos y el modelo de distribución de tu proyecto.

Comentarios