SO Development

Cómo entrenar tus modelos de IA con Yolo

Entrenar un modelo de aprendizaje profundo para la detección de objetos requiere una combinación de herramientas eficientes, conjuntos de datos robustos y un buen conocimiento de los hiperparámetros. La serie YOLO (You Only Look Once) de Ultralytics se ha consolidado como una de las favoritas de la comunidad de aprendizaje automático, ofreciendo un enfoque simplificado para las tareas de detección de objetos.

Este blog sirve como una guía completa para entrenar modelos YOLO con Ultralytics, profundizando en sus funcionalidades, características y casos de uso.

Introducción al entrenamiento del modelo YOLO

Los modelos YOLO han revolucionado la detección de objetos en tiempo real gracias a su velocidad y precisión. A diferencia de los métodos tradicionales, que requieren múltiples etapas para detectar y clasificar objetos, YOLO realiza ambas tareas en una sola pasada. Esto lo convierte en una innovación para aplicaciones que exigen detección de objetos a alta velocidad, como vehículos autónomos, sistemas de vigilancia y realidad aumentada.

Las últimas iteraciones, incluyendo Ultralytics YOLOv11, están optimizadas para ofrecer versatilidad y eficiencia. Estos modelos incorporan funciones avanzadas, como detección multiescala y técnicas de aumento mejoradas, lo que permite un rendimiento superior en diversos conjuntos de datos y tareas. Tanto si eres un científico de datos experimentado como si eres un principiante que busca entrenar su primer modelo, el modo de entrenamiento de YOLO está diseñado para satisfacer tus necesidades.

El entrenamiento implica alimentar el modelo con conjuntos de datos anotados y optimizar los parámetros para mejorar el rendimiento. Con Ultralytics YOLO, puede entrenar con una variedad de conjuntos de datos, desde los más comunes como COCO e ImageNet hasta conjuntos de datos personalizados adaptados a aplicaciones específicas.

Los beneficios clave del modo de entrenamiento de YOLO incluyen:
  • Alta eficiencia: Utilización perfecta de la GPU, ya sea en configuraciones de una o varias GPU.
  • Flexibilidad: Entrena con hiperparámetros adaptados a tu conjunto de datos y objetivos.
  • Facilidad de uso: Las CLI intuitivas y las API de Python simplifican el flujo de trabajo de capacitación.

Al aprovechar estos beneficios, los usuarios pueden construir modelos capaces de detectar y clasificar objetos con una velocidad y precisión notables.

Miniatura de YOLO11

Características principales del modo de entrenamiento YOLO

El modo de entrenamiento de Ultralytics YOLO viene repleto de funciones que agilizan el proceso de entrenamiento:

1. Conjunto de datos automático
Gestión YOLO puede descargar y configurar automáticamente conjuntos de datos populares como COCO, VOC e ImageNet al primer uso. Esto elimina la complejidad de la configuración manual.

2. Compatibilidad con múltiples GPU
Aproveche la potencia de múltiples GPU para acelerar el entrenamiento. Simplemente especifique los ID de GPU para distribuir la carga de trabajo eficientemente.

3. Configuración de hiperparámetros
Optimice el rendimiento con una amplia gama de hiperparámetros personalizables, como la tasa de aprendizaje, el momentum y la disminución del peso. Estos parámetros se pueden ajustar mediante archivos YAML o comandos CLI.

4. Monitoreo en tiempo real
Visualice métricas de entrenamiento, funciones de pérdida y otros indicadores de rendimiento en tiempo real. Esto permite comprender mejor el proceso de aprendizaje del modelo.

5. Silicona de Apple
Optimización Ultralytics YOLO admite la capacitación en dispositivos de silicio de Apple (por ejemplo, chips M1, M2) a través del marco Metal Performance Shaders (MPS), lo que garantiza la eficiencia en diversas plataformas de hardware.

6. Reanudar el entrenamiento
Las sesiones de entrenamiento interrumpidas se pueden reanudar sin problemas, cargando pesos anteriores, estados del optimizador y números de época. Esta función es especialmente útil para ejecuciones de entrenamiento largas o cuando los experimentos requieren actualizaciones incrementales.

Preparación para la formación del modelo YOLO

Un entrenamiento de modelos exitoso comienza con una preparación adecuada. A continuación, se detallan los pasos para configurar su entorno YOLO:
1. Instalación de YOLO:
Comience instalando el paquete Ultralytics YOLO. Se recomienda usar un entorno virtual para evitar conflictos con otras bibliotecas. La instalación se puede realizar mediante pip:

pip install ultralytics

Después de la instalación, asegúrese de que las dependencias, como PyTorch, estén configuradas correctamente.

2. Preparación del conjunto de datos:
La calidad y la estructura de su conjunto de datos son fundamentales para el entrenamiento. YOLO admite conjuntos de datos estándar como COCO y conjuntos de datos personalizados. En el caso de los conjuntos de datos personalizados, asegúrese de que las anotaciones estén en formato YOLO, especificando las coordenadas del cuadro delimitador y las etiquetas de clase correspondientes. Herramientas como LabelImg pueden ayudar a crear anotaciones.

3. Configuración de hardware:
El entrenamiento de YOLO puede consumir muchos recursos. Si bien es compatible con CPU, el entrenamiento con GPU o chips de silicio de Apple acelera significativamente el proceso. Asegúrese de que su hardware esté configurado con los controladores necesarios, como CUDA para GPU NVIDIA o Metal para dispositivos macOS.

terminal

Ejemplos de uso para el entrenamiento YOLO

Los ejemplos prácticos ayudan a conectar la teoría con la práctica. Así es como puedes usar YOLO en diferentes escenarios de formación:

Ejemplo de entrenamiento básico
Entrene un modelo YOLOv11 en el conjunto de datos COCO8 para 100 épocas con un tamaño de imagen de 640:

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo11n.pt")

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Como alternativa, utilice la CLI para una operación rápida mediante la línea de comandos:

yolo train data=coco8.yaml epochs=100 imgsz=640
Entrenamiento Multi-GPU

Para configuraciones con varias GPU, especifique los dispositivos para distribuir la carga de trabajo. Esto es ideal para entrenar con grandes conjuntos de datos:

from ultralytics import YOLO

# Load the model
model = YOLO("yolo11n.pt")

# Train with two GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
Capacitación sobre Apple Silicon

Con la creciente popularidad de los dispositivos macOS, YOLO permite el entrenamiento en chips de silicio de Apple mediante MPS. Aquí tienes un ejemplo:

from ultralytics import YOLO

# Load the model
model = YOLO("yolo11n.pt")

# Train with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")
Reanudar la formación interrumpida

Cuando se interrumpe el entrenamiento, puedes reanudarlo usando un punto de control guardado. Esto ahorra recursos y evita tener que empezar desde cero.

from ultralytics import YOLO

# Load the partially trained model
model = YOLO("path/to/last.pt")

# Resume training
results = model.train(resume=True)
Tareas de YOLOv8

Proyecto completo: Ejemplo de capacitación YOLO de extremo a extremo

Para ilustrar el proceso de entrenamiento de un modelo YOLO, analicemos un proyecto de principio a fin:

1. Descripción general del proyecto

En este proyecto, entrenaremos un modelo YOLO para detectar vehículos en imágenes de tráfico. El conjunto de datos consta de imágenes anotadas con cuadros delimitadores para coches, camiones y motocicletas.

2. Flujo de trabajo paso a paso
  1. Preparación del conjunto de datos:

    • Descargue el conjunto de datos que contiene imágenes de tráfico.
    • Utilice herramientas de anotación como LabelImg para etiquetar objetos en las imágenes y guardar las etiquetas en formato YOLO.
    • Organice el conjunto de datos en train, valy el ámbito test directorios.

    Ejemplo de estructura de directorio:

dataset/
├── train/
│   ├── images/
│   ├── labels/
├── val/
│   ├── images/
│   ├── labels/
├── test/
│   ├── images/
│   ├── labels/

2. Configuración del entorno:

  • Instalar YOLO usando pip:
pip install ultralytics
  • Verifique que la aceleración de GPU o MPS esté configurada correctamente.

3. Configuración del modelo:

    • Elija una arquitectura de modelo YOLO, como yolo11n.yaml para un modelo ligero o yolo11x.yaml para un modelo más robusto.
    • Cree un archivo de configuración de conjunto de datos personalizado (por ejemplo, traffic.yaml):
train: dataset/train/images
val: dataset/val/images
nc: 3
names: ['car', 'truck', 'motorcycle']

4. Formación:Entrene el modelo YOLO utilizando el siguiente script de Python:

from ultralytics import YOLO
model = YOLO("yolo11n.yaml")

# Train the modelfrom ultralytics import YOLO

# Load a pretrained model
results = model.train(data="traffic.yaml", epochs=50, imgsz=640, batch=16)

Alternativamente, utilice la CLI:

yolo train data=traffic.yaml epochs=50 imgsz=640 batch=16

5 Validación:Evalúa el rendimiento del modelo en el conjunto de validación:

metrics = model.val()
print(metrics)

6. Inferencia:Ejecute inferencias en imágenes de prueba para visualizar los resultados:

results = model.predict(source="dataset/test/images")
results.save()

Esto guardará las imágenes de salida con cuadros delimitadores en el runs/predict directorio.

7. Registro y monitoreo:Utilice TensorBoard o Comet para registrar métricas y visualizar resultados:

tensorboard --logdir runs

8. Exportación de modelos:Exportar el modelo entrenado para su implementación:

model.export(format="onnx")

El modelo exportado se puede utilizar para su implementación en aplicaciones como servidores web o dispositivos móviles.

Resultados
Al finalizar el proceso de entrenamiento, el modelo debería ser capaz de detectar vehículos con precisión en imágenes de tráfico. Utilice las métricas de validación (p. ej., mAP) para evaluar su rendimiento.

Detección de objetos

Configuración de entrenamiento avanzado

Los modelos YOLO ofrecen una amplia gama de configuraciones ajustables para un ajuste fino:

ArgumentoTipoPredeterminadoDescripción
modelostrNingunoEspecifica el archivo del modelo para entrenamiento (.pt o .yaml).
enstrNingunoRuta al archivo de configuración del conjunto de datos (por ejemplo, coco8.yaml).
épocasint100Número total de épocas de entrenamiento.
loteint16Tamaño del lote: fijo, automático (60 % de memoria de GPU) o fracción personalizada.
imágenesint/lista640Tamaño de imagen objetivo para el entrenamiento.
guarde boolCiertoPermite guardar puntos de control de entrenamiento y pesos finales del modelo.
de dispositivosint/str/listaNingunoDispositivo(s) computacional(es) para entrenamiento (por ejemplo, ID de GPU, 'cpu', 'mps').
optimizadorstr'auto'Elección del optimizador: SGD, Adam, AdamW, etc.
preentrenadobool/cadenaCiertoComience el entrenamiento desde un modelo previamente entrenado (ruta booleana o modelo).
lr0flotar0.01Tasa de aprendizaje inicial.
momentumflotar0.937Factor de impulso para optimizadores.
peso_decayflotar0.0005Término de regularización L2 para evitar el sobreajuste.

Configuración de aumento e hiperparámetros

Las técnicas de aumento son fundamentales para mejorar la generalización de los modelos al introducir variabilidad en los datos de entrenamiento. A continuación, se presenta un resumen detallado de los argumentos de aumento que YOLO admite:

ArgumentoTipoPredeterminadoAutonomíaDescripción
hsv_hflotar0.0150.0 – 1.0 Ajusta el tono de la imagen para la variabilidad del color.
virus de la hepatitis Cflotar0.70.0 – 1.0 Altera la saturación para la simulación ambiental.
hsv_vflotar0.40.0 – 1.0 Modifica el brillo según las condiciones de iluminación.
gradosflotar0.0-180 - 180Gira las imágenes para mejorar la robustez de la orientación.
la traducciónflotar0.10.0 – 1.0 Traduce imágenes para detectar objetos parciales.
escalaflotar0.5> = 0.0Escala imágenes para la variabilidad del tamaño de los objetos.
mosaicoflotar1.00.0 – 1.0 Combina múltiples imágenes para lograr complejidad en la escena.
confusiónflotar0.00.0 – 1.0 Combina imágenes para generalizar mejor.
flipudflotar0.00.0 – 1.0 Voltea las imágenes al revés para mayor variabilidad.
fliplrflotar0.50.0 – 1.0 Voltea las imágenes de izquierda a derecha para aprender simetría.

Experimentar con estas mejoras puede conducir a mejoras significativas en la robustez del modelo, especialmente en escenarios del mundo real con diversas condiciones ambientales.

Registro y Monitoreo

Para realizar un seguimiento eficaz de tu progreso de entrenamiento, YOLO se integra con las plataformas de registro más populares:

  • Cometa: Supervise métricas en tiempo real, visualice hiperparámetros y compare experimentos.
  • ClearML: Gestione experimentos, comparta recursos y garantice la reproducibilidad en entornos de equipo.
  • TensorTablero: Genere gráficos interactivos, incluidas curvas de pérdida, tendencias de precisión y visualizaciones de predicciones.

Configurar el registro es sencillo. Por ejemplo, puedes inicializar TensorBoard con el siguiente comando CLI:

tensorboard --logdir runs

Al aprovechar estas herramientas, los usuarios pueden obtener información útil sobre sus procesos de capacitación, identificar cuellos de botella y perfeccionar sus modelos.

Conclusión

Ultralytics YOLO simplifica la complejidad del entrenamiento de modelos de aprendizaje profundo, ofreciendo potentes opciones de personalización. Con funciones como compatibilidad con múltiples GPU, monitorización en tiempo real y reanudación fluida, es una herramienta invaluable tanto para desarrolladores como para investigadores.

Ya sea que esté construyendo un sistema robusto de detección de objetos o experimentando con conjuntos de datos personalizados, YOLO le ofrece la escalabilidad y flexibilidad necesarias para alcanzar sus objetivos. ¡Comience su capacitación hoy mismo y experimente las capacidades de YOLO de primera mano!

Visite nuestro servicio de anotación de datos


Esto cerrará en 20 segundos