Información general sobre datasets de detección de objetos

Entrenar un modelo de detección de objetos robusto y preciso requiere un dataset completo. Esta guía presenta varios formatos de datasets compatibles con el modelo Ultralytics YOLO y ofrece información sobre su estructura, uso y cómo convertir entre diferentes formatos.

Formatos de dataset compatibles

Formato Ultralytics YOLO

El formato Ultralytics YOLO es un formato de configuración de dataset que te permite definir el directorio raíz del dataset, las rutas relativas a los directorios de imágenes de entrenamiento/validación/prueba o archivos *.txt que contienen las rutas de las imágenes, y un diccionario de nombres de clases. Aquí tienes un ejemplo:

ultralytics/cfg/datasets/coco8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

Las etiquetas para este formato deben exportarse al formato YOLO con un archivo *.txt por cada imagen. Si no hay objetos en una imagen, no se requiere ningún archivo *.txt. El archivo *.txt debe formatearse con una fila por objeto en formato class x_center y_center width height. Las coordenadas de la caja deben estar en formato xywh normalizado (de 0 a 1). Si tus cajas están en píxeles, debes dividir x_center y width por el ancho de la imagen, y y_center y height por el alto de la imagen. Los números de clase deben estar indexados en cero (empezando por 0).

YOLO labeled image with bounding boxes on persons and tie

El archivo de etiquetas correspondiente a la imagen anterior contiene 2 personas (clase 0) y una corbata (clase 27):

YOLO format label file with normalized coordinates

Al utilizar el formato Ultralytics YOLO, organiza tus imágenes y etiquetas de entrenamiento y validación como se muestra en el ejemplo del dataset COCO8 a continuación.

YOLO dataset directory structure with train and val folders

Ejemplo de uso

Aquí tienes cómo puedes utilizar los datasets en formato YOLO para entrenar tu modelo:

Ejemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Formato Ultralytics NDJSON

El formato NDJSON (Newline Delimited JSON) proporciona una forma alternativa de definir datasets para los modelos Ultralytics YOLO. Este formato almacena los metadatos y las anotaciones del dataset en un solo archivo donde cada línea contiene un objeto JSON separado.

Un archivo de dataset en NDJSON contiene:

  1. Registro del dataset (primera línea): contiene metadatos del dataset, incluido el tipo de tarea, los nombres de las clases e información general
  2. Registros de imágenes (líneas posteriores): contienen datos individuales de la imagen, incluidas las dimensiones, las anotaciones y las rutas de los archivos
Ejemplo de NDJSON
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://app.ultralytics.com/user/datasets/example",
    "class_names": { "0": "person", "1": "bicycle", "2": "car" },
    "bytes": 426342,
    "version": 0,
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2025-01-01T00:00:00Z"
}

Ejemplo de uso

Para utilizar un dataset NDJSON con YOLO26, simplemente especifica la ruta al archivo .ndjson:

Ejemplo
from ultralytics import YOLO

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

# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)

Ventajas del formato NDJSON

  • Archivo único: toda la información del dataset está contenida en un solo archivo
  • Streaming: puedes procesar datasets grandes línea por línea sin cargar todo en la memoria
  • Integración en la nube: admite URLs de imágenes remotas para entrenamiento basado en la nube
  • Extensible: fácil de añadir campos de metadatos personalizados
  • Control de versiones: el formato de archivo único funciona bien con git y sistemas de control de versiones

Datasets compatibles

Aquí tienes una lista de los datasets compatibles y una breve descripción de cada uno:

  • African-wildlife: un dataset que presenta imágenes de fauna africana, incluidos búfalos, elefantes, rinocerontes y cebras.
  • Argoverse: un dataset que contiene datos de seguimiento en 3D y previsión de movimiento de entornos urbanos con ricas anotaciones.
  • Brain-tumor: un dataset para detectar tumores cerebrales que incluye imágenes de resonancia magnética o tomografía computarizada con detalles sobre la presencia, ubicación y características del tumor.
  • COCO: Common Objects in Context (COCO) es un dataset de gran escala para detección de objetos, segmentación y subtitulado con 80 categorías de objetos.
  • COCO8: un subconjunto más pequeño de las primeras 4 imágenes de COCO train y COCO val, adecuado para pruebas rápidas.
  • COCO8-Grayscale: una versión en escala de grises de COCO8 creada convirtiendo RGB a escala de grises, útil para la evaluación de modelos de un solo canal.
  • COCO8-Multispectral: una versión multiespectral de 10 canales de COCO8 creada interpolando longitudes de onda RGB, útil para la evaluación de modelos con conciencia espectral.
  • COCO12-Formats: un dataset de prueba con 12 imágenes que cubre todos los formatos de imagen compatibles (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) para validar las canalizaciones de carga de imágenes.
  • COCO128: un subconjunto más pequeño de las primeras 128 imágenes de COCO train y COCO val, adecuado para pruebas.
  • Construction-PPE: un dataset que presenta trabajadores de obras de construcción con equipo de seguridad etiquetado como cascos, chalecos, guantes, botas y gafas, incluyendo anotaciones de equipo faltante como no_helmet, no_googles para el cumplimiento de normativas en el mundo real.
  • Global Wheat 2020: un dataset que contiene imágenes de cabezas de trigo para el Global Wheat Challenge 2020.
  • HomeObjects-3K: un dataset de artículos domésticos de interior que incluye camas, sillas, televisores y más, ideal para aplicaciones en automatización del hogar inteligente, robótica, realidad aumentada y análisis de distribución de habitaciones.
  • KITTI: un dataset que presenta escenas de conducción del mundo real con datos estéreo, LiDAR y GPS/IMU, utilizado aquí para tareas de detección de objetos 2D como identificar coches, peatones y ciclistas en entornos urbanos, rurales y de autopista.
  • LVIS: un dataset de detección, segmentación y subtitulado de objetos a gran escala con 1203 categorías de objetos.
  • Medical-pills: un dataset que presenta imágenes de pastillas médicas, anotadas para aplicaciones como control de calidad farmacéutico, clasificación de pastillas y cumplimiento normativo.
  • Objects365: un dataset de alta calidad y gran escala para la detección de objetos con 365 categorías de objetos y más de 600.000 imágenes anotadas.
  • OpenImagesV7: un dataset completo de Google con 1,7 millones de imágenes de entrenamiento y 42.000 imágenes de validación.
  • Roboflow 100: un benchmark diverso de detección de objetos con 100 datasets que abarcan siete dominios de imágenes para una evaluación integral del modelo.
  • Signature: un dataset que presenta imágenes de varios documentos con firmas anotadas, que respalda la investigación sobre verificación de documentos y detección de fraudes.
  • SKU-110K: un dataset que presenta detección de objetos densos en entornos minoristas con más de 11.000 imágenes y 1,7 millones de bounding boxes.
  • TT100K: explora el dataset de señales de tráfico Tsinghua-Tencent 100K (TT100K) con 100.000 imágenes de vista de calle y más de 30.000 señales de tráfico anotadas para una detección y clasificación robustas.
  • VisDrone: un dataset que contiene datos de detección de objetos y seguimiento de múltiples objetos a partir de imágenes capturadas por drones con más de 10.000 imágenes y secuencias de vídeo.
  • VOC: el dataset Pascal Visual Object Classes (VOC) para detección y segmentación de objetos con 20 clases de objetos y más de 11.000 imágenes.
  • xView: un dataset para la detección de objetos en imágenes aéreas con 60 categorías de objetos y más de 1 millón de objetos anotados.

Añadir tu propio dataset

Si tienes tu propio dataset y te gustaría usarlo para entrenar modelos de detección con el formato Ultralytics YOLO, asegúrate de que siga el formato especificado arriba bajo "Formato Ultralytics YOLO". Convierte tus anotaciones al formato requerido y especifica las rutas, el número de clases y los nombres de las clases en el archivo de configuración YAML.

Portar o convertir formatos de etiquetas

Formato de dataset COCO a formato YOLO

Puedes convertir fácilmente etiquetas del popular formato dataset COCO al formato YOLO utilizando el siguiente fragmento de código:

Ejemplo
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

Esta herramienta de conversión se puede utilizar para convertir el dataset COCO o cualquier dataset en formato COCO al formato Ultralytics YOLO. El proceso transforma las anotaciones COCO basadas en JSON al formato YOLO más simple basado en texto, haciéndolo compatible con los modelos Ultralytics YOLO.

Recuerda comprobar dos veces si el dataset que quieres utilizar es compatible con tu modelo y sigue las convenciones de formato necesarias. Los datasets correctamente formateados son cruciales para entrenar modelos de detección de objetos exitosos.

Preguntas frecuentes

¿Qué es el formato de dataset Ultralytics YOLO y cómo estructurarlo?

El formato Ultralytics YOLO es una configuración estructurada para definir datasets en tus proyectos de entrenamiento. Implica establecer rutas a tus imágenes de entrenamiento, validación y prueba y sus correspondientes etiquetas. Por ejemplo:

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

Las etiquetas se guardan en archivos *.txt con un archivo por imagen, formateados como class x_center y_center width height con coordenadas normalizadas. Para una guía detallada, consulta el ejemplo del dataset COCO8.

¿Cómo convierto un dataset COCO al formato YOLO?

Puedes convertir un dataset COCO al formato YOLO utilizando las herramientas de conversión de Ultralytics. Aquí tienes un método rápido:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

Este código convertirá tus anotaciones COCO al formato YOLO, permitiendo una integración perfecta con los modelos Ultralytics YOLO. Para obtener detalles adicionales, visita la sección Portar o convertir formatos de etiquetas.

¿Qué datasets son compatibles con Ultralytics YOLO para la detección de objetos?

Ultralytics YOLO admite una amplia gama de datasets, incluyendo:

Cada página de dataset proporciona información detallada sobre la estructura y el uso adaptado para un entrenamiento eficiente de YOLO26. Explora la lista completa en la sección Datasets compatibles.

¿Cómo empiezo a entrenar un modelo YOLO26 usando mi dataset?

Para empezar a entrenar un modelo YOLO26, asegúrate de que tu dataset esté formateado correctamente y que las rutas estén definidas en un archivo YAML. Utiliza el siguiente script para comenzar el entrenamiento:

Ejemplo
from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

Consulta la sección Uso para obtener más detalles sobre la utilización de diferentes modos, incluidos los comandos CLI.

¿Dónde puedo encontrar ejemplos prácticos del uso de Ultralytics YOLO para la detección de objetos?

Ultralytics ofrece numerosos ejemplos y guías prácticas para utilizar YOLO26 en diversas aplicaciones. Para obtener una visión general completa, visita el Blog de Ultralytics, donde encontrarás casos de estudio, tutoriales detallados e historias de la comunidad que muestran la detección de objetos, la segmentación y más con YOLO26. Para ejemplos específicos, consulta la sección Uso en la documentación.

Comentarios