Ir al contenido

Validación de modelos con Ultralytics YOLO

Ultralytics YOLO ecosistema e integraciones

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 o model('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
yolo detect val model=yolo11n.pt      # val official model
yolo detect val model=path/to/best.pt # val custom model

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 Trueguarda 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 Trueguarda 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:0etc.). En Noneselecciona automáticamente el mejor dispositivo disponible. Se pueden especificar varios dispositivos CUDA con separación por comas.
dnn bool False Si Trueutiliza 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 Truegenera 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 Trueutiliza 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, testo 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 Truemuestra 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 Trueincluye 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 Trueguarda 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

from ultralytics import YOLO

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

# Customize validation settings
validation_results = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolo11n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0

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):

yolo val model=yolo11n.pt

Para una mayor personalización, puede ajustar varios argumentos como imgsz, batchy 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:

yolo val model=yolo11n.pt data=path/to/your/custom_dataset.yaml

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:

yolo val model=yolo11n.pt save_json=True

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.

Creado hace 1 año ✏️ Actualizado hace 3 días

Comentarios