Saltar al contenido

Validación del modelo con Ultralytics YOLO

Ultralytics YOLO ecosistema e integraciones

Introducción

La validación es un paso crítico en el proceso de aprendizaje automático, que te permite evaluar la calidad de tus modelos entrenados. El modo Val de Ultralytics YOLOv8 proporciona un sólido conjunto de herramientas y métricas para evaluar el rendimiento de tus modelos de detección de objetos. Esta guía es un recurso completo para comprender cómo utilizar eficazmente el modo Val para asegurarte de que tus 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 YOLOv8:

  • Precisión: Obtén métricas precisas como mAP50, mAP75 y mAP50-95 para evaluar exhaustivamente tu modelo.
  • Comodidad: Utiliza funciones integradas que recuerden los ajustes de entrenamiento, simplificando el proceso de validación.
  • Flexibilidad: Valida tu modelo con los mismos o diferentes conjuntos de datos y tamaños de imagen.
  • Ajuste de hiperparámetros: Utiliza las métricas de validación para ajustar tu modelo y obtener un mejor rendimiento.

Características principales del modo Val

Estas son las funcionalidades destacadas que ofrece el modo Val de YOLOv8:

  • Configuraciones automatizadas: Los modelos recuerdan sus configuraciones de entrenamiento para una validación sencilla.
  • Soporte multimétrico: Evalúa tu modelo basándote en una serie de métricas de precisión.
  • CLI y la API Python : Elige entre la interfaz de línea de comandos o la API Python en función de tus preferencias de validación.
  • Compatibilidad de datos: Funciona perfectamente con los conjuntos de datos utilizados durante la fase de entrenamiento, así como con conjuntos de datos personalizados.

Consejo

  • YOLOv8 recuerdan automáticamente sus ajustes de entrenamiento, por lo que puedes validar un modelo con el mismo tamaño de imagen y en el conjunto de datos original fácilmente con sólo yolo val model=yolov8n.pt o model('yolov8n.pt').val()

Ejemplos de uso

Valida la precisión del modelo entrenado YOLOv8n en el conjunto de datos COCO128. No es necesario pasar ningún argumento model conserva su formación data y los argumentos como atributos del modelo. Consulta la sección Argumentos para ver una lista completa de los argumentos de exportación.

Ejemplo

from ultralytics import YOLO

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

Argumentos para la validación del modelo YOLO

Al validar los modelos YOLO , se pueden ajustar 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 ayudarte a personalizar eficazmente tus 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, coco128.yaml). Este archivo incluye las rutas a los datos de validación, los nombres de las clases y el 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 procesarlas.
batch int 16 Establece el número de imágenes por lote. Utiliza -1 para AutoBatch, que se ajusta automáticamente en función de la disponibilidad de memoria de la GPU.
save_json bool False Si True, guarda los resultados en un archivo JSON para su posterior análisis o integración con otras herramientas.
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.
conf float 0.001 Establece el umbral mínimo de confianza para las detecciones. Las detecciones con una confianza inferior a este umbral se descartan.
iou float 0.6 Establece el umbral de Intersección Sobre Unión (IoU) para la Supresión No Máxima (NMS). Ayuda a reducir las detecciones duplicadas.
max_det int 300 Limita el número máximo de detecciones por imagen. Útil en escenas densas para evitar detecciones excesivas.
half bool True Permite 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:0etc.). Permite flexibilidad en la utilización de recursos de CPU o GPU.
dnn bool False Si True, utiliza el módulo DNN de OpenCV para la inferencia del modelo ONNX , ofreciendo una alternativa a los métodos de inferencia de PyTorch .
plots bool False Cuando se ajusta a Truegenera y guarda gráficos de predicciones frente a la verdad sobre el terreno para evaluar visualmente el rendimiento del modelo.
rect bool False Si Trueutiliza la inferencia rectangular para la dosificación, reduciendo el relleno y aumentando potencialmente la velocidad y la eficacia.
split str val Determina la división del conjunto de datos que se utilizará para la validación (val, testo train). Permite flexibilidad en la elección del segmento de datos para la evaluación del rendimiento.

Cada uno de estos ajustes desempeña un papel vital en el proceso de validación, permitiendo una evaluación personalizable y eficaz de los modelos YOLO . Ajustar estos parámetros según tus necesidades y recursos específicos puede ayudarte a conseguir 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('yolov8n.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=yolov8n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0


Creado 2023-11-12, Actualizado 2024-03-03
Autores: glenn-jocher (8), Burhan-Q (1), chr043416@gmail.com (1)

Comentarios