YOLO Vision 2026:

Descripción general de los conjuntos de datos de segmentación de instancias#

La segmentación de instancias es una tarea de visión por ordenador que consiste en identificar y delimitar objetos individuales dentro de una imagen. Esta guía ofrece una descripción general de los formatos de conjuntos de datos compatibles con Ultralytics YOLO para tareas de segmentación de instancias, junto con instrucciones para preparar, convertir y utilizar estos conjuntos de datos para entrenar tus modelos.

Formatos de conjuntos de datos compatibles#

Formato Ultralytics YOLO#

El formato de etiquetas del conjunto de datos utilizado para entrenar modelos de segmentación YOLO es el siguiente:

  1. Un archivo de texto por imagen: cada imagen del conjunto de datos tiene un archivo de texto correspondiente con el mismo nombre que el archivo de imagen y la extensión ".txt".
  2. Una fila por objeto: cada fila del archivo de texto corresponde a una instancia de objeto de la imagen.
  3. Información del objeto por fila: cada fila contiene la siguiente información sobre la instancia de objeto:
    • Índice de clase del objeto: un entero que representa la clase del objeto (por ejemplo, 0 para una persona, 1 para un coche, etc.).
    • Coordenadas de los polígonos de objetos: Los puntos (x, y) que delimitan la máscara del objeto, normalizados para estar entre 0 y 1.

El formato de una sola fila del archivo del conjunto de datos de segmentación es el siguiente:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

En este formato, <class-index> es el índice de la clase del objeto, y <x1> <y1> <x2> <y2> ... <xn> <yn> son las coordenadas poligonales normalizadas de la máscara de segmentación del objeto (los valores están en [0, 1] con respecto a la anchura y la altura de la imagen). Las coordenadas están separadas por espacios.

Este es un ejemplo del formato de conjunto de datos YOLO para una sola imagen con dos objetos formados por un segmento de 3 puntos y otro de 5 puntos.

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104
Consejo
  • La longitud de cada fila no tiene que ser igual.
  • Cada etiqueta de segmentación debe tener un mínimo de 3 puntos (x, y): <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Formato YAML del conjunto de datos#

El framework de Ultralytics utiliza un formato de archivo YAML para definir el conjunto de datos y la configuración del modelo para entrenar modelos de segmentación. Este es un ejemplo del formato YAML utilizado para definir un conjunto de datos de segmentación:

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

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← 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-seg # 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-seg.zip

Los campos train, val y test apuntan a las imágenes de entrenamiento, validación y prueba. Cada uno 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 sola división.

Rutas de imágenes en un archivo `*.txt`
path: datasets/coco8-seg # 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

names es un diccionario de nombres de clase. El orden de los nombres debe coincidir con el orden de los índices de clase de los objetos en los archivos del conjunto de datos YOLO.

Uso#

Ejemplo
from ultralytics import YOLO

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

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

Conjuntos de datos compatibles#

Ultralytics YOLO admite varios conjuntos de datos para tareas de segmentación de instancias. Aquí tienes una lista de los más utilizados. La mayoría de estos conjuntos de datos también están alojados en Ultralytics Platform, donde puedes explorar las imágenes y anotaciones, ver las estadísticas de los conjuntos de datos y clonarlos para el entrenamiento en la nube.

  • Carparts-seg: un conjunto de datos especializado en la segmentación de piezas de automóviles, ideal para aplicaciones del sector de la automoción. Incluye diversos vehículos con anotaciones detalladas de sus componentes individuales.
  • COCO: un conjunto de datos completo para la detección de objetos, la segmentación y la descripción de imágenes, con más de 200 000 imágenes etiquetadas de una amplia variedad de categorías.
  • COCO8-seg: un subconjunto compacto de COCO de 8 imágenes, diseñado para probar rápidamente el entrenamiento de modelos de segmentación, ideal para comprobaciones de CI y la validación de flujos de trabajo en el repositorio ultralytics.
  • COCO128-seg: un conjunto de datos más pequeño para tareas de segmentación de instancias, que contiene un subconjunto de 128 imágenes de COCO con anotaciones de segmentación.
  • Crack-seg: un conjunto de datos diseñado para segmentar grietas en diversas superficies. Es esencial para el mantenimiento de infraestructuras y el control de calidad, y proporciona imágenes detalladas para entrenar modelos que identifiquen debilidades estructurales.
  • Package-seg: un conjunto de datos dedicado a la segmentación de distintos tipos y formas de materiales de embalaje. Es especialmente útil para la logística y la automatización de almacenes, y facilita el desarrollo de sistemas de manipulación y clasificación de paquetes.

Añadir tu propio conjunto de datos#

Si tienes tu propio conjunto de datos y quieres utilizarlo para entrenar modelos de segmentación con el formato Ultralytics YOLO, asegúrate de que sigue 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 clase en el archivo de configuración YAML. Mantén images/ y labels/ como carpetas independientes al mismo nivel, con una estructura de subcarpetas coincidente; colocar los archivos de etiquetas .txt en la carpeta de imágenes puede hacer que el modelo no detecte las etiquetas.

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 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/", use_segments=True)

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.

Recuerda comprobar de nuevo que el conjunto de datos que quieres utilizar es compatible con tu modelo y sigue las convenciones de formato necesarias. Los conjuntos de datos con el formato correcto son fundamentales para entrenar modelos de segmentación eficaces.

Anotación automática#

La anotación automática es una función esencial que permite generar un conjunto de datos de segmentación utilizando un modelo de detección preentrenado. Permite anotar de forma rápida y precisa un gran número de imágenes sin necesidad de etiquetarlas manualmente, lo que ahorra tiempo y esfuerzo.

Generar un conjunto de datos de segmentación utilizando un modelo de detección#

Para anotar automáticamente tu conjunto de datos mediante el framework de Ultralytics, puedes utilizar la función auto_annotate, como se muestra a continuación:

Ejemplo
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")
ArgumentoTipoPredeterminadoDescripción
datastrobligatorioRuta al directorio que contiene las imágenes de destino para la anotación o segmentación.
det_modelstr'yolo26x.pt'Ruta al modelo de detección YOLO para la detección inicial de objetos.
sam_modelstr'sam_b.pt'Ruta al modelo SAM para la segmentación (admite los pesos de SAM, SAM 2, MobileSAM y SAM 3).
devicestr''Dispositivo de cálculo (por ejemplo, 'cuda:0', 'cpu' o '' para la detección automática del dispositivo).
conffloat0.25Umbral de confianza de la detección YOLO para filtrar las detecciones débiles.
ioufloat0.45Umbral de IoU para la supresión no máxima, que permite filtrar las cajas superpuestas.
imgszint640Tamaño de entrada para cambiar el tamaño de las imágenes (debe ser múltiplo de 32).
max_detint300Número máximo de detecciones por imagen para optimizar el uso de memoria.
classeslist[int]NoneLista de índices de clase que se detectarán (por ejemplo, [0, 1] para persona y bicicleta).
output_dirstrNoneDirectorio donde se guardarán las anotaciones (de forma predeterminada: directorio hermano de <data>_auto_annotate_labels).

La función auto_annotate recibe la ruta a tus imágenes, junto con argumentos opcionales para especificar los modelos de detección preentrenados, por ejemplo, YOLO26, YOLO11 u otros modelos, y los modelos de segmentación, por ejemplo, SAM, SAM 2, MobileSAM o SAM 3, el dispositivo en el que se ejecutarán los modelos y el directorio de salida donde se guardarán los resultados anotados.

Al aprovechar la potencia de los modelos preentrenados, la anotación automática puede reducir significativamente el tiempo y el esfuerzo necesarios para crear conjuntos de datos de segmentación de alta calidad. Esta función resulta especialmente útil para investigadores y desarrolladores que trabajan con grandes colecciones de imágenes, ya que les permite centrarse en el desarrollo y la evaluación de modelos en lugar de realizar anotaciones manuales.

Visualizar las anotaciones del conjunto de datos#

Antes de entrenar tu modelo, suele ser útil visualizar las anotaciones del conjunto de datos para asegurarte de que son correctas. Ultralytics proporciona una función de utilidad para este fin:

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # Define the label map with all annotated class labels.
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # Input image path.
    "path/to/annotations.txt",  # Annotation file path for the image.
    label_map,
)

Esta función dibuja cuadros delimitadores, etiqueta los objetos con nombres de clase y ajusta el color del texto para mejorar la legibilidad, lo que te ayuda a identificar y corregir errores de anotación antes del entrenamiento.

Convertir máscaras de segmentación al formato YOLO#

Si tienes máscaras de segmentación en formato binario, puedes convertirlas al formato de segmentación YOLO mediante:

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# For datasets like COCO with 80 classes
convert_segment_masks_to_yolo_seg(masks_dir="path/to/masks_dir", output_dir="path/to/output_dir", classes=80)

Esta utilidad convierte imágenes de máscaras binarias al formato de segmentación YOLO y las guarda en el directorio de salida especificado.

Preguntas frecuentes#

  • Ultralytics YOLO admite varios formatos de conjuntos de datos para la segmentación de instancias, siendo el principal su propio formato Ultralytics YOLO. Cada imagen del conjunto de datos necesita un archivo de texto correspondiente con la información de los objetos segmentada en varias filas (una fila por objeto), donde se indican el índice de clase y las coordenadas delimitadoras normalizadas. Para obtener instrucciones más detalladas sobre el formato de conjuntos de datos YOLO, visita Descripción general de los conjuntos de datos de segmentación de instancias.

  • Convertir las anotaciones del formato COCO al formato YOLO es sencillo utilizando las herramientas de Ultralytics. Puedes utilizar la función convert_coco del módulo ultralytics.data.converter:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

    Este script convierte las anotaciones de tu conjunto de datos COCO al formato YOLO requerido, lo que permite utilizarlo para entrenar tus modelos YOLO. Para obtener más información, consulta Adaptar o convertir formatos de etiquetas.

  • Para preparar un archivo YAML para entrenar modelos YOLO con Ultralytics, debes definir las rutas del conjunto de datos y los nombres de clase. Este es un ejemplo de configuración YAML:

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg
    # Example usage: yolo train data=coco8-seg.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8-seg ← 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-seg # 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-seg.zip

    Asegúrate de actualizar las rutas y los nombres de clase según tu conjunto de datos. Para obtener más información, consulta la sección Formato YAML del conjunto de datos.

  • La anotación automática de Ultralytics YOLO permite generar anotaciones de segmentación para tu conjunto de datos utilizando un modelo de detección preentrenado. Esto reduce significativamente la necesidad de etiquetado manual. Puedes utilizar la función auto_annotate de la siguiente manera:

    from ultralytics.data.annotator import auto_annotate
    
    auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")  # or sam_model="mobile_sam.pt"

    Esta función automatiza el proceso de anotación, haciéndolo más rápido y eficiente. Para obtener más información, consulta la Referencia de anotación automática.

Comentarios