Ir al contenido

Descripción general de los conjuntos de datos 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 que son compatibles con el modelo Ultralytics YOLO y proporciona información sobre su estructura, uso y cómo convertir entre diferentes 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 le 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 *.txt archivos que contienen rutas de imágenes y un diccionario de nombres de clases. Aquí hay 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 a formato YOLO con una *.txt archivo por imagen. Si no hay objetos en una imagen, no hay *.txt archivo es obligatorio. El *.txt archivo debe tener el formato de una fila por objeto en class x_center y_center width height formato. Las coordenadas del cuadro deben estar en formato xywh normalizado formato (de 0 a 1). Si tus cuadros están en píxeles, debes dividir x_center y width por el ancho de la imagen, y y_center y height por la altura de la imagen. Los números de clase deben tener un índice de base cero (comenzar con 0).

Ejemplo de imagen etiquetada

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

Ejemplo de archivo de etiquetas

Cuando utilice el formato Ultralytics YOLO, organice sus imágenes y etiquetas de entrenamiento y validación como se muestra en el ejemplo del conjunto de datos COCO8 a continuación.

Ejemplo de estructura de directorio del dataset

Ejemplo de uso

Aquí le mostramos cómo puede utilizar conjuntos de datos en formato YOLO para entrenar su modelo:

Ejemplo

from ultralytics import YOLO

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

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640

Formato NDJSON de Ultralytics

El formato NDJSON (JSON Delimitado por Nueva Línea) proporciona una forma alternativa de definir conjuntos de datos para los modelos YOLO11 de Ultralytics. Este formato almacena los metadatos y las anotaciones del conjunto de datos en un único archivo donde cada línea contiene un objeto JSON separado.

Un archivo de conjunto de datos NDJSON contiene:

  1. Registro del conjunto de datos (primera línea): Contiene metadatos del conjunto de datos, incluyendo el tipo de tarea, los nombres de las clases e información general
  2. Registros de imágenes (líneas siguientes): Contiene datos de imágenes individuales, incluyendo dimensiones, anotaciones y rutas de archivo

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"
}
{
    "type": "image",
    "file": "image1.jpg",
    "url": "https://www.url.com/path/to/image1.jpg",
    "width": 640,
    "height": 480,
    "split": "train",
    "annotations": {
        "boxes": [
            [0, 0.52481, 0.37629, 0.28394, 0.41832],
            [1, 0.73526, 0.29847, 0.19275, 0.33691]
        ]
    }
}

Formatos de anotación por tarea:

  • Detección: "annotations": {"boxes": [[class_id, x_center, y_center, width, height], ...]}
  • Segmentación: "annotations": {"segments": [[class_id, x1, y1, x2, y2, ...], ...]}
  • Pose: "annotations": {"pose": [[class_id, x1, y1, v1, x2, y2, v2, ...], ...]}
  • OBB: "annotations": {"obb": [[class_id, x_center, y_center, width, height, angle], ...]}
  • Clasificación: "annotations": {"classification": [class_id]}

Ejemplo de uso

Para utilizar un conjunto de datos NDJSON con YOLO11, simplemente especifica la ruta al .ndjson archivo:

Ejemplo

from ultralytics import YOLO

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

# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)
# Start training with NDJSON dataset
yolo detect train data=path/to/dataset.ndjson model=yolo11n.pt epochs=100 imgsz=640

Ventajas del formato NDJSON

  • Archivo único: Toda la información del conjunto de datos contenida en un solo archivo
  • Streaming: Puede procesar grandes conjuntos de datos línea por línea sin cargar todo en la memoria
  • Integración en la nube: Admite URL de imágenes remotas para el 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 los sistemas de control de versiones

Conjuntos de Datos Compatibles

Aquí hay una lista de los conjuntos de datos admitidos y una breve descripción de cada uno:

  • Argoverse: Un conjunto de datos que contiene información de seguimiento 3D y previsión de movimiento de entornos urbanos con anotaciones enriquecidas.
  • COCO: Common Objects in Context (COCO) es un conjunto de datos a gran escala de detección de objetos, segmentación y subtitulado con 80 categorías de objetos.
  • LVIS: Un conjunto de datos a gran escala para la detección de objetos, la segmentación y la descripción de imágenes con 1203 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 al convertir 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 reconocimiento espectral.
  • COCO128: Un subconjunto más pequeño de las primeras 128 imágenes de COCO train y COCO val, adecuado para pruebas.
  • Global Wheat 2020: Un conjunto de datos que contiene imágenes de espigas de trigo para el Global Wheat Challenge 2020.
  • Objects365: Un conjunto de datos a gran escala y de alta calidad para la detección de objetos con 365 categorías de objetos y más de 600.000 imágenes anotadas.
  • OpenImagesV7: Un conjunto de datos completo de Google con 1,7 millones de imágenes de entrenamiento y 42.000 imágenes de validación.
  • SKU-110K: Un conjunto de datos que presenta detección densa de objetos en entornos minoristas con más de 11 000 imágenes y 1,7 millones de cuadros delimitadores.
  • HomeObjects-3K Nuevo 🚀: Un conjunto de datos 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.
  • VisDrone: Un conjunto de datos que contiene datos de detección de objetos y seguimiento multi-objeto de imágenes capturadas por drones con más de 10.000 imágenes y secuencias de vídeo.
  • VOC: El conjunto de datos Pascal Visual Object Classes (VOC) para la detección y segmentación de objetos con 20 clases de objetos y más de 11.000 imágenes.
  • xView: Un conjunto de datos 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.
  • Roboflow 100: Un diverso benchmark de detección de objetos con 100 conjuntos de datos que abarcan siete dominios de imágenes para una evaluación exhaustiva del modelo.
  • Brain-tumor: Un conjunto de datos para la detección de tumores cerebrales que incluye imágenes de resonancia magnética o tomografía computarizada con detalles sobre la presencia, la ubicación y las características del tumor.
  • African-wildlife: Un conjunto de datos que presenta imágenes de la vida silvestre africana, incluyendo búfalos, elefantes, rinocerontes y cebras.
  • Signature: Un conjunto de datos que presenta imágenes de varios documentos con firmas anotadas, que respaldan la verificación de documentos y la investigación de detección de fraudes.
  • Medical-pills: Un conjunto de datos con imágenes de píldoras médicas, anotadas para aplicaciones como el control de calidad farmacéutica, la clasificación de píldoras y el cumplimiento normativo.

Añadir tu propio conjunto de datos

Si tiene su propio conjunto de datos y le gustaría usarlo para entrenar modelos de detección con el formato Ultralytics YOLO, asegúrese de que siga el formato especificado anteriormente en "Formato Ultralytics YOLO". Convierta sus anotaciones al formato requerido y especifique 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

Formato de Conjunto de Datos COCO a Formato YOLO

Puede convertir fácilmente etiquetas del popular formato de conjunto de datos 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 conjunto de datos COCO o cualquier conjunto de datos en el formato COCO al formato Ultralytics YOLO. El proceso transforma las anotaciones COCO basadas en JSON en el formato YOLO más simple basado en texto, haciéndolo compatible con los modelos Ultralytics YOLO.

Recuerde verificar si el dataset que desea utilizar es compatible con su modelo y sigue las convenciones de formato necesarias. Los datasets formateados correctamente son cruciales para entrenar modelos de detección de objetos exitosos.

Preguntas frecuentes

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

El formato Ultralytics YOLO es una configuración estructurada para definir conjuntos de datos en sus proyectos de entrenamiento. Implica establecer rutas a sus imágenes de entrenamiento, validación y prueba, y las 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 *.txt archivos con un archivo por imagen, formateados como class x_center y_center width height con coordenadas normalizadas. Para una guía detallada, consulte el Ejemplo del conjunto de datos COCO8.

¿Cómo convierto un conjunto de datos COCO al formato YOLO?

Puede convertir un conjunto de datos COCO al formato YOLO utilizando las herramientas de conversión de Ultralytics. Aquí tiene 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 YOLO de Ultralytics. Para obtener detalles adicionales, visita la sección Port or Convert Label Formats.

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

Ultralytics YOLO admite una amplia gama de conjuntos de datos, incluyendo:

Cada página de conjunto de datos proporciona información detallada sobre la estructura y el uso, adaptada para un entrenamiento eficiente de YOLO11. Explore la lista completa en la sección Conjuntos de datos admitidos.

¿Cómo empiezo a entrenar un modelo YOLO11 usando mi conjunto de datos?

Para comenzar a entrenar un modelo YOLO11, asegúrate de que tu conjunto de datos esté formateado correctamente 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("yolo11n.pt")  # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo detect train data=path/to/your_dataset.yaml model=yolo11n.pt epochs=100 imgsz=640

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

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

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



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

Comentarios