Meet YOLO26: next-gen vision AI.

Link to this sectionDescripción general de los conjuntos de datos de segmentación de instancias#

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

Link to this sectionFormatos de conjunto de datos compatibles#

Link to this sectionFormato de Ultralytics YOLO#

El formato de etiqueta 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 en la imagen.
  3. Información del objeto por fila: cada fila contiene la siguiente información sobre la instancia del objeto:
    • Índice de clase del objeto: un número entero que representa la clase del objeto (por ejemplo, 0 para persona, 1 para coche, etc.).
    • Coordenadas del cuadro delimitador del objeto: las coordenadas delimitadoras alrededor del área de la máscara, normalizadas para estar entre 0 y 1.

El formato para una sola fila en el archivo de 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 para el 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] relativos al ancho y alto de la imagen). Las coordenadas están separadas por espacios.

Aquí tienes un ejemplo del formato de conjunto de datos YOLO para una sola imagen con dos objetos formados por un segmento de 3 puntos y un segmento 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>

Link to this sectionFormato YAML del conjunto de datos#

El framework Ultralytics utiliza un formato de archivo YAML para definir la configuración del conjunto de datos y del modelo para entrenar modelos de segmentación. Aquí tienes 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 y val especifican las rutas a los directorios que contienen las imágenes de entrenamiento y validación, respectivamente.

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

Link to this sectionUso#

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)

Link to this sectionConjuntos 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:

  • Carparts-seg: Un conjunto de datos especializado centrado en la segmentación de piezas de automóvil, ideal para aplicaciones de automoción. Incluye una variedad de vehículos con anotaciones detalladas de los componentes individuales del coche.
  • COCO: Un conjunto de datos integral para detección de objetos, segmentación y subtitulado, que incluye más de 200.000 imágenes etiquetadas en una amplia gama de categorías.
  • COCO8-seg: Un subconjunto compacto de 8 imágenes de COCO diseñado para pruebas rápidas del entrenamiento de modelos de segmentación, ideal para comprobaciones de CI y validación de flujo 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 COCO con anotaciones de segmentación.
  • Crack-seg: Un conjunto de datos adaptado para la segmentación de grietas en diversas superficies. Esencial para el mantenimiento de infraestructuras y el control de calidad, proporciona imágenes detalladas para entrenar modelos para identificar debilidades estructurales.
  • Package-seg: Un conjunto de datos dedicado a la segmentación de diferentes tipos de materiales y formas de embalaje. Es especialmente útil para la logística y la automatización de almacenes, ayudando en el desarrollo de sistemas para la manipulación y clasificación de paquetes.

Link to this sectionAñadir tu propio conjunto de datos#

Si tienes tu propio conjunto de datos y te gustaría usarlo para entrenar modelos de segmentación con el formato Ultralytics YOLO, asegúrate de que siga el formato especificado anteriormente en "Formato de 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. Mantén images/ y labels/ como carpetas separadas al mismo nivel, con una estructura de subcarpetas coincidente; colocar archivos de etiquetas .txt en la carpeta de imágenes puede hacer que el modelo pierda las etiquetas.

Link to this sectionPortar o convertir formatos de etiqueta#

Link to this sectionFormato de conjunto de datos COCO a 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 puede utilizarse para convertir el conjunto de datos COCO o cualquier conjunto de datos en formato COCO al formato Ultralytics YOLO.

Recuerda comprobar dos veces si 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 cruciales para entrenar modelos de segmentación exitosos.

Link to this sectionAuto-anotación#

La auto-anotación es una función esencial que te permite generar un conjunto de datos de segmentación utilizando un modelo de detección preentrenado. Te permite anotar rápida y precisamente un gran número de imágenes sin necesidad de etiquetado manual, ahorrando tiempo y esfuerzo.

Link to this sectionGenerar conjunto de datos de segmentación utilizando un modelo de detección#

Para auto-anotar tu conjunto de datos utilizando el framework 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
datastrrequeridoRuta al directorio que contiene las imágenes de destino para la anotación o segmentación.
det_modelstr'yolo26x.pt'Ruta del modelo de detección YOLO para la detección inicial de objetos.
sam_modelstr'sam_b.pt'Ruta del modelo SAM para la segmentación (admite pesos de SAM, SAM 2, MobileSAM y SAM 3).
devicestr''Dispositivo de computación (p. ej., 'cuda:0', 'cpu' o '' para la detección automática del dispositivo).
conffloat0.25Umbral de confianza de la detección YOLO para filtrar detecciones débiles.
ioufloat0.45Umbral de IoU para la supresión de no máximos (Non-Maximum Suppression) con el fin de filtrar cajas solapadas.
imgszint640Tamaño de entrada para redimensionar imágenes (debe ser múltiplo de 32).
max_detint300Número máximo de detecciones por imagen para la eficiencia de la memoria.
classeslist[int]NoneLista de índices de clases a detectar (p. ej., [0, 1] para persona y bicicleta).
output_dirstrNoneDirectorio de guardado para las anotaciones (por defecto: hermano de <data>_auto_annotate_labels).

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

Al aprovechar el poder de los modelos preentrenados, la auto-anotación puede reducir significativamente el tiempo y el esfuerzo necesarios para crear conjuntos de datos de segmentación de alta calidad. Esta función es 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 del modelo en lugar de en la anotación manual.

Link to this sectionVisualizar anotaciones del conjunto de datos#

Antes de entrenar tu modelo, a menudo es útil visualizar las anotaciones de tu conjunto de datos para asegurarte de que sean correctas. Ultralytics proporciona una función de utilidad para este propósito:

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 objetos con nombres de clase y ajusta el color del texto para una mejor legibilidad, ayudándote a identificar y corregir cualquier error de anotación antes del entrenamiento.

Link to this sectionConvertir 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 utilizando:

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áscara binaria al formato de segmentación YOLO y las guarda en el directorio de salida especificado.

Link to this sectionPreguntas frecuentes#

Link to this section¿Qué formatos de conjunto de datos admite Ultralytics YOLO para la segmentación de instancias?#

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

Link to this section¿Cómo puedo convertir las anotaciones del conjunto de datos COCO al formato YOLO?#

Convertir las anotaciones en 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, haciéndolo adecuado para entrenar tus modelos YOLO. Para más detalles, consulta Portar o convertir formatos de etiqueta.

Link to this section¿Cómo preparo un archivo YAML para entrenar modelos de Ultralytics YOLO?#

Para preparar un archivo YAML para entrenar modelos YOLO con Ultralytics, necesitas definir las rutas del conjunto de datos y los nombres de las clases. Aquí tienes 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 las clases de acuerdo con tu conjunto de datos. Para obtener más información, consulta la sección Formato YAML del conjunto de datos.

Link to this section¿Qué es la función de auto-anotación en Ultralytics YOLO?#

La auto-anotación en Ultralytics YOLO te 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 más detalles, explora la Referencia de auto-anotación.

Comentarios