Validación de modelos con Ultralytics YOLO
Introducción
La validación es un paso fundamental en el proceso de aprendizaje automático, ya que permite evaluar la calidad de los modelos entrenados. El modo Val de Ultralytics YOLO11 proporciona un sólido conjunto de herramientas y métricas para evaluar el rendimiento de sus modelos de detección de objetos. Esta guía es un recurso completo para comprender cómo utilizar eficazmente el modo Val para garantizar que sus modelos son precisos y fiables.
Observa: Ultralytics Tutorial de Modos: Validación
¿Por qué validar con Ultralytics YOLO ?
He aquí por qué es ventajoso utilizar el modo Val de YOLO11:
- Precisión: Obtenga métricas precisas como mAP50, mAP75 y mAP50-95 para evaluar exhaustivamente su modelo.
- Comodidad: Utiliza funciones integradas que recuerdan los ajustes de entrenamiento, simplificando el proceso de validación.
- Flexibilidad: Valide su modelo con los mismos o diferentes conjuntos de datos y tamaños de imagen.
- Ajuste de hiperparámetros: Utilice las métricas de validación para ajustar su modelo y obtener un mejor rendimiento.
Características principales del modo Val
Estas son las funcionalidades destacadas que ofrece el modo Val de YOLO11:
- Configuraciones automatizadas: Los modelos recuerdan sus configuraciones de entrenamiento para una validación directa.
- Soporte multimétrico: Evalúe su modelo en función de una serie de métricas de precisión.
- CLI y Python API: Elija entre la interfaz de línea de comandos o la API Python en función de sus preferencias de validación.
- Compatibilidad de datos: Funciona a la perfección con conjuntos de datos utilizados durante la fase de entrenamiento, así como con conjuntos de datos personalizados.
Consejo
- YOLO11 recuerdan automáticamente su configuración de entrenamiento, por lo que puede validar un modelo en el mismo tamaño de imagen y en el conjunto de datos original fácilmente con sólo
yolo val model=yolo11n.pt
omodel('yolo11n.pt').val()
Ejemplos de uso
Validación del modelo YOLO11n entrenado precisión en el conjunto de datos COCO8. No se necesitan argumentos, ya que el model
conserva su formación data
y los argumentos como atributos del modelo. Consulte la sección Argumentos para obtener una lista completa de los argumentos de validación.
Ejemplo
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list contains map50-95 of each category
Argumentos para la validación de modelos YOLO
Al validar los modelos de YOLO , pueden ajustarse varios argumentos para optimizar el proceso de evaluación. Estos argumentos controlan aspectos como el tamaño de la imagen de entrada, el procesamiento por lotes y los umbrales de rendimiento. A continuación se ofrece un desglose detallado de cada argumento para ayudarle a personalizar eficazmente los ajustes de validación.
Argumento | Tipo | Por defecto | Descripción |
---|---|---|---|
data |
str |
None |
Especifica la ruta del archivo de configuración del conjunto de datos (por ejemplo, coco8.yaml ). Este archivo incluye rutas a datos de validaciónnombres de las clases y número de clases. |
imgsz |
int |
640 |
Define el tamaño de las imágenes de entrada. Todas las imágenes se redimensionan a esta dimensión antes de ser procesadas. Los tamaños más grandes pueden mejorar la precisión de los objetos pequeños, pero aumentan el tiempo de cálculo. |
batch |
int |
16 |
Establece el número de imágenes por lote. Los valores más altos utilizan la memoria GPU de forma más eficiente pero requieren más VRAM. Ajústalo en función de los recursos de hardware disponibles. |
save_json |
bool |
False |
Si 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. |
save_hybrid |
bool |
False |
Si True guarda una versión híbrida de las etiquetas que combina las anotaciones originales con predicciones adicionales del modelo. Útil para el aprendizaje semisupervisado y la mejora de conjuntos de datos. |
conf |
float |
0.001 |
Establece el umbral mínimo de confianza para las detecciones. Los valores más bajos aumentan la recuperación, pero pueden introducir más falsos positivos. Se utiliza durante la validación para calcular las curvas de precisión-recuperación. |
iou |
float |
0.6 |
Establece el umbral de Intersección sobre Unión para la Supresión No Máxima. Controla la eliminación de la detección de duplicados. |
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 informáticos. |
half |
bool |
True |
Permite el cálculo de precisión media (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 etc.). En None selecciona automáticamente el mejor dispositivo disponible. Se pueden especificar varios dispositivos CUDA con separación por comas. |
dnn |
bool |
False |
Si True utiliza el OpenCV Módulo DNN para la inferencia de modelos ONNX , que ofrece una alternativa a PyTorch métodos de inferencia. |
plots |
bool |
False |
Cuando se establece en True genera y guarda gráficos de predicciones frente a la verdad sobre el terreno, matrices de confusión y curvas PR para la evaluación visual del rendimiento del modelo. |
rect |
bool |
True |
Si True utiliza la inferencia rectangular para el procesamiento por lotes, reduciendo el relleno y aumentando potencialmente la velocidad y la eficacia al procesar las imágenes en su relación de aspecto original. |
split |
str |
'val' |
Determina la división del conjunto de datos que se utilizará para la validación (val , test o train ). Permite flexibilidad a la hora de 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 de validación y los resultados. |
verbose |
bool |
False |
Si 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 True , guarda los resultados de la detección en archivos de texto, con un archivo por imagen, útil para análisis posteriores, posprocesamiento personalizado o integración con otros sistemas. |
save_conf |
bool |
False |
Si True incluye los valores de confianza en los archivos de texto guardados cuando save_txt se activa, proporcionando una salida más detallada para el análisis y el filtrado. |
save_crop |
bool |
False |
Si True guarda imágenes recortadas de los objetos detectados, que pueden ser útiles para crear conjuntos de datos específicos, verificación visual o análisis posteriores de detecciones individuales. |
workers |
int |
8 |
Número de subprocesos de trabajo para la carga de datos. Los valores más altos pueden acelerar el preprocesamiento de datos, pero pueden aumentar el uso de CPU . Si se establece en 0, se utiliza el subproceso principal, que puede ser más estable en algunos entornos. |
augment |
bool |
False |
Permite el aumento del tiempo de prueba (TTA) durante la validación, mejorando potencialmente la precisión de la detección a costa de la velocidad de inferencia mediante la ejecución de la inferencia en versiones transformadas de la entrada. |
agnostic_nms |
bool |
False |
Permite la supresión no máxima independiente de la clase, que fusiona las cajas superpuestas independientemente de su clase prevista. Resulta útil para aplicaciones centradas en instancias. |
single_cls |
bool |
False |
Trata todas las clases como una sola durante la validación. Resulta útil para evaluar el rendimiento del modelo en tareas de detección binarias o cuando la distinción de clases no es importante. |
Cada uno de estos ajustes desempeña un papel vital en el proceso de validación, permitiendo una evaluación personalizable y eficiente de los modelos de YOLO . Ajustar estos parámetros en función de sus necesidades y recursos específicos puede ayudar a lograr el mejor equilibrio entre precisión y rendimiento.
Ejemplo de validación con argumentos
Los siguientes ejemplos muestran la validación del modelo YOLO con argumentos personalizados en Python y CLI.
Ejemplo
PREGUNTAS FRECUENTES
¿Cómo puedo validar mi modelo YOLO11 con Ultralytics?
Para validar su modelo YOLO11 , puede utilizar el modo Val proporcionado por Ultralytics. Por ejemplo, utilizando la API Python , puede cargar un modelo y ejecutar la validación con:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Validate the model
metrics = model.val()
print(metrics.box.map) # map50-95
También puede utilizar la interfaz de línea de comandos (CLI):
Para una mayor personalización, puede ajustar varios argumentos como imgsz
, batch
y conf
en los modos Python y CLI . Compruebe la Argumentos para la validación de modelos YOLO para consultar la lista completa de parámetros.
¿Qué métricas puedo obtener de la validación del modelo YOLO11 ?
YOLO11 La validación de modelos proporciona varias métricas clave para evaluar el rendimiento de los modelos. Entre ellos se incluyen:
- mAP50 (Precisión media en el umbral IoU 0,5)
- mAP75 (Precisión media en el umbral IoU 0,75)
- mAP50-95 (precisión media en varios umbrales de IoU de 0,5 a 0,95)
A través de la API Python , puede acceder a estas métricas de la siguiente manera:
metrics = model.val() # assumes `model` has been loaded
print(metrics.box.map) # mAP50-95
print(metrics.box.map50) # mAP50
print(metrics.box.map75) # mAP75
print(metrics.box.maps) # list of mAP50-95 for each category
Para una evaluación completa del rendimiento, es crucial revisar todas estas métricas. Para más detalles, consulte las Características principales del modo Val.
¿Cuáles son las ventajas de utilizar Ultralytics YOLO para la validación?
El uso de Ultralytics YOLO para la validación ofrece varias ventajas:
- Precisión: YOLO11 ofrece métricas de rendimiento precisas que incluyen mAP50, mAP75 y mAP50-95.
- Comodidad: Los modelos recuerdan sus ajustes de entrenamiento, lo que facilita la validación.
- Flexibilidad: Puede validar contra el mismo o diferentes conjuntos de datos y tamaños de imagen.
- Ajuste de hiperparámetros: Las métricas de validación ayudan a ajustar los modelos para mejorar su rendimiento.
Estas ventajas garantizan que sus modelos se evalúen a fondo y puedan optimizarse para obtener resultados superiores. Obtenga más información sobre estas ventajas en la sección Por qué validar con Ultralytics YOLO .
¿Puedo validar mi modelo YOLO11 utilizando un conjunto de datos personalizado?
Sí, puede validar su modelo YOLO11 utilizando un conjunto de datos personalizado. Especifique el data
con la ruta al archivo de configuración del conjunto de datos. Este archivo debe incluir las rutas a los archivos datos de validaciónnombres de clase y otros detalles relevantes.
Ejemplo en Python:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map) # map50-95
Ejemplo con CLI:
Para más opciones personalizables durante la validación, consulte la sección Ejemplo de validación con argumentos.
¿Cómo puedo guardar los resultados de la validación en un archivo JSON en YOLO11?
Para guardar los resultados de la validación en un archivo JSON, puede establecer el parámetro save_json
argumento para True
al ejecutar la validación. Esto puede hacerse tanto en la API Python como en CLI.
Ejemplo en Python:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Save validation results to JSON
metrics = model.val(save_json=True)
Ejemplo con CLI:
Esta funcionalidad es especialmente útil para análisis posteriores o para la integración con otras herramientas. Consulte los Argumentos para la validación de modelos de YOLO para obtener más detalles.