Saltar a contenido

Clasificación de Imágenes

Ejemplos de clasificación de imágenes

La clasificación de imágenes es la tarea más sencilla de las tres y consiste en clasificar una imagen completa en una de un conjunto de clases predefinidas.

La salida de un clasificador de imágenes es una única etiqueta de clase y una puntuación de confianza. La clasificación de imágenes es útil cuando solo necesita saber a qué clase pertenece una imagen y no necesita conocer dónde están ubicados los objetos de esa clase o cuál es su forma exacta.

Consejo

Los modelos YOLOv8 Classify utilizan el sufijo -cls, por ejemplo, yolov8n-cls.pt y están preentrenados en ImageNet.

Modelos

Los modelos Classify preentrenados YOLOv8 se muestran aquí. Los modelos Detect, Segment y Pose están preentrenados en el conjunto de datos COCO, mientras que los modelos Classify están preentrenados en el conjunto de datos ImageNet.

Los modelos se descargan automáticamente desde el último lanzamiento de Ultralytics en el primer uso.

Modelo Tamaño
(píxeles)
Exactitud
top1
Exactitud
top5
Velocidad
CPU ONNX
(ms)
Velocidad
A100 TensorRT
(ms)
Parámetros
(M)
FLOPs
(B) en 640
YOLOv8n-cls 224 66.6 87.0 12.9 0.31 2.7 4.3
YOLOv8s-cls 224 72.3 91.1 23.4 0.35 6.4 13.5
YOLOv8m-cls 224 76.4 93.2 85.4 0.62 17.0 42.7
YOLOv8l-cls 224 78.0 94.1 163.0 0.87 37.5 99.7
YOLOv8x-cls 224 78.4 94.3 232.0 1.01 57.4 154.8
  • Los valores de Exactitud son las precisiones de los modelos en el conjunto de datos de validación de ImageNet.
    Para reproducir usar yolo val classify data=path/to/ImageNet device=0
  • Velocidad promediada sobre imágenes de validación de ImageNet usando una instancia de Amazon EC2 P4d
    Para reproducir usar yolo val classify data=path/to/ImageNet batch=1 device=0|cpu

Entrenamiento

Entrena el modelo YOLOv8n-cls en el conjunto de datos MNIST160 durante 100 épocas con un tamaño de imagen de 64. Para obtener una lista completa de argumentos disponibles, consulte la página de Configuración.

Ejemplo

from ultralytics import YOLO

# Cargar un modelo
model = YOLO('yolov8n-cls.yaml')  # construir un nuevo modelo desde YAML
model = YOLO('yolov8n-cls.pt')  # cargar un modelo preentrenado (recomendado para entrenamiento)
model = YOLO('yolov8n-cls.yaml').load('yolov8n-cls.pt')  # construir desde YAML y transferir pesos

# Entrenar el modelo
results = model.train(data='mnist160', epochs=100, imgsz=64)
# Construir un nuevo modelo desde YAML y empezar entrenamiento desde cero
yolo classify train data=mnist160 model=yolov8n-cls.yaml epochs=100 imgsz=64

# Empezar entrenamiento desde un modelo *.pt preentrenado
yolo classify train data=mnist160 model=yolov8n-cls.pt epochs=100 imgsz=64

# Construir un nuevo modelo desde YAML, transferir pesos preentrenados e iniciar entrenamiento
yolo classify train data=mnist160 model=yolov8n-cls.yaml pretrained=yolov8n-cls.pt epochs=100 imgsz=64

Formato del conjunto de datos

El formato del conjunto de datos de clasificación YOLO puede encontrarse en detalle en la Guía de Conjuntos de Datos.

Validación

Validar la exactitud del modelo YOLOv8n-cls entrenado en el conjunto de datos MNIST160. No es necesario pasar ningún argumento ya que el modelo retiene su data y argumentos como atributos del modelo.

Ejemplo

from ultralytics import YOLO

# Cargar un modelo
model = YOLO('yolov8n-cls.pt')  # cargar un modelo oficial
model = YOLO('path/to/best.pt')  # cargar un modelo personalizado

# Validar el modelo
metrics = model.val()  # no se necesitan argumentos, el conjunto de datos y configuraciones se recuerdan
metrics.top1   # precisión top1
metrics.top5   # precisión top5
yolo classify val model=yolov8n-cls.pt  # validar modelo oficial
yolo classify val model=path/to/best.pt  # validar modelo personalizado

Predicción

Usar un modelo YOLOv8n-cls entrenado para realizar predicciones en imágenes.

Ejemplo

from ultralytics import YOLO

# Cargar un modelo
model = YOLO('yolov8n-cls.pt')  # cargar un modelo oficial
model = YOLO('path/to/best.pt')  # cargar un modelo personalizado

# Predecir con el modelo
results = model('https://ultralytics.com/images/bus.jpg')  # predecir en una imagen
yolo classify predict model=yolov8n-cls.pt source='https://ultralytics.com/images/bus.jpg'  # predecir con modelo oficial
yolo classify predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # predecir con modelo personalizado

Ver detalles completos del modo predict en la página de Predicción.

Exportación

Exportar un modelo YOLOv8n-cls a un formato diferente como ONNX, CoreML, etc.

Ejemplo

from ultralytics import YOLO

# Cargar un modelo
model = YOLO('yolov8n-cls.pt')  # cargar un modelo oficial
model = YOLO('path/to/best.pt')  # cargar un modelo entrenado personalizado

# Exportar el modelo
model.export(format='onnx')
yolo export model=yolov8n-cls.pt format=onnx  # exportar modelo oficial
yolo export model=path/to/best.pt format=onnx  # exportar modelo entrenado personalizado

Los formatos de exportación disponibles para YOLOv8-cls se encuentran en la tabla a continuación. Puede predecir o validar directamente en modelos exportados, por ejemplo, yolo predict model=yolov8n-cls.onnx. Ejemplos de uso se muestran para su modelo después de que se completa la exportación.

Formato Argumento format Modelo Metadatos Argumentos
PyTorch - yolov8n-cls.pt -
TorchScript torchscript yolov8n-cls.torchscript imgsz, optimize
ONNX onnx yolov8n-cls.onnx imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n-cls_openvino_model/ imgsz, half
TensorRT engine yolov8n-cls.engine imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n-cls.mlpackage imgsz, half, int8, nms
TF SavedModel saved_model yolov8n-cls_saved_model/ imgsz, keras
TF GraphDef pb yolov8n-cls.pb imgsz
TF Lite tflite yolov8n-cls.tflite imgsz, half, int8
TF Edge TPU edgetpu yolov8n-cls_edgetpu.tflite imgsz
TF.js tfjs yolov8n-cls_web_model/ imgsz
PaddlePaddle paddle yolov8n-cls_paddle_model/ imgsz
ncnn ncnn yolov8n-cls_ncnn_model/ imgsz, half

Vea detalles completos de exportación en la página de Exportación.


Created 2023-11-13, Updated 2023-11-18
Authors: glenn-jocher (4)

Comentarios