Configuración
Los ajustes e hiperparámetros de YOLO desempeñan un papel fundamental en el rendimiento, la velocidad y la precisión del modelo. Estos ajustes pueden afectar al comportamiento del modelo en diversas etapas, incluyendo el entrenamiento, la validación y la predicción.
Watch: Mastering Ultralytics YOLO: Configuration
Los comandos de Ultralytics utilizan la siguiente sintaxis:
yolo TASK MODE ARGSDonde:
TASK(opcional) es uno de (detect, segment, classify, pose, obb)MODE(requerido) es uno de (train, val, predict, export, track, benchmark)ARGS(opcional) son pares dearg=valuecomoimgsz=640que sobrescriben los valores predeterminados.
Default ARG values are defined on this page and come from the cfg/default.yaml file.
Tareas
Los modelos YOLO de Ultralytics pueden realizar una variedad de tareas de visión artificial, incluyendo:
- Detect: La detección de objetos identifica y localiza objetos dentro de una imagen o vídeo.
- Segment: La segmentación de instancias divide una imagen o vídeo en regiones que corresponden a diferentes objetos o clases.
- Classify: La clasificación de imágenes predice la etiqueta de clase de una imagen de entrada.
- Pose: La estimación de pose identifica objetos y estima sus puntos clave en una imagen o vídeo.
- OBB: Las cajas delimitadoras orientadas utilizan cajas delimitadoras rotadas, adecuadas para imágenes satelitales o médicas.
| Argumento | Predeterminado | Descripción |
|---|---|---|
task | 'detect' | Especifica la tarea de YOLO: detect para detección de objetos, segment para segmentación, classify para clasificación, pose para estimación de pose y obb para cajas delimitadoras orientadas. Cada tarea está adaptada a resultados y problemas específicos en el análisis de imágenes y vídeos. |
Modos
Los modelos YOLO de Ultralytics operan en diferentes modos, cada uno diseñado para una etapa específica del ciclo de vida del modelo:
- Train: Entrena un modelo YOLO en un conjunto de datos personalizado.
- Val: Valida un modelo YOLO entrenado.
- Predict: Utiliza un modelo YOLO entrenado para realizar predicciones en nuevas imágenes o vídeos.
- Export: Exporta un modelo YOLO para su implementación.
- Track: Rastrea objetos en tiempo real usando un modelo YOLO.
- Benchmark: Evalúa la velocidad y precisión de las exportaciones YOLO (ONNX, TensorRT, etc.).
| Argumento | Predeterminado | Descripción |
|---|---|---|
mode | 'train' | Especifica el modo de operación del modelo YOLO: train para el entrenamiento del modelo, val para validación, predict para inferencia, export para convertir a formatos de implementación, track para el rastreo de objetos y benchmark para la evaluación del rendimiento. Cada modo admite diferentes etapas, desde el desarrollo hasta la implementación. |
Ajustes de entrenamiento
Los ajustes de entrenamiento para los modelos YOLO incluyen hiperparámetros y configuraciones que afectan al rendimiento, la velocidad y la precisión del modelo. Los ajustes clave incluyen tamaño del lote, tasa de aprendizaje, momento y decaimiento de peso. La elección del optimizador, la función de pérdida y la composición del conjunto de datos también influyen en el entrenamiento. El ajuste y la experimentación son cruciales para un rendimiento óptimo. Para obtener más detalles, consulta la función de punto de entrada de Ultralytics.
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
model | str | None | Especifica el archivo del modelo para el entrenamiento. Acepta una ruta a un modelo preentrenado .pt o a un archivo de configuración .yaml. Es esencial para definir la estructura del modelo o inicializar los pesos. |
data | str | None | Ruta al archivo de configuración del conjunto de datos (por ejemplo, coco8.yaml). Este archivo contiene parámetros específicos del conjunto de datos, incluyendo rutas a los datos de entrenamiento y validación, nombres de clases y número de clases. |
epochs | int | 100 | Número total de épocas de entrenamiento. Cada época representa un paso completo sobre todo el conjunto de datos. Ajustar este valor puede afectar a la duración del entrenamiento y al rendimiento del modelo. |
time | float | None | Tiempo máximo de entrenamiento en horas. Si se establece, anula el argumento epochs, permitiendo que el entrenamiento se detenga automáticamente después de la duración especificada. Es útil para escenarios de entrenamiento con limitaciones de tiempo. |
patience | int | 100 | Número de épocas a esperar sin mejoras en las métricas de validación antes de detener el entrenamiento de forma temprana. Ayuda a prevenir el sobreajuste deteniendo el entrenamiento cuando el rendimiento se estanca. |
batch | int o float | 16 | Tamaño del lote, con tres modos: establecer como entero (por ejemplo, batch=16), modo automático para una utilización del 60 % de la memoria de la GPU (batch=-1), o modo automático con una fracción de utilización especificada (batch=0.70). |
imgsz | int | 640 | Tamaño de imagen objetivo para el entrenamiento. Las imágenes se redimensionan a cuadrados con lados iguales al valor especificado (si rect=False), preservando la relación de aspecto para los modelos YOLO pero no para RT-DETR. Afecta a la precisión y a la complejidad computacional del modelo. |
save | bool | True | Habilita el guardado de puntos de control de entrenamiento y pesos finales del modelo. Es útil para reanudar el entrenamiento o para la implementación del modelo. |
save_period | int | -1 | Frecuencia de guardado de puntos de control del modelo, especificada en épocas. Un valor de -1 deshabilita esta característica. Es útil para guardar modelos provisionales durante sesiones de entrenamiento largas. |
cache | bool | False | Habilita el almacenamiento en caché de imágenes del conjunto de datos en memoria (True/ram), en disco (disk), o lo deshabilita (False). Mejora la velocidad de entrenamiento al reducir las operaciones de E/S de disco a costa de un mayor uso de memoria. |
device | int o str o list | None | Especifica el dispositivo o dispositivos computacionales para el entrenamiento: una sola GPU (device=0), múltiples GPUs (device=[0,1]), CPU (device=cpu), MPS para Apple silicon (device=mps), Huawei Ascend NPU (device=npu o device=npu:0), o selección automática de la GPU más inactiva (device=-1) o múltiples GPUs inactivas (device=[-1,-1]) |
workers | int | 8 | Número de hilos de trabajo para la carga de datos (por RANK si el entrenamiento es Multi-GPU). Influye en la velocidad del preprocesamiento de datos y en la alimentación al modelo, especialmente útil en configuraciones multi-GPU. |
project | str | None | Nombre del directorio del proyecto donde se guardan los resultados del entrenamiento. Permite el almacenamiento organizado de diferentes experimentos. |
name | str | None | Nombre de la ejecución de entrenamiento. Se utiliza para crear un subdirectorio dentro de la carpeta del proyecto, donde se almacenan los registros y resultados del entrenamiento. |
exist_ok | bool | False | Si es True, permite sobrescribir un directorio de proyecto/nombre existente. Es útil para la experimentación iterativa sin necesidad de borrar manualmente los resultados anteriores. |
pretrained | bool o str | True | Determina si se debe comenzar el entrenamiento a partir de pesos preentrenados. Puede ser un valor booleano o una ruta de cadena a los pesos a cargar. pretrained=False entrena a partir de pesos inicializados aleatoriamente manteniendo la arquitectura del modelo. |
optimizer | str | 'auto' | Elección del optimizador para el entrenamiento. Las opciones incluyen SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp o auto para la selección automática basada en la configuración del modelo. Afecta a la velocidad de convergencia y a la estabilidad. |
seed | int | 0 | Establece la semilla aleatoria para el entrenamiento, garantizando la reproducibilidad de los resultados entre ejecuciones con las mismas configuraciones. |
deterministic | bool | True | Fuerza el uso de algoritmos deterministas, asegurando la reproducibilidad, pero puede afectar al rendimiento y a la velocidad debido a la restricción sobre algoritmos no deterministas. |
verbose | bool | True | Habilita la salida detallada durante el entrenamiento, mostrando barras de progreso, métricas por época e información adicional de entrenamiento en la consola. |
single_cls | bool | False | Trata todas las clases en conjuntos de datos multiclase como una única clase durante el entrenamiento. Es útil para tareas de clasificación binaria o cuando se centra en la presencia de objetos en lugar de en la clasificación. |
classes | list[int] | None | Especifica una lista de ID de clases para entrenar. Es útil para filtrar y centrarse solo en ciertas clases durante el entrenamiento. |
rect | bool | False | Habilita la estrategia de relleno mínimo: las imágenes en un lote se rellenan mínimamente para alcanzar un tamaño común, con el lado más largo igual a imgsz. Puede mejorar la eficiencia y la velocidad, pero podría afectar a la precisión del modelo. |
multi_scale | float | 0.0 | Varía aleatoriamente imgsz en cada lote por +/- multi_scale (por ejemplo, 0.25 -> 0.75x a 1.25x), redondeando a múltiplos del paso del modelo; 0.0 deshabilita el entrenamiento a multiescala. |
cos_lr | bool | False | Utiliza un programador de tasa de aprendizaje de coseno, ajustando la tasa de aprendizaje siguiendo una curva de coseno a lo largo de las épocas. Ayuda a gestionar la tasa de aprendizaje para una mejor convergencia. |
close_mosaic | int | 10 | Desactiva la aumentación de datos tipo mosaico en las últimas N épocas para estabilizar el entrenamiento antes de finalizar. Establecerlo 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 conteo de épocas, continuando el entrenamiento sin interrupciones. |
amp | bool | True | Activa el entrenamiento con Precisión Mixta automática (AMP), lo que reduce el uso de memoria y posiblemente acelera el entrenamiento con un impacto mínimo en la precisión. |
fraction | float | 1.0 | Especifica la fracción del conjunto de datos a utilizar para el entrenamiento. Permite entrenar con un subconjunto del conjunto completo, útil para experimentos o cuando los recursos son limitados. |
profile | bool | False | Activa el perfilado de velocidades de ONNX y TensorRT durante el entrenamiento, útil para optimizar el despliegue 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 aprendizaje por transferencia. |
lr0 | float | 0.01 | Tasa de aprendizaje inicial (p. ej., 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 planificadores para ajustar la tasa de aprendizaje a lo largo del tiempo. |
momentum | float | 0.937 | Factor de momentum para SGD o beta1 para optimizadores Adam, lo que influye en la incorporación de gradientes anteriores 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 inicial para estabilizar el entrenamiento desde el principio. |
warmup_momentum | float | 0.8 | Momentum inicial para la fase de calentamiento, ajustándose gradualmente al momentum establecido durante el período de calentamiento. |
warmup_bias_lr | float | 0.1 | Tasa de aprendizaje para los parámetros de sesgo (bias) durante la fase de calentamiento, ayudando a estabilizar el entrenamiento del modelo en las épocas iniciales. |
box | float | 7.5 | Peso del componente de pérdida de caja en la función de pérdida, lo que influye en cuánto énfasis se pone en predecir con precisión las coordenadas de la caja delimitadora. |
cls | float | 0.5 | Peso de la pérdida de clasificación en la función de pérdida total, lo que afecta la importancia de la predicción correcta de la clase en relación con otros componentes. |
cls_pw | float | 0.0 | Potencia para la ponderación de clases para manejar el desequilibrio de clases utilizando la frecuencia inversa de clase. 0.0 desactiva la ponderación de clases, 1.0 aplica una ponderación completa por frecuencia inversa. Los valores entre 0 y 1 proporcionan una ponderación parcial. |
dfl | float | 1.5 | Peso de la pérdida focal de distribución (DFL), 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 modelos entrenados para estimación de pose, influyendo en el énfasis sobre la predicción precisa de los puntos clave de pose. |
kobj | float | 1.0 | Peso de la pérdida de objetividad de puntos clave en modelos de estimación de pose, equilibrando la confianza de detección con la precisión de la pose. |
rle | float | 1.0 | Peso de la pérdida de estimación de log-verosimilitud residual en modelos de estimación de pose, afectando la precisión de la localización de los puntos clave. |
angle | float | 1.0 | Peso de la pérdida de ángulo en modelos OBB, afectando la precisión de las predicciones de ángulo de las cajas delimitadoras orientadas. |
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 objetos 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ás grande durante la fusión. |
mask_ratio | int | 4 | Relación de submuestreo para 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 regularización en tareas de clasificación, evitando el sobreajuste al omitir aleatoriamente unidades durante el entrenamiento. |
val | bool | True | Activa la validación durante el entrenamiento, permitiendo la evaluación periódica del rendimiento del modelo en un conjunto de datos separado. |
plots | bool | True | 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 el progreso del aprendizaje. |
compile | bool o str | False | Activa la compilación de grafos torch.compile de PyTorch 2.x con backend='inductor'. Acepta True → "default", False → desactiva, o un modo de cadena como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Vuelve a la ejecución ansiosa (eager) con una advertencia si no es compatible. |
max_det | int | 300 | Especifica el número máximo de objetos conservados durante la fase de validación del entrenamiento. |
El argumento batch ofrece tres opciones de configuración:
- Tamaño de lote fijo: Especifica el número de imágenes por lote con un número entero (p. ej.,
batch=16). - Modo automático (60% de memoria GPU): Usa
batch=-1para el ajuste automático a aproximadamente el 60% de utilización de memoria CUDA. - Modo automático con fracción de utilización: Establece una fracción (p. ej.,
batch=0.70) para ajustar basándose en un uso específico de memoria de la GPU.
Configuración de predicción
La configuración de predicción para modelos YOLO incluye hiperparámetros y configuraciones que influyen en el rendimiento, la velocidad y la precisión durante la inferencia. Los ajustes clave incluyen el umbral de confianza, el umbral de Supresión de No Máximos (NMS) y el número de clases. El tamaño de los datos de entrada, el formato y funciones adicionales como las máscaras también afectan las predicciones. Ajustar estos parámetros es esencial para un rendimiento óptimo.
Argumentos de inferencia:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
source | str o int o None | None | Especifica la fuente de datos para la inferencia. Puede ser una ruta de imagen, un archivo de video, un directorio, una URL o un ID de dispositivo para transmisiones en vivo. Si se omite, se registra una advertencia y el modelo recurre a los activos de demostración integrados (ultralytics/assets, o una URL de demostración para OBB). Admite una amplia gama de formatos y fuentes, permitiendo una aplicación flexible a través de diferentes tipos de entrada. |
conf | float | 0.25 | Establece el umbral de confianza mínimo para las detecciones. Los objetos detectados con una confianza inferior a este umbral serán descartados. Ajustar este valor puede ayudar a reducir los falsos positivos. |
iou | float | 0.7 | Umbral de Intersección sobre Unión (IoU) para la Supresión de No Máximos (NMS). Los valores más bajos resultan en menos detecciones al eliminar cajas superpuestas, útil para reducir duplicados. |
imgsz | int o tuple | 640 | Letterbox target. An integer gives a square N×N; a tuple gives (height, width). With rect=True, the actual tensor may be smaller than this target due to minimum-rectangle padding. Use rect=False for a fixed size. See Fixed shape vs minimum rectangle. |
rect | bool | True | Si es True, usa relleno de rectángulo mínimo cuando sea posible (lotes de la misma forma y backend compatible). Si es False, rellena siempre hasta el imgsz completo. Consulta Forma fija vs. rectángulo mínimo. |
half | bool | False | Activa la inferencia de precisión media (FP16), lo que puede acelerar la inferencia del modelo en GPUs compatibles con un impacto mínimo en la precisión. |
device | str | None | Especifica el dispositivo para la inferencia (p. ej., cpu, cuda:0, 0, npu o npu:0). Permite a los usuarios seleccionar entre CPU, una GPU específica, NPU Huawei Ascend u otros dispositivos de cómputo para la ejecución del modelo. |
batch | int | 1 | Especifica el tamaño de lote para la inferencia (solo funciona cuando la fuente es un directorio, archivo de video o archivo .txt). Un tamaño de lote mayor puede proporcionar un mayor rendimiento, reduciendo la cantidad total de tiempo necesaria para la inferencia. |
max_det | int | 300 | Número máximo de detecciones permitidas por imagen. Limita el número total de objetos que el modelo puede detectar en una sola inferencia, evitando resultados excesivos en escenas densas. |
vid_stride | int | 1 | Intervalo de fotogramas para entradas de vídeo. Permite saltar fotogramas en vídeos para acelerar el procesamiento a costa de la resolución temporal. Un valor de 1 procesa cada fotograma, mientras que valores mayores saltan fotogramas. |
stream_buffer | bool | False | Determina si se deben poner en cola los fotogramas entrantes para flujos de vídeo. Si es False, los fotogramas antiguos se descartan para dar cabida a los nuevos (optimizado para aplicaciones en tiempo real). Si es True, pone en cola los nuevos fotogramas en un búfer, asegurando que no se salte ninguno, pero causará latencia si los FPS de inferencia son menores que los FPS del flujo. |
visualize | bool | False | Activa la visualización de las características del modelo durante la inferencia, proporcionando información sobre lo que el modelo está "viendo". Útil para la depuración y la interpretación del modelo. |
augment | bool | False | Habilita la aumentación durante la inferencia (TTA) para las predicciones, mejorando potencialmente la robustez de la detección a costa de la velocidad de inferencia. |
agnostic_nms | bool | False | Habilita la Supresión de No Máximos (NMS) agnóstica a la clase, que fusiona cajas superpuestas de diferentes clases. Útil en escenarios de detección multiclase donde la superposición de clases es común. Para modelos de extremo a extremo (YOLO26, YOLOv10), esto solo evita que la misma detección aparezca con múltiples etiquetas de clase (duplicados de IoU=1.0) y no realiza una supresión basada en el umbral de IoU entre cajas distintas. |
classes | list[int] | None | Filtra las predicciones a un conjunto de IDs de clase. Solo se devolverán las detecciones que pertenezcan a las clases especificadas. Útil para centrarse en objetos relevantes en tareas de detección multiclase. |
retina_masks | bool | False | Devuelve máscaras de segmentación de alta resolución. Las máscaras devueltas (masks.data) coincidirán con el tamaño original de la imagen si se habilita. Si se deshabilita, tendrán el tamaño de imagen utilizado durante la inferencia. |
embed | list[int] | None | Especifica las capas de las que extraer vectores de características o embeddings. Útil para tareas posteriores como agrupación o búsqueda de similitud. |
project | str | None | Nombre del directorio del proyecto donde se guardan los resultados de la predicción si save está habilitado. |
name | str | None | Nombre de la ejecución de predicción. Se utiliza para crear un subdirectorio dentro de la carpeta del proyecto, donde se almacenan los resultados de la predicción si save está habilitado. |
stream | bool | False | Habilita el procesamiento eficiente en memoria para vídeos largos o numerosas imágenes al devolver un generador de objetos Results en lugar de cargar todos los fotogramas en memoria a la vez. |
verbose | bool | True | Controla si se deben mostrar registros detallados de inferencia en el terminal, proporcionando información en tiempo real sobre el proceso de predicción. |
compile | bool o str | False | Activa la compilación de grafos torch.compile de PyTorch 2.x con backend='inductor'. Acepta True → "default", False → desactiva, o un modo de cadena como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Vuelve a la ejecución ansiosa (eager) con una advertencia si no es compatible. |
end2end | bool | None | Anula el modo de extremo a extremo en modelos YOLO que admiten inferencia sin NMS (YOLO26, YOLOv10). Configurarlo en False te permite ejecutar la predicción utilizando la canalización NMS tradicional, permitiéndote además utilizar el argumento iou. Consulta la guía de Detección de extremo a extremo para más detalles. |
Argumentos de visualización:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
show | bool | False | Si es True, muestra las imágenes o vídeos anotados en una ventana. Útil para obtener información visual inmediata durante el desarrollo o las pruebas. |
save | bool | False or True | Habilita el guardado de las imágenes o vídeos anotados en archivos. Útil para documentación, análisis adicional o compartir resultados. Por defecto es True cuando se usa CLI y False cuando se usa en Python. |
save_frames | bool | False | Al procesar vídeos, guarda fotogramas individuales como imágenes. Útil para extraer fotogramas específicos o para un análisis detallado fotograma a fotograma. |
save_txt | bool | False | Guarda los resultados de la detección en un archivo de texto, siguiendo el formato [class] [x_center] [y_center] [width] [height] [confidence]. Útil para la integración con otras herramientas de análisis. |
save_conf | bool | False | Incluye las puntuaciones de confianza en los archivos de texto guardados. Mejora el detalle disponible para el post-procesamiento y análisis. |
save_crop | bool | False | Guarda imágenes recortadas de las detecciones. Útil para el aumento de conjuntos de datos, análisis o la creación de conjuntos de datos enfocados en objetos específicos. |
show_labels | bool | True | Muestra etiquetas para cada detección en el resultado visual. Proporciona una comprensión inmediata de los objetos detectados. |
show_conf | bool | True | Muestra la puntuación de confianza para cada detección junto a la etiqueta. Ofrece información sobre la certeza del modelo para cada detección. |
show_boxes | bool | True | Dibuja cajas delimitadoras alrededor de los objetos detectados. Esencial para la identificación visual y la ubicación de objetos en imágenes o fotogramas de vídeo. |
line_width | int or None | None | Especifica el ancho de línea de las cajas delimitadoras. Si es None, el ancho de línea se ajusta automáticamente según el tamaño de la imagen. Proporciona personalización visual para mayor claridad. |
Configuraciones de Validación
Las configuraciones de validación para modelos YOLO implican hiperparámetros y configuraciones para evaluar el rendimiento en un conjunto de datos de validación. Estos ajustes influyen en el rendimiento, la velocidad y la precisión. Las configuraciones comunes incluyen el tamaño de lote, la frecuencia de validación y las métricas de rendimiento. El tamaño y la composición del conjunto de datos de validación, junto con la tarea específica, también afectan al proceso.
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
data | str | None | Especifica la ruta al archivo de configuración del conjunto de datos (por ejemplo, coco8.yaml). Este archivo debe incluir la ruta a los datos de validación. |
imgsz | int | 640 | Define el tamaño de las imágenes de entrada. Todas las imágenes se redimensionan a esta dimensión antes del procesamiento. Tamaños mayores pueden mejorar la precisión para objetos pequeños, pero aumentan el tiempo de cálculo. |
batch | int | 16 | Establece el número de imágenes por lote. Valores mayores utilizan la memoria de la GPU de manera más eficiente, pero requieren más VRAM. Ajusta según los recursos de hardware disponibles. |
save_json | bool | False | Si es True, guarda los resultados en un archivo JSON para su posterior análisis, integración con otras herramientas o envío a servidores de evaluación como COCO. |
conf | float | 0.001 | Establece el umbral mínimo de confianza para las detecciones. Valores menores aumentan el recuerdo pero pueden introducir más falsos positivos. Se utiliza durante la validación para calcular curvas de precisión-recuerdo. |
iou | float | 0.7 | Establece el umbral de Intersección sobre Unión para la Supresión de No Máximos. Controla la eliminación de detecciones duplicadas. |
max_det | int | 300 | Limita el número máximo de detecciones por imagen. Útil en escenas densas para evitar detecciones excesivas y gestionar los recursos computacionales. |
half | bool | False | Habilita el cálculo de media precisión (FP16), reduciendo el uso de memoria y aumentando potencialmente la velocidad con un impacto mínimo en la precisión. |
device | str | None | Especifica el dispositivo para la validación (cpu, cuda:0, npu, npu:0, etc.). Cuando es None, selecciona automáticamente el mejor dispositivo disponible. Se pueden especificar múltiples dispositivos CUDA separados por comas. |
dnn | bool | False | Si es True, utiliza el módulo DNN de OpenCV para la inferencia de modelos ONNX, ofreciendo una alternativa a los métodos de inferencia de PyTorch. |
plots | bool | True | Cuando se establece en True, genera y guarda gráficos de predicciones frente a la verdad fundamental, matrices de confusión y curvas PR para la evaluación visual del rendimiento del modelo. |
classes | list[int] | None | Especifica una lista de IDs de clase a evaluar. Útil para filtrar y centrarse solo en ciertas clases durante la evaluación. |
rect | bool | True | Si es True, utiliza inferencia rectangular para el procesamiento por lotes, reduciendo el relleno y aumentando potencialmente la velocidad y la eficiencia al procesar imágenes en su relación de aspecto original. |
split | str | 'val' | Determina la división del conjunto de datos a utilizar para la validación (val, test o train). Permite flexibilidad al elegir el segmento de datos para la evaluación del rendimiento. |
project | str | None | Nombre del directorio del proyecto donde se guardan los resultados de la validación. Ayuda a organizar los resultados de diferentes experimentos o modelos. |
name | str | None | Nombre de la ejecución de validación. Se utiliza para crear un subdirectorio dentro de la carpeta del proyecto, donde se almacenan los registros y resultados de la validación. |
verbose | bool | True | Si es True, muestra información detallada durante el proceso de validación, incluyendo métricas por clase, progreso del lote e información adicional de depuración. |
save_txt | bool | False | Si es True, guarda los resultados de la detección en archivos de texto, con un archivo por imagen, lo cual es útil para análisis posteriores, post-procesamiento personalizado o integración con otros sistemas. |
save_conf | bool | False | Si es True, incluye los valores de confianza en los archivos de texto guardados cuando save_txt está habilitado, proporcionando resultados más detallados para el análisis y filtrado. |
workers | int | 8 | Número de hilos de trabajo para la carga de datos. Valores mayores pueden acelerar el preprocesamiento de datos pero pueden aumentar el uso de CPU. Establecerlo en 0 utiliza el hilo principal, lo que puede ser más estable en algunos entornos. |
augment | bool | False | Habilita la aumentación durante la inferencia (TTA) durante la validación, mejorando potencialmente la precisión de la detección a costa de la velocidad de inferencia al ejecutar la inferencia en versiones transformadas de la entrada. |
agnostic_nms | bool | False | Habilita la Supresión de No Máximos agnóstica a la clase, que fusiona cajas superpuestas independientemente de su clase predicha. Útil para aplicaciones centradas en instancias. Para modelos de extremo a extremo (YOLO26, YOLOv10), esto solo evita que la misma detección aparezca con múltiples etiquetas de clase (duplicados de IoU=1.0) y no realiza una supresión basada en el umbral de IoU entre cajas distintas. |
single_cls | bool | False | Trata todas las clases como una sola clase durante la validación. Útil para evaluar el rendimiento del modelo en tareas de detección binaria o cuando las distinciones de clase no son importantes. |
visualize | bool | False | Visualiza las verdades fundamentales, los verdaderos positivos, los falsos positivos y los falsos negativos para cada imagen. Útil para la depuración y la interpretación del modelo. |
compile | bool o str | False | Activa la compilación de grafos torch.compile de PyTorch 2.x con backend='inductor'. Acepta True → "default", False → desactiva, o un modo de cadena como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Vuelve a la ejecución ansiosa (eager) con una advertencia si no es compatible. |
end2end | bool | None | Anula el modo de extremo a extremo en modelos YOLO que admiten inferencia sin NMS (YOLO26, YOLOv10). Configurarlo en False te permite ejecutar la validación utilizando la canalización NMS tradicional, permitiéndote además utilizar el argumento iou. |
El ajuste cuidadoso y la experimentación son cruciales para asegurar un rendimiento óptimo y para detectar y prevenir el sobreajuste.
Configuraciones de Exportación
Las configuraciones de exportación para modelos YOLO incluyen configuraciones para guardar o exportar el modelo para su uso en diferentes entornos. Estos ajustes afectan al rendimiento, tamaño y compatibilidad. Las configuraciones clave incluyen el formato de archivo exportado (por ejemplo, ONNX, TensorFlow SavedModel), el dispositivo de destino (por ejemplo, CPU, GPU) y características como máscaras. La tarea del modelo y las restricciones del entorno de destino también afectan al proceso de exportación.
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'torchscript' | Formato de destino para el modelo exportado, como 'onnx', 'torchscript', 'engine' (TensorRT), u otros. Cada formato permite la compatibilidad con diferentes entornos de implementación. |
imgsz | int o tuple | 640 | Tamaño de imagen deseado para la entrada del modelo. Puede ser un número entero para imágenes cuadradas (por ejemplo, 640 para 640×640) o una tupla (height, width) para dimensiones específicas. |
keras | bool | False | Habilita la exportación a formato Keras para TensorFlow SavedModel, proporcionando compatibilidad con el servicio de TensorFlow y sus APIs. |
optimize | bool | False | Aplica la optimización para dispositivos móviles al exportar a TorchScript, reduciendo potencialmente el tamaño del modelo y mejorando el rendimiento de la inferencia. No es compatible con el formato NCNN ni con dispositivos CUDA. Para DeepX, habilita una optimización del compilador superior que reduce la latencia de inferencia y aumenta el tiempo de compilación. |
half | bool | False | Habilita la cuantización FP16 (precisión media), reduciendo el tamaño del modelo y acelerando potencialmente la inferencia en hardware compatible. No es compatible con la cuantización INT8 ni con exportaciones solo de CPU. Solo disponible para ciertos formatos, por ejemplo, ONNX (ver abajo). |
int8 | bool | False | Activa la cuantización INT8, comprimiendo aún más el modelo y acelerando la inferencia con una pérdida mínima de precisión, principalmente para dispositivos de borde. Cuando se utiliza con TensorRT, realiza la cuantización post-entrenamiento (PTQ). |
dynamic | bool | False | Permite tamaños de entrada dinámicos para exportaciones de TorchScript, ONNX, OpenVINO, TensorRT y CoreML, mejorando la flexibilidad en el manejo de dimensiones de imagen variables. Se establece automáticamente en True cuando se utiliza TensorRT con INT8. |
simplify | bool | True | Simplifica el grafo del modelo para exportaciones ONNX con onnxslim, mejorando potencialmente el rendimiento y la compatibilidad con motores de inferencia. |
opset | int | None | Especifica la versión opset de ONNX para la compatibilidad con diferentes analizadores y tiempos de ejecución de ONNX. Si no se establece, utiliza la última versión compatible. |
workspace | float o None | None | Establece el tamaño máximo del espacio de trabajo en GiB para optimizaciones de TensorRT, equilibrando el uso de memoria y el rendimiento. Usa None para la asignación automática por parte de TensorRT hasta el máximo del dispositivo. |
nms | bool | False | Añade la supresión de no máximos (NMS) al modelo exportado cuando es compatible (consulta Formatos de exportación), mejorando la eficiencia del procesamiento posterior a la detección. No está disponible para modelos end2end. |
batch | int | 1 | Especifica el tamaño de inferencia por lotes del modelo de exportación o el número máximo de imágenes que el modelo exportado procesará simultáneamente en el modo predict. Para exportaciones a Edge TPU, esto se establece automáticamente en 1. |
device | str | None | Especifica el dispositivo para la exportación: GPU (device=0), CPU (device=cpu), MPS para Apple silicon (device=mps), Huawei Ascend NPU (device=npu o device=npu:0), o DLA para NVIDIA Jetson (device=dla:0 o device=dla:1). Las exportaciones de TensorRT usan GPU automáticamente. |
data | str | 'coco8.yaml' | Ruta al archivo de configuración del dataset, esencial para la calibración de cuantización INT8. Si no se especifica con INT8 activado, se utilizará coco8.yaml como alternativa para la calibración. |
fraction | float | 1.0 | Especifica la fracción del conjunto de datos a usar para la calibración de cuantización INT8. Permite calibrar sobre un subconjunto del conjunto de datos completo, útil para experimentos o cuando los recursos son limitados. Si no se especifica con INT8 activado, se usará el conjunto de datos completo. |
end2end | bool | None | Sobrescribe el modo end-to-end en modelos YOLO que admiten inferencia sin NMS (YOLO26, YOLOv10). Configurarlo en False te permite exportar estos modelos para que sean compatibles con la canalización de posprocesamiento tradicional basada en NMS. Consulta la guía de detección End-to-End para más detalles. |
Una configuración meditada asegura que el modelo exportado esté optimizado para su caso de uso y funcione de forma efectiva en el entorno objetivo.
Ajustes de soluciones
Los ajustes de configuración de Ultralytics Solutions ofrecen flexibilidad para personalizar modelos para tareas como conteo de objetos, creación de mapas de calor, seguimiento de ejercicios, análisis de datos, seguimiento de zonas, gestión de colas y conteo basado en regiones. Estas opciones permiten ajustes sencillos para obtener resultados precisos y útiles adaptados a necesidades específicas.
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
model | str | None | Ruta a un archivo de modelo Ultralytics YOLO. |
region | list | '[(20, 400), (1260, 400)]' | Lista de puntos que definen la región de conteo. |
show_in | bool | True | Indicador para controlar si se deben mostrar los recuentos de entrada en la transmisión de video. |
show_out | bool | True | Indicador para controlar si se deben mostrar los recuentos de salida en la transmisión de video. |
analytics_type | str | 'line' | Tipo de gráfico, p. ej., line, bar, area o pie. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Mapa de colores para usar en el mapa de calor. |
json_file | str | None | Ruta al archivo JSON que contiene todos los datos de coordenadas de aparcamiento. |
up_angle | float | 145.0 | Umbral de ángulo para la pose 'arriba'. |
kpts | list[int] | '[6, 8, 10]' | Lista de tres índices de puntos clave utilizados para monitorear ejercicios. Estos puntos clave corresponden a articulaciones o partes del cuerpo, como hombros, codos y muñecas, para ejercicios como flexiones, dominadas, sentadillas y ejercicios abdominales. |
down_angle | int | 90 | Umbral de ángulo para la pose 'abajo'. |
blur_ratio | float | 0.5 | Ajusta el porcentaje de intensidad de desenfoque, con valores en el rango 0.1 - 1.0. |
crop_dir | str | 'cropped-detections' | Nombre del directorio para almacenar las detecciones recortadas. |
records | int | 5 | Recuento total de detecciones para activar un correo electrónico con un sistema de alarma de seguridad. |
vision_point | tuple[int, int] | (20, 20) | El punto donde la visión rastreará objetos y dibujará rutas usando la solución VisionEye. |
source | str | None | Ruta a la fuente de entrada (video, RTSP, etc.). Solo utilizable con la interfaz de línea de comandos (CLI) de Solutions. |
figsize | tuple[int, int] | (12.8, 7.2) | Tamaño de figura para gráficos de análisis como mapas de calor o gráficas. |
fps | float | 30.0 | Fotogramas por segundo utilizados para cálculos de velocidad. |
max_hist | int | 5 | Puntos históricos máximos a rastrear por objeto para cálculos de velocidad/dirección. |
meter_per_pixel | float | 0.05 | Factor de escala utilizado para convertir la distancia en píxeles a unidades del mundo real. |
max_speed | int | 120 | Límite de velocidad máximo en superposiciones visuales (utilizado en alertas). |
data | str | 'images' | Ruta al directorio de imágenes usado para la búsqueda de similitud. |
Ajustes de aumento
Las técnicas de aumento de datos son esenciales para mejorar la robustez y el rendimiento del modelo YOLO introduciendo variabilidad en los datos de entrenamiento, ayudando al modelo a generalizar mejor ante datos no vistos. La siguiente tabla describe el propósito y efecto de cada argumento de aumento:
| Argumento | Tipo | Predeterminado | Tareas admitidas | Rango | Descripción |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Ajusta el tono de la imagen mediante una fracción de la rueda de color, introduciendo variabilidad cromática. Ayuda al modelo a generalizar entre diferentes condiciones de iluminación. |
hsv_s | float | 0.7 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Altera la saturación de la imagen mediante una fracción, afectando a la intensidad de los colores. Útil para simular diferentes condiciones ambientales. |
hsv_v | float | 0.4 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Modifica el valor (brillo) de la imagen mediante una fracción, ayudando al modelo a funcionar bien bajo diversas condiciones de iluminación. |
degrees | float | 0 | detect, segment, pose, obb | 0.0 - 180 | Rota la imagen aleatoriamente dentro del rango de grados especificado, mejorando la capacidad del modelo para reconocer objetos en diversas orientaciones. |
translate | float | 0.1 | detect, segment, pose, obb | 0.0 - 1.0 | Traslada la imagen horizontal y verticalmente mediante una fracción del tamaño de la imagen, ayudando a aprender a detectar objetos parcialmente visibles. |
scale | float | 0.5 | detect, segment, pose, obb, classify | 0 - 1 | Escala la imagen mediante un factor de ganancia, simulando objetos a diferentes distancias de la cámara. |
shear | float | 0 | detect, segment, pose, obb | -180 - +180 | Inclina la imagen en un grado especificado, imitando el efecto de objetos vistos desde diferentes ángulos. |
perspective | float | 0 | detect, segment, pose, obb | 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 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Invierte la imagen verticalmente con la probabilidad especificada, aumentando la variabilidad de los datos sin afectar a las características del objeto. |
fliplr | float | 0.5 | detect, segment, pose, obb, classify | 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 | detect, segment, pose, obb | 0.0 - 1.0 | Intercambia 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 | detect, segment, pose, obb | 0.0 - 1.0 | Combina cuatro imágenes de entrenamiento en una sola, simulando diferentes composiciones de escenas e interacciones de objetos. Altamente efectivo para la comprensión de escenas complejas. |
mixup | float | 0 | detect, segment, pose, obb | 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 | detect, segment, pose, obb | 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 | segment | 0.0 - 1.0 | Copia y pega objetos a través de imágenes para aumentar las instancias de objetos. |
copy_paste_mode | str | flip | segment | - | Especifica la estrategia de copy-paste a utilizar. Las opciones incluyen 'flip' y 'mixup'. |
auto_augment | str | randaugment | classify | - | Aplica una política de aumento predefinida ('randaugment', 'autoaugment' o 'augmix') para mejorar el rendimiento del modelo mediante la diversidad visual. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | Borra aleatoriamente regiones de la imagen durante el entrenamiento para animar al modelo a centrarse en características menos obvias. |
augmentations | list | `` | detect, segment, pose, obb | - | Transformaciones personalizadas de Albumentations para un aumento de datos avanzado (solo API de Python). Acepta una lista de objetos de transformación para necesidades de aumento especializadas. |
Ajusta estos parámetros para cumplir con los requisitos del conjunto de datos y la tarea. Experimentar con diferentes valores puede ayudar a encontrar la estrategia de aumento óptima para obtener el mejor rendimiento del modelo.
Ajustes de Registro, Puntos de Control y Gráficos
El registro, los puntos de control, la creación de gráficos y la gestión de archivos son importantes al entrenar un modelo YOLO:
- Registro: Realiza un seguimiento del progreso del modelo y diagnostica problemas utilizando bibliotecas como TensorBoard o escribiendo en un archivo.
- Puntos de Control (Checkpoints): Guarda el modelo a intervalos regulares para reanudar el entrenamiento o experimentar con diferentes configuraciones.
- Gráficos: Visualiza el rendimiento y el progreso del entrenamiento utilizando bibliotecas como Matplotlib o TensorBoard.
- Gestión de archivos: Organiza los archivos generados durante el entrenamiento, tales como puntos de control, archivos de registro y gráficos, para facilitar el acceso y el análisis.
La gestión eficaz de estos aspectos ayuda a realizar un seguimiento del progreso y facilita la depuración y la optimización.
| Argumento | Predeterminado | Descripción |
|---|---|---|
project | 'runs' | Especifica el directorio raíz para guardar las ejecuciones de entrenamiento. Cada ejecución se guarda en un subdirectorio separado. |
name | 'exp' | Define el nombre del experimento. Si no se especifica, YOLO incrementa este nombre para cada ejecución (por ejemplo, exp, exp-2) para evitar sobrescribir. |
exist_ok | False | Determina si se debe sobrescribir un directorio de experimento existente. True permite sobrescribir; False lo impide. |
plots | True | Controla la generación y el guardado de gráficos de entrenamiento y validación. Establece en True para crear gráficos como curvas de pérdida, curvas de precisión-exhaustividad y predicciones de muestra para el seguimiento visual del rendimiento. |
save | True | Habilita el guardado de puntos de control de entrenamiento y los pesos finales del modelo. Establece en True para guardar estados del modelo periódicamente, permitiendo la reanudación del entrenamiento o la implementación del modelo. |
Archivo de Configuración Personalizado
Carga un archivo YAML guardado para reutilizar un conjunto completo de argumentos sin tener que pasarlos en línea. El argumento cfg sobrescribe los valores de default.yaml, mientras que los argumentos adicionales pasados junto a él siguen teniendo prioridad.
| Argumento | Predeterminado | Descripción |
|---|---|---|
cfg | None | Ruta a un archivo YAML cuyos valores reemplazan a las entradas de default.yaml. Consulta Sobrescribir el Archivo de Configuración Predeterminado para ver un ejemplo práctico de la CLI. |
Preguntas frecuentes
¿Cómo puedo mejorar el rendimiento de mi modelo YOLO durante el entrenamiento?
Mejora el rendimiento ajustando hiperparámetros como el tamaño del lote, la tasa de aprendizaje, el momento y la decaimiento de peso. Ajusta los parámetros de aumento de datos, selecciona el optimizador correcto y utiliza técnicas como la parada temprana o la precisión mixta. Para más detalles, consulta la Guía de Entrenamiento.
¿Cuáles son los hiperparámetros clave para la precisión del modelo YOLO?
Los hiperparámetros clave que afectan a la precisión incluyen:
- Tamaño del Lote (
batch): Los tamaños más grandes pueden estabilizar el entrenamiento pero requieren más memoria. - Tasa de Aprendizaje (
lr0): Las tasas más pequeñas ofrecen ajustes finos pero una convergencia más lenta. - Momento (
momentum): Acelera los vectores de gradiente, amortiguando las oscilaciones. - Tamaño de la Imagen (
imgsz): Los tamaños más grandes mejoran la precisión pero aumentan la carga computacional.
Ajusta estos valores según tu conjunto de datos y hardware. Aprende más en Configuración de Entrenamiento.
¿Cómo establezco la tasa de aprendizaje para entrenar un modelo YOLO?
La tasa de aprendizaje (lr0) es crucial; empieza con 0.01 para SGD o 0.001 para el optimizador Adam. Supervisa las métricas y ajusta según sea necesario. Utiliza programadores de tasa de aprendizaje de coseno (cos_lr) o calentamiento (warmup_epochs, warmup_momentum). Los detalles se encuentran en la Guía de Entrenamiento.
¿Cuáles son los ajustes predeterminados de inferencia para los modelos YOLO?
Los ajustes predeterminados incluyen:
- Umbral de Confianza (
conf=0.25): Confianza mínima para las detecciones. - Umbral de IoU (
iou=0.7): Para la Supresión de No-Máximos (NMS). - Tamaño de la Imagen (
imgsz=640): Cambia el tamaño de las imágenes de entrada. - Dispositivo (
device=None): Selecciona CPU, GPU, Apple MPS o Huawei Ascend NPU (npu).
Para una visión general completa, consulta Configuración de Predicción y la Guía de Predicción.
¿Por qué utilizar entrenamiento de precisión mixta con los modelos YOLO?
El entrenamiento de precisión mixta (amp=True) reduce el uso de memoria y acelera el entrenamiento utilizando FP16 y FP32. Es beneficioso para las GPUs modernas, permitiendo modelos más grandes y cálculos más rápidos sin una pérdida de precisión significativa. Aprende más en la Guía de Entrenamiento.