Ultralytics YOLO27:

Descripción general de los conjuntos de datos de detección de objetos#

Entrenar un modelo sólido y preciso de detección de objetos requiere un conjunto de datos completo. Esta guía presenta varios formatos de conjuntos de datos compatibles con el modelo Ultralytics YOLO y ofrece información sobre su estructura, uso y conversión entre distintos formatos.

Formatos de conjuntos de datos compatibles#

Formato Ultralytics YOLO#

El formato Ultralytics YOLO es un formato de configuración de conjuntos de datos que te permite definir el directorio raíz del conjunto de datos, las rutas relativas a los directorios de imágenes de entrenamiento/validación/prueba o a los archivos *.txt que contienen rutas de imágenes, y un diccionario de nombres de clases. Este es 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

Cada uno de train, val y test acepta un directorio, una lista de directorios o un archivo *.txt que enumera una ruta de imagen por línea (las rutas que empiezan por ./ se resuelven en relación con el archivo *.txt). Un archivo *.txt resulta útil para entrenar con un subconjunto de un directorio, omitir imágenes sin etiquetas o combinar imágenes de varias fuentes en una división.

Rutas de imágenes en un archivo `*.txt`
path: datasets/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

Las etiquetas de este formato deben exportarse al formato YOLO, con un archivo *.txt por imagen. Si una imagen no contiene objetos, no se necesita ningún archivo *.txt. El archivo *.txt debe tener una fila por objeto en formato class x_center y_center width height. Las coordenadas de las cajas deben estar en formato xywh normalizado (de 0 a 1). Si tus cajas están expresadas en píxeles, divide x_center y width por el ancho de la imagen, y y_center y height por su altura. La numeración de las clases debe empezar en cero.

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 las imágenes y etiquetas de entrenamiento y validación como se muestra en el ejemplo del conjunto de datos COCO8 a continuación.

YOLO dataset directory structure with train and val folders

Ejemplo de uso#

Así puedes usar conjuntos de datos 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 (JSON delimitado por saltos de línea) ofrece una forma alternativa de definir conjuntos de datos para modelos Ultralytics YOLO. Este formato almacena los metadatos y las anotaciones del conjunto de datos en un único archivo, donde cada línea contiene un objeto JSON independiente.

Un archivo de conjunto de datos NDJSON contiene:

  1. Registro del conjunto de datos (primera línea): contiene los metadatos del conjunto de datos, incluido el tipo de tarea, los nombres de las clases y la información general
  2. Registros de imágenes (líneas posteriores): contienen los datos individuales de cada imagen, incluidas las dimensiones, las anotaciones y las rutas de archivo
Ejemplo de NDJSON
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://platform.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"
}

Metadatos de imagen personalizados#

Cada registro de imagen puede incluir un objeto JSON metadata para información contextual específica de la aplicación, como las condiciones de captura, los identificadores del equipo o el estado de revisión. Se admiten valores anidados. Al importar la imagen en Ultralytics Platform, los metadatos se almacenan con ella y puedes verlos o editarlos desde su panel de información a pantalla completa.

{
    "type": "image",
    "file": "airbus-wing.jpg",
    "url": "https://example.com/airbus-wing.jpg",
    "split": "train",
    "metadata": {
        "aircraft": { "family": "A350", "section": "wing" },
        "inspectionStatus": "reviewed"
    }
}

La plataforma limita las claves de metadatos de nivel superior a 128 caracteres, el objeto de metadatos serializado de cada imagen a 500.000 caracteres y los metadatos efectivos combinados de una importación NDJSON a 500.000 caracteres.

Ejemplo de uso#

Para usar un conjunto de datos NDJSON con YOLO26, solo tienes que especificar 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 conjunto de datos se contiene en un solo archivo
  • Streaming: permite procesar grandes conjuntos de datos línea a línea sin cargarlo todo en memoria
  • Integración en la nube: admite URL de imágenes remotas para el entrenamiento basado en la nube
  • Ampliable: permite añadir fácilmente campos de metadatos personalizados
  • Control de versiones: el formato de archivo único funciona bien con git y los sistemas de control de versiones

Conjuntos de datos compatibles#

Aquí tienes una lista de los conjuntos de datos compatibles y una breve descripción de cada uno. La mayoría de estos conjuntos de datos también están alojados en Ultralytics Platform, donde puedes explorar las imágenes y las anotaciones, ver las estadísticas de los conjuntos de datos y clonarlos para el entrenamiento en la nube.

  • African-wildlife: un conjunto de datos con imágenes de fauna africana, incluidos búfalos, elefantes, rinocerontes y cebras.
  • Argoverse: un dataset con datos de seguimiento 3D y predicción del movimiento en entornos urbanos, con anotaciones detalladas.
  • Brain-tumor: un conjunto de datos para detectar tumores cerebrales que incluye imágenes de resonancias magnéticas o tomografías computarizadas con información sobre la presencia, la ubicación y las características de los tumores.
  • COCO: Common Objects in Context (COCO) es un conjunto de datos a gran escala de detección de objetos, segmentación y generación de descripciones, con 80 categorías de objetos.
  • COCO8: Un subconjunto más pequeño de las primeras 8 imágenes de COCO train2017, 4 para entrenamiento y 4 para validación, adecuado para pruebas rápidas.
  • COCO8-Grayscale: una versión en escala de grises de COCO8 creada al convertir RGB a escala de grises, útil para evaluar modelos de un solo canal.
  • COCO8-Multispectral: una versión multiespectral de COCO8 con 10 canales, creada mediante la interpolación de longitudes de onda RGB, útil para evaluar modelos sensibles al espectro.
  • COCO12-Formats: un conjunto de datos de prueba con 12 imágenes que cubren 12 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.
  • COCO16: un subconjunto de las primeras 16 imágenes de COCO train2017 (8 de entrenamiento + 8 de validación), adecuado para pruebas rápidas.
  • COCO32: un subconjunto de las primeras 32 imágenes de COCO train2017 (16 de entrenamiento + 16 de validación), adecuado para pruebas rápidas.
  • COCO64: un subconjunto de las primeras 64 imágenes de COCO train2017 (32 de entrenamiento + 32 de validación), adecuado para pruebas rápidas.
  • COCO128: un subconjunto más pequeño de las 128 primeras imágenes de COCO train2017, adecuado para pruebas.
  • Construction-PPE: un conjunto de datos con trabajadores de obras que llevan equipos de seguridad etiquetados, como cascos, chalecos, guantes, botas y gafas, e incluye anotaciones de equipos ausentes como no_helmet y no_goggle para la supervisión del cumplimiento en situaciones reales.
  • Global Wheat 2020: un dataset con imágenes de espigas de trigo para el Global Wheat Challenge 2020.
  • HomeObjects-3K: un conjunto de datos de objetos domésticos de interior, como camas, sillas, televisores y más, ideal para aplicaciones de domótica, robótica, realidad aumentada y análisis de la distribución de habitaciones.
  • KITTI: un conjunto de datos con escenas de conducción del mundo real y 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 a gran escala de detección, segmentación y generación de descripciones de objetos, con 1203 categorías de objetos.
  • Medical-pills: un conjunto de datos con imágenes de pastillas médicas, anotadas para aplicaciones como el control de calidad farmacéutico, la clasificación de pastillas y el cumplimiento normativo.
  • Objects365: un dataset de alta calidad y a gran escala para la detección de objetos, con 365 categorías de objetos y más de 600K imágenes anotadas.
  • OpenImagesV7: un dataset completo de Google con 1,7 M de imágenes de entrenamiento y 42k imágenes de validación.
  • Roboflow 100: un benchmark diverso de detección de objetos con 100 conjuntos de datos de siete dominios de imágenes para una evaluación exhaustiva de modelos.
  • Signature: un dataset con imágenes de diversos documentos que incluyen firmas anotadas, compatible con la investigación sobre verificación de documentos y detección de fraudes.
  • SKU-110K: un conjunto de datos con detección densa de objetos en entornos comerciales, con más de 11K imágenes y 1,7 millones de cajas delimitadoras.
  • TT100K: explora el conjunto de datos de señales de tráfico Tsinghua-Tencent 100K (TT100K), con 16.817 imágenes de vistas de calle distribuidas en 221 categorías de señales para una detección y clasificación sólidas.
  • VisDrone: un dataset con datos de detección de objetos y seguimiento multiobjeto procedentes de imágenes capturadas por drones, con más de 10K imágenes y secuencias de vídeo.
  • VOC: el dataset Pascal Visual Object Classes (VOC) para la detección y segmentación de objetos, con 20 clases de objetos y más de 11K 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 conjunto de datos#

Si tienes tu propio conjunto de datos y quieres utilizarlo para entrenar modelos de detección con el formato Ultralytics YOLO, asegúrate de que siga el formato especificado anteriormente en «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.

Adaptar o convertir formatos de etiquetas#

Convertir el formato de conjunto de datos COCO al formato YOLO#

Puedes convertir fácilmente las etiquetas del popular formato del conjunto de datos COCO al formato YOLO mediante 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 conjunto de datos COCO o cualquier conjunto de datos en formato COCO al formato Ultralytics YOLO. El proceso transforma las anotaciones COCO basadas en JSON en el formato YOLO basado en texto, más sencillo y compatible con los modelos Ultralytics YOLO. Para ver el flujo de trabajo completo —incluida la asignación de ID de clases, la estructura de directorios y las anotaciones de segmentación o pose—, consulta Convertir anotaciones COCO a YOLO.

Recuerda comprobar minuciosamente que el conjunto de datos que quieres usar sea compatible con tu modelo y siga las convenciones de formato necesarias. Los conjuntos de datos con el formato correcto son fundamentales para entrenar modelos de detección de objetos eficaces.

¿Y ahora qué?#

Una vez formateado el conjunto de datos, empieza a entrenar tu modelo. ¿No sabes con qué modelo preentrenado empezar? Compara las opciones de la familia de modelos YOLO26.

Preguntas frecuentes#

  • El formato Ultralytics YOLO es una configuración estructurada para definir conjuntos de datos en tus proyectos de entrenamiento. Consiste en establecer las rutas a las imágenes de entrenamiento, validación y prueba, y a sus etiquetas correspondientes. 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, uno por imagen, con el formato class x_center y_center width height y coordenadas normalizadas. Para obtener una guía detallada, consulta el ejemplo del conjunto de datos COCO8.

  • Puedes convertir un conjunto de datos COCO al formato YOLO mediante las herramientas de conversión de Ultralytics. Este es 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, lo que permite una integración fluida con los modelos Ultralytics YOLO. Para obtener más información, visita la sección Adaptar o convertir formatos de etiquetas.

  • Ultralytics YOLO admite una amplia variedad de conjuntos de datos, entre ellos:

    Cada página de conjunto de datos proporciona información detallada sobre su estructura y uso, adaptada para un entrenamiento eficiente de YOLO26. Explora la lista completa en la sección Conjuntos de datos compatibles.

  • Para empezar a entrenar un modelo YOLO26, asegúrate de que tu conjunto de datos tenga el formato correcto y de 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 información sobre cómo utilizar los distintos modos, incluidos los comandos de CLI.

  • Ultralytics ofrece numerosos ejemplos y guías prácticas para usar YOLO26 en diversas aplicaciones. Para obtener una descripción general completa, visita el blog de Ultralytics, donde encontrarás casos prácticos, tutoriales detallados e historias de la comunidad que muestran la detección de objetos, la segmentación y mucho más con YOLO26. Para consultar ejemplos específicos, revisa la sección Uso de la documentación.

Comentarios