Entrenamiento de Modelos con Ultralytics YOLO
Introducción
El entrenamiento de un modelo de aprendizaje profundo implica alimentarlo con datos y ajustar sus parámetros para que pueda hacer predicciones precisas. El modo Train en Ultralytics YOLO11 está diseñado para un entrenamiento eficaz y eficiente de modelos de detección de objetos, utilizando al máximo las capacidades del hardware moderno. Esta guía tiene como objetivo cubrir todos los detalles que necesitas para empezar a entrenar tus propios modelos utilizando el sólido conjunto de características de YOLO11.
Ver: Cómo entrenar un modelo YOLO en tu conjunto de datos personalizado en Google Colab.
¿Por qué elegir Ultralytics YOLO para el entrenamiento?
Aquí hay algunas razones convincentes para optar por el modo Train de YOLO11:
- Eficiencia: Aprovecha al máximo tu hardware, ya sea que estés en una configuración de una sola GPU o escalando a través de múltiples GPUs.
- Versatilidad: Entrena en conjuntos de datos personalizados además de los disponibles como COCO, VOC e ImageNet.
- Fácil de usar: Interfaces sencillas pero potentes de CLI y python para una experiencia de entrenamiento directa.
- Flexibilidad de hiperparámetros: Una amplia gama de hiperparámetros personalizables para ajustar el rendimiento del modelo.
Características clave del modo Train
Las siguientes son algunas características notables del modo Train de YOLO11:
- Descarga automática de conjuntos de datos: Los conjuntos de datos estándar como COCO, VOC e ImageNet se descargan automáticamente en el primer uso.
- Soporte Multi-GPU: Escale sus esfuerzos de entrenamiento sin problemas a través de múltiples GPU para acelerar el proceso.
- Configuración de hiperparámetros: La opción de modificar los hiperparámetros a través de archivos de configuración YAML o argumentos de la CLI.
- Visualización y monitorización: Seguimiento en tiempo real de las métricas de entrenamiento y visualización del proceso de aprendizaje para obtener mejores perspectivas.
Consejo
- Los conjuntos de datos de YOLO11 como COCO, VOC, ImageNet y muchos otros se descargan automáticamente en el primer uso, es decir,
yolo train data=coco.yaml
Ejemplos de uso
Entrena YOLO11n en el conjunto de datos COCO8 para 100 épocas con un tamaño de imagen de 640. El dispositivo de entrenamiento se puede especificar utilizando el device
argumento. Si no se pasa ningún argumento, se utilizará la GPU device=0
si está disponible, de lo contrario device='cpu'
se utilizará la CPU. Consulte la sección Argumentos a continuación para obtener una lista completa de los argumentos de entrenamiento.
Error de multiprocesamiento de Windows
En Windows, puede recibir un RuntimeError
al iniciar el entrenamiento como un script. Añada un if __name__ == "__main__":
bloquea antes de tu código de entrenamiento para resolverlo.
Ejemplo de entrenamiento con una sola GPU y CPU
El dispositivo se determina automáticamente. Si hay una GPU disponible, se utilizará (dispositivo CUDA 0 predeterminado); de lo contrario, el entrenamiento comenzará en la CPU.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.yaml") # build a new model from YAML
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo11n.yaml").load("yolo11n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo detect train data=coco8.yaml model=yolo11n.yaml pretrained=yolo11n.pt epochs=100 imgsz=640
Entrenamiento Multi-GPU
El entrenamiento Multi-GPU permite una utilización más eficiente de los recursos de hardware disponibles al distribuir la carga de entrenamiento entre múltiples GPU. Esta característica está disponible a través de la API de python y la interfaz de línea de comandos. Para habilitar el entrenamiento Multi-GPU, especifique los IDs de los dispositivos GPU que desea utilizar.
Ejemplo de entrenamiento Multi-GPU
Para entrenar con 2 GPU, dispositivos CUDA 0 y 1, utilice los siguientes comandos. Amplíe a GPU adicionales según sea necesario.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
# Start training from a pretrained *.pt model using GPUs 0 and 1
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=0,1
# Use the two most idle GPUs
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=-1,-1
Entrenamiento con GPU Inactiva
El Entrenamiento con GPU Inactiva permite la selección automática de las GPU menos utilizadas en sistemas multi-GPU, optimizando el uso de recursos sin selección manual de GPU. Esta función identifica las GPU disponibles basándose en métricas de utilización y disponibilidad de VRAM.
Ejemplo de Entrenamiento con GPU Inactiva
Para seleccionar y utilizar automáticamente la(s) GPU(s) más inactiva(s) para el entrenamiento, utilice el -1
parámetro device. Esto es particularmente útil en entornos informáticos compartidos o servidores con múltiples usuarios.
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.pt") # load a pretrained model (recommended for training)
# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)
# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
# Start training using the single most idle GPU
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640 device=-1
# Start training using the two most idle GPUs
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640 device=-1,-1
El algoritmo de selección automática prioriza las GPU con:
- Porcentajes de utilización de corriente más bajos
- Mayor memoria disponible (VRAM libre)
- Menor temperatura y consumo de energía
Esta característica es especialmente valiosa en entornos informáticos compartidos o al ejecutar múltiples trabajos de entrenamiento en diferentes modelos. Se adapta automáticamente a las condiciones cambiantes del sistema, garantizando una asignación óptima de recursos sin intervención manual.
Entrenamiento MPS en Apple Silicon
Con el soporte para chips de silicio de Apple integrados en los modelos YOLO de Ultralytics, ahora es posible entrenar sus modelos en dispositivos que utilizan el potente marco Metal Performance Shaders (MPS). El MPS ofrece una forma de alto rendimiento de ejecutar tareas de computación y procesamiento de imágenes en el silicio personalizado de Apple.
Para habilitar el entrenamiento en chips de silicio de Apple, debe especificar 'mps' como su dispositivo al iniciar el proceso de entrenamiento. A continuación, se muestra un ejemplo de cómo podría hacer esto en python y a través de la línea de comandos:
Ejemplo de entrenamiento MPS
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")
# Start training from a pretrained *.pt model using MPS
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=mps
Al aprovechar la potencia computacional de los chips de silicio de Apple, esto permite un procesamiento más eficiente de las tareas de entrenamiento. Para obtener una guía más detallada y opciones de configuración avanzadas, consulte la documentación de PyTorch MPS.
Reanudación de Entrenamientos Interrumpidos
Reanudar el entrenamiento desde un estado guardado previamente es una característica crucial cuando se trabaja con modelos de aprendizaje profundo. Esto puede ser útil en varios escenarios, como cuando el proceso de entrenamiento se ha interrumpido inesperadamente, o cuando desea continuar entrenando un modelo con nuevos datos o para más épocas.
Cuando se reanuda el entrenamiento, Ultralytics YOLO carga los pesos del último modelo guardado y también restaura el estado del optimizador, el programador de tasa de aprendizaje y el número de época. Esto le permite continuar el proceso de entrenamiento sin problemas desde donde lo dejó.
Puede reanudar fácilmente el entrenamiento en Ultralytics YOLO configurando el resume
argumento en True
al llamar al train
método, y especificando la ruta al .pt
archivo que contiene los pesos del modelo parcialmente entrenado.
A continuación, se muestra un ejemplo de cómo reanudar un entrenamiento interrumpido usando python y a través de la línea de comandos:
Ejemplo de reanudación del entrenamiento
from ultralytics import YOLO
# Load a model
model = YOLO("path/to/last.pt") # load a partially trained model
# Resume training
results = model.train(resume=True)
# Resume an interrupted training
yolo train resume model=path/to/last.pt
Al establecer resume=True
, la train
función continuará el entrenamiento desde donde lo dejó, utilizando el estado almacenado en el archivo 'path/to/last.pt'. Si el resume
argumento se omite o se establece en False
, la train
la función iniciará una nueva sesión de entrenamiento.
Recuerde que los puntos de control se guardan al final de cada época de forma predeterminada, o a intervalos fijos utilizando el save_period
argumento, por lo que debe completar al menos 1 época para reanudar una ejecución de entrenamiento.
Ajustes de Entrenamiento
La configuración de entrenamiento para los modelos YOLO abarca varios hiperparámetros y configuraciones utilizados durante el proceso de entrenamiento. Estos ajustes influyen en el rendimiento, la velocidad y la precisión del modelo. Los ajustes clave de entrenamiento incluyen el tamaño del lote, la tasa de aprendizaje, el momento y la disminución del peso. Además, la elección del optimizador, la función de pérdida y la composición del conjunto de datos de entrenamiento pueden afectar el proceso de entrenamiento. La optimización y la experimentación cuidadosa con estos ajustes son cruciales para optimizar el rendimiento.
Argumento | Tipo | Predeterminado | Descripción |
---|---|---|---|
model |
str |
None |
Especifica el archivo del modelo para el entrenamiento. Acepta una ruta a un .pt modelo preentrenado o a un .yaml archivo de configuración. Esencial para definir la estructura del modelo o inicializar los pesos. |
data |
str |
None |
Ruta al archivo de configuración del conjunto de datos (p. ej., coco8.yaml ). Este archivo contiene parámetros específicos del conjunto de datos, incluyendo las rutas al entrenamiento y a los datos de validación, los nombres de las clases y el número de clases. |
epochs |
int |
100 |
Número total de épocas de entrenamiento. Cada época representa un pase completo sobre todo el conjunto de datos. El ajuste de este valor puede afectar la duración del entrenamiento y el rendimiento del modelo. |
time |
float |
None |
Tiempo máximo de entrenamiento en horas. Si se establece, esto anula el epochs argumento, que permite que el entrenamiento se detenga automáticamente tras la duración especificada. Útil para escenarios de entrenamiento con restricciones de tiempo. |
patience |
int |
100 |
Número de épocas que se esperan sin mejora en las métricas de validación antes de detener el entrenamiento anticipadamente. Ayuda a prevenir el sobreajuste deteniendo el entrenamiento cuando el rendimiento se estanca. |
batch |
int o float |
16 |
Tamaño del lote (Batch size), con tres modos: establecido como un entero (p. ej., batch=16 ), modo automático para el 60% de utilización de la memoria de la GPU (batch=-1 ), o modo automático con fracción de utilización especificada (batch=0.70 ). |
imgsz |
int o list |
640 |
Tamaño de imagen objetivo para el entrenamiento. Todas las imágenes se redimensionan a esta dimensión antes de ser introducidas en el modelo. Afecta a la precisión del modelo y a la complejidad computacional. |
save |
bool |
True |
Permite guardar los puntos de control del entrenamiento y los pesos finales del modelo. Útil para reanudar el entrenamiento o la implementación del modelo. |
save_period |
int |
-1 |
Frecuencia de guardado de los puntos de control del modelo, especificada en épocas. Un valor de -1 desactiva esta función. Útil para guardar modelos provisionales durante sesiones de entrenamiento largas. |
cache |
bool |
False |
Permite el almacenamiento en caché de las imágenes del conjunto de datos en la memoria (True /ram ), en el disco (disk ), o lo desactiva (False ). Mejora la velocidad de entrenamiento al reducir las operaciones de E/S en el disco a costa de un mayor uso de la memoria. |
device |
int o str o list |
None |
Especifica el(los) dispositivo(s) computacional(es) para el entrenamiento: una sola GPU (device=0 ), múltiples GPUs (device=[0,1] ), CPU (device=cpu ), MPS para Apple silicon (device=mps ), o la selección automática de la GPU más inactiva (device=-1 ) o varias GPU inactivas (device=[-1,-1] ) |
workers |
int |
8 |
Número de hilos de trabajo para la carga de datos (por RANK si se entrena con múltiples GPU). Influye en la velocidad del preprocesamiento de los datos y en la alimentación del modelo, especialmente útil en configuraciones con múltiples GPU. |
project |
str |
None |
Nombre del directorio del proyecto donde se guardan los resultados del entrenamiento. Permite un almacenamiento organizado de los diferentes experimentos. |
name |
str |
None |
Nombre de la ejecución del entrenamiento. Se utiliza para crear un subdirectorio dentro de la carpeta del proyecto, donde se almacenan los registros y las salidas del entrenamiento. |
exist_ok |
bool |
False |
Si es True, permite sobrescribir un directorio de proyecto/nombre existente. Útil para la experimentación iterativa sin necesidad de borrar manualmente las salidas anteriores. |
pretrained |
bool o str |
True |
Determina si se debe comenzar el entrenamiento a partir de un modelo preentrenado. Puede ser un valor booleano o una ruta de cadena a un modelo específico desde el cual cargar los pesos. Mejora la eficiencia del entrenamiento y el rendimiento del modelo. |
optimizer |
str |
'auto' |
Elección del optimizador para el entrenamiento. Las opciones incluyen SGD , Adam , AdamW , NAdam , RAdam , RMSProp etc., o auto para la selección automática basada en la configuración del modelo. Afecta la velocidad y la estabilidad de la convergencia. |
seed |
int |
0 |
Establece la semilla aleatoria para el entrenamiento, asegurando la reproducibilidad de los resultados en ejecuciones con las mismas configuraciones. |
deterministic |
bool |
True |
Fuerza el uso de algoritmos deterministas, asegurando la reproducibilidad, pero puede afectar el rendimiento y la velocidad debido a la restricción de algoritmos no deterministas. |
single_cls |
bool |
False |
Trata todas las clases en conjuntos de datos de múltiples clases como una sola clase durante el entrenamiento. Útil para tareas de clasificación binaria o cuando se enfoca en la presencia de objetos en lugar de la clasificación. |
classes |
list[int] |
None |
Especifica una lista de IDs de clase para entrenar. Útil para filtrar y centrarse solo en ciertas clases durante el entrenamiento. |
rect |
bool |
False |
Habilita el entrenamiento rectangular, optimizando la composición del lote para un relleno mínimo. Puede mejorar la eficiencia y la velocidad, pero puede afectar la precisión del modelo. |
multi_scale |
bool |
False |
Permite el entrenamiento a múltiples escalas aumentando/disminuyendo imgsz hasta un factor de 0.5 durante el entrenamiento. Entrena el modelo para que sea más preciso con múltiples imgsz durante la inferencia. |
cos_lr |
bool |
False |
Utiliza un programador de tasa de aprendizaje coseno, ajustando la tasa de aprendizaje siguiendo una curva coseno a lo largo de las épocas. Ayuda a administrar la tasa de aprendizaje para una mejor convergencia. |
close_mosaic |
int |
10 |
Desactiva el aumento de datos de mosaico en las últimas N épocas para estabilizar el entrenamiento antes de completarse. Establecer en 0 desactiva esta función. |
resume |
bool |
False |
Reanuda el entrenamiento desde el último punto de control guardado. Carga automáticamente los pesos del modelo, el estado del optimizador y el recuento de épocas, continuando el entrenamiento sin problemas. |
amp |
bool |
True |
Habilita el entrenamiento Automático de Precisión Mixta (AMP), reduciendo el uso de memoria y posiblemente acelerando el entrenamiento con un impacto mínimo en la precisión. |
fraction |
float |
1.0 |
Especifica la fracción del conjunto de datos que se utilizará para el entrenamiento. Permite el entrenamiento en un subconjunto del conjunto de datos completo, útil para experimentos o cuando los recursos son limitados. |
profile |
bool |
False |
Permite la creación de perfiles de velocidades de ONNX y TensorRT durante el entrenamiento, útil para optimizar la implementación del modelo. |
freeze |
int o list |
None |
Congela las primeras N capas del modelo o las capas especificadas por índice, reduciendo el número de parámetros entrenables. Útil para el ajuste fino o el aprendizaje por transferencia. |
lr0 |
float |
0.01 |
Tasa de aprendizaje inicial (es decir, SGD=1E-2 , Adam=1E-3 ). Ajustar este valor es crucial para el proceso de optimización, ya que influye en la rapidez con la que se actualizan los pesos del modelo. |
lrf |
float |
0.01 |
Tasa de aprendizaje final como una fracción de la tasa inicial = (lr0 * lrf ), utilizada junto con los programadores para ajustar la tasa de aprendizaje con el tiempo. |
momentum |
float |
0.937 |
Factor de momento para SGD o beta1 para optimizadores Adam, que influye en la incorporación de gradientes pasados en la actualización actual. |
weight_decay |
float |
0.0005 |
Término de regularización L2, que penaliza los pesos grandes para evitar el sobreajuste. |
warmup_epochs |
float |
3.0 |
Número de épocas para el calentamiento de la tasa de aprendizaje, aumentando gradualmente la tasa de aprendizaje desde un valor bajo hasta la tasa de aprendizaje inicial para estabilizar el entrenamiento al principio. |
warmup_momentum |
float |
0.8 |
Momento inicial para la fase de calentamiento, ajustándose gradualmente al momento establecido durante el período de calentamiento. |
warmup_bias_lr |
float |
0.1 |
Tasa de aprendizaje para los parámetros de sesgo durante la fase de calentamiento, lo que ayuda a estabilizar el entrenamiento del modelo en las épocas iniciales. |
box |
float |
7.5 |
Peso del componente de pérdida de la caja en la función de pérdida, que influye en la cantidad de énfasis que se pone en la predicción precisa de las coordenadas del cuadro delimitador. |
cls |
float |
0.5 |
Peso de la pérdida de clasificación en la función de pérdida total, que afecta la importancia de la predicción correcta de la clase en relación con otros componentes. |
dfl |
float |
1.5 |
Peso de la pérdida focal de distribución, utilizada en ciertas versiones de YOLO para la clasificación de grano fino. |
pose |
float |
12.0 |
Peso de la pérdida de pose en los modelos entrenados para la estimación de la pose, lo que influye en el énfasis en la predicción precisa de los puntos clave de la pose. |
kobj |
float |
2.0 |
Peso de la pérdida de objetividad de los puntos clave en los modelos de estimación de pose, equilibrando la confianza de la detección con la precisión de la pose. |
nbs |
int |
64 |
Tamaño de lote nominal para la normalización de la pérdida. |
overlap_mask |
bool |
True |
Determina si las máscaras de objeto deben fusionarse en una sola máscara para el entrenamiento, o mantenerse separadas para cada objeto. En caso de superposición, la máscara más pequeña se superpone a la máscara más grande durante la fusión. |
mask_ratio |
int |
4 |
Ratio de submuestreo para las máscaras de segmentación, que afecta la resolución de las máscaras utilizadas durante el entrenamiento. |
dropout |
float |
0.0 |
Tasa de dropout para la regularización en tareas de clasificación, previniendo el sobreajuste al omitir aleatoriamente unidades durante el entrenamiento. |
val |
bool |
True |
Habilita la validación durante el entrenamiento, permitiendo la evaluación periódica del rendimiento del modelo en un conjunto de datos separado. |
plots |
bool |
False |
Genera y guarda gráficos de las métricas de entrenamiento y validación, así como ejemplos de predicción, proporcionando información visual sobre el rendimiento del modelo y la progresión del aprendizaje. |
Nota sobre la configuración del tamaño de lote
El batch
El argumento puede configurarse de tres maneras:
- Tamaño de Lote Fijo: Establezca un valor entero (p. ej.,
batch=16
), especificando directamente el número de imágenes por lote. - Modo Automático (60% de Memoria de la GPU): Use
batch=-1
para ajustar automáticamente el tamaño del lote para una utilización de memoria CUDA de aproximadamente el 60%. - Modo Automático con Fracción de Utilización: Establezca un valor de fracción (p. ej.,
batch=0.70
) para ajustar el tamaño del lote en función de la fracción especificada de uso de la memoria de la GPU.
Ajustes de Aumento y Hiperparámetros
Las técnicas de aumento son esenciales para mejorar la robustez y el rendimiento de los modelos YOLO al introducir variabilidad en los datos de entrenamiento, lo que ayuda al modelo a generalizar mejor a datos no vistos. La siguiente tabla describe el propósito y el efecto de cada argumento de aumento:
Argumento | Tipo | Predeterminado | Rango | Descripción |
---|---|---|---|---|
hsv_h |
float |
0.015 |
0.0 - 1.0 |
Ajusta el tono de la imagen en una fracción de la rueda de colores, introduciendo variabilidad de color. Ayuda al modelo a generalizar en diferentes condiciones de iluminación. |
hsv_s |
float |
0.7 |
0.0 - 1.0 |
Altera la saturación de la imagen en una fracción, afectando la intensidad de los colores. Útil para simular diferentes condiciones ambientales. |
hsv_v |
float |
0.4 |
0.0 - 1.0 |
Modifica el valor (brillo) de la imagen en una fracción, ayudando al modelo a funcionar bien en diversas condiciones de iluminación. |
degrees |
float |
0.0 |
0.0 - 180 |
Rota la imagen aleatoriamente dentro del rango de grados especificado, mejorando la capacidad del modelo para reconocer objetos en varias orientaciones. |
translate |
float |
0.1 |
0.0 - 1.0 |
Traslada la imagen horizontal y verticalmente en una fracción del tamaño de la imagen, ayudando a aprender a detectar objetos parcialmente visibles. |
scale |
float |
0.5 |
>=0.0 |
Escala la imagen mediante un factor de ganancia, simulando objetos a diferentes distancias de la cámara. |
shear |
float |
0.0 |
-180 - +180 |
Cizalla la imagen según un grado especificado, imitando el efecto de objetos vistos desde diferentes ángulos. |
perspective |
float |
0.0 |
0.0 - 0.001 |
Aplica una transformación de perspectiva aleatoria a la imagen, mejorando la capacidad del modelo para comprender objetos en el espacio 3D. |
flipud |
float |
0.0 |
0.0 - 1.0 |
Invierte la imagen verticalmente con la probabilidad especificada, aumentando la variabilidad de los datos sin afectar las características del objeto. |
fliplr |
float |
0.5 |
0.0 - 1.0 |
Invierte la imagen de izquierda a derecha con la probabilidad especificada, útil para aprender objetos simétricos y aumentar la diversidad del conjunto de datos. |
bgr |
float |
0.0 |
0.0 - 1.0 |
Invierte los canales de la imagen de RGB a BGR con la probabilidad especificada, útil para aumentar la robustez ante un orden incorrecto de los canales. |
mosaic |
float |
1.0 |
0.0 - 1.0 |
Combina cuatro imágenes de entrenamiento en una, simulando diferentes composiciones de escena e interacciones de objetos. Altamente eficaz para la comprensión de escenas complejas. |
mixup |
float |
0.0 |
0.0 - 1.0 |
Mezcla dos imágenes y sus etiquetas, creando una imagen compuesta. Mejora la capacidad del modelo para generalizar al introducir ruido en las etiquetas y variabilidad visual. |
cutmix |
float |
0.0 |
0.0 - 1.0 |
Combina porciones de dos imágenes, creando una mezcla parcial mientras mantiene regiones distintas. Mejora la robustez del modelo al crear escenarios de oclusión. |
copy_paste |
float |
0.0 |
0.0 - 1.0 |
Solo segmentación. Copia y pega objetos a través de imágenes para aumentar las instancias de objetos. |
copy_paste_mode |
str |
flip |
- | Solo segmentación. Especifica el copy-paste estrategia a utilizar. Las opciones incluyen 'flip' y 'mixup' . |
auto_augment |
str |
randaugment |
- | Solo clasificación. Aplica una política de aumento predefinida ('randaugment' , 'autoaugment' , o 'augmix' ) para mejorar el rendimiento del modelo a través de la diversidad visual. |
erasing |
float |
0.4 |
0.0 - 0.9 |
Solo clasificación. Borra aleatoriamente regiones de la imagen durante el entrenamiento para animar al modelo a centrarse en características menos obvias. |
Estos ajustes se pueden modificar para satisfacer los requisitos específicos del conjunto de datos y la tarea en cuestión. Experimentar con diferentes valores puede ayudar a encontrar la estrategia de aumento óptima que conduzca al mejor rendimiento del modelo.
Información
Para obtener más información sobre las operaciones de aumento de entrenamiento, consulte la sección de referencia.
Registro
Al entrenar un modelo YOLO11, puede resultarle valioso realizar un seguimiento del rendimiento del modelo a lo largo del tiempo. Aquí es donde entra en juego el registro. Ultralytics YOLO proporciona soporte para tres tipos de registradores: Comet, ClearML y TensorBoard.
Para usar un registrador, selecciónelo en el menú desplegable del fragmento de código anterior y ejecútelo. El registrador elegido se instalará e inicializará.
Comet
Comet es una plataforma que permite a los científicos de datos y desarrolladores rastrear, comparar, explicar y optimizar experimentos y modelos. Proporciona funcionalidades como métricas en tiempo real, diferencias de código y seguimiento de hiperparámetros.
Para usar Comet:
Ejemplo
# pip install comet_ml
import comet_ml
comet_ml.init()
Recuerde iniciar sesión en su cuenta de Comet en su sitio web y obtener su clave API. Deberá agregar esto a sus variables de entorno o a su script para registrar sus experimentos.
ClearML
ClearML es una plataforma de código abierto que automatiza el seguimiento de experimentos y ayuda a compartir recursos de manera eficiente. Está diseñado para ayudar a los equipos a administrar, ejecutar y reproducir su trabajo de ML de manera más eficiente.
Para usar ClearML:
Ejemplo
# pip install clearml
import clearml
clearml.browser_login()
Después de ejecutar este script, deberá iniciar sesión en su cuenta de ClearML en el navegador y autenticar su sesión.
TensorBoard
TensorBoard es un conjunto de herramientas de visualización para TensorFlow. Le permite visualizar su gráfico de TensorFlow, trazar métricas cuantitativas sobre la ejecución de su gráfico y mostrar datos adicionales como imágenes que lo atraviesan.
Para usar TensorBoard en Google Colab:
Ejemplo
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory
Para usar TensorBoard localmente, ejecute el siguiente comando y vea los resultados en http://localhost:6006/
.
Ejemplo
tensorboard --logdir ultralytics/runs # replace with 'runs' directory
Esto cargará TensorBoard y lo dirigirá al directorio donde se guardan sus registros de entrenamiento.
Después de configurar su logger, puede proceder con el entrenamiento de su modelo. Todas las métricas de entrenamiento se registrarán automáticamente en la plataforma elegida, y puede acceder a estos registros para supervisar el rendimiento de su modelo a lo largo del tiempo, comparar diferentes modelos e identificar áreas de mejora.
Preguntas frecuentes
¿Cómo puedo entrenar un modelo de detección de objetos usando Ultralytics YOLO11?
Para entrenar un modelo de detección de objetos usando Ultralytics YOLO11, puede usar la API de python o la CLI. A continuación, se muestra un ejemplo para ambos:
Ejemplo de entrenamiento con una sola GPU y CPU
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
Para obtener más detalles, consulte la sección de Ajustes de Entrenamiento.
¿Cuáles son las características clave del modo Train de Ultralytics YOLO11?
Las características clave del modo Train de Ultralytics YOLO11 incluyen:
- Descarga Automática de Conjuntos de Datos: Descarga automáticamente conjuntos de datos estándar como COCO, VOC e ImageNet.
- Soporte Multi-GPU: Escala el entrenamiento a través de múltiples GPUs para un procesamiento más rápido.
- Configuración de Hiperparámetros: Personalice los hiperparámetros a través de archivos YAML o argumentos de la CLI.
- Visualización y Monitoreo: Seguimiento en tiempo real de las métricas de entrenamiento para obtener mejores perspectivas.
Estas características hacen que el entrenamiento sea eficiente y personalizable a sus necesidades. Para obtener más detalles, consulte la sección de Características Clave del Modo Train.
¿Cómo reanudo el entrenamiento desde una sesión interrumpida en Ultralytics YOLO11?
Para reanudar el entrenamiento desde una sesión interrumpida, establezca el resume
argumento en True
y especifique la ruta al último punto de control guardado.
Ejemplo de reanudación del entrenamiento
from ultralytics import YOLO
# Load the partially trained model
model = YOLO("path/to/last.pt")
# Resume training
results = model.train(resume=True)
yolo train resume model=path/to/last.pt
Consulte la sección sobre Reanudación de Entrenamientos Interrumpidos para obtener más información.
¿Puedo entrenar modelos YOLO11 en chips de silicio de Apple?
Sí, Ultralytics YOLO11 admite el entrenamiento en chips de silicio de Apple utilizando el framework Metal Performance Shaders (MPS). Especifique 'mps' como su dispositivo de entrenamiento.
Ejemplo de entrenamiento MPS
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo11n.pt")
# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=mps
Para obtener más detalles, consulte la sección de Entrenamiento MPS en Apple Silicon.
¿Cuáles son los ajustes de entrenamiento comunes y cómo los configuro?
Ultralytics YOLO11 le permite configurar una variedad de ajustes de entrenamiento, como el tamaño del lote, la tasa de aprendizaje, las épocas y más, a través de argumentos. Aquí hay una breve descripción general:
Argumento | Predeterminado | Descripción |
---|---|---|
model |
None |
Ruta al archivo del modelo para el entrenamiento. |
data |
None |
Ruta al archivo de configuración del conjunto de datos (p. ej., coco8.yaml ). |
epochs |
100 |
Número total de épocas de entrenamiento. |
batch |
16 |
Tamaño del lote, ajustable como entero o en modo automático. |
imgsz |
640 |
Tamaño de imagen objetivo para el entrenamiento. |
device |
None |
Dispositivo(s) computacional(es) para el entrenamiento como cpu , 0 , 0,1 , o mps . |
save |
True |
Habilita el guardado de puntos de control de entrenamiento y pesos del modelo final. |
Para obtener una guía detallada sobre la configuración del entrenamiento, consulta la sección de Ajustes de Entrenamiento.