Saltar al contenido

Visi贸n general de los conjuntos de datos de segmentaci贸n de instancias

Formatos de conjuntos de datos admitidos

Ultralytics YOLO formato

El formato de etiqueta del conjunto de datos utilizado para entrenar los modelos de segmentaci贸n de YOLO es el siguiente:

  1. Un archivo de texto por imagen: Cada imagen del conjunto de datos tiene su correspondiente archivo de texto 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 de delimitaci贸n del objeto: Las coordenadas de delimitaci贸n alrededor del 谩rea de la m谩scara, normalizadas para que est茅n entre 0 y 1.

El formato de una 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 de delimitaci贸n de la m谩scara de segmentaci贸n del objeto. Las coordenadas est谩n separadas por espacios.

Aqu铆 tienes un ejemplo del formato del 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 por qu茅 ser igual.
  • Cada etiqueta de segmentaci贸n debe tener una m铆nimo de 3 puntos xy: <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Conjunto de datos en formato YAML

El marco Ultralytics utiliza un formato de archivo YAML para definir el conjunto de datos y la configuraci贸n del modelo para entrenar Modelos de detecci贸n. He aqu铆 un ejemplo del formato YAML utilizado para definir un conjunto de datos de detecci贸n:

# 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: ../datasets/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 (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

En 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 clases. El orden de los nombres debe coincidir con el orden de los 铆ndices de las clases objeto en los archivos del conjunto de datos YOLO .

Utilizaci贸n

Ejemplo

from ultralytics import YOLO

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

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

Conjuntos de datos compatibles

Conjuntos de datos compatibles

  • COCO: Un completo conjunto de datos para la detecci贸n, segmentaci贸n y subtitulaci贸n de objetos, con m谩s de 200.000 im谩genes etiquetadas de una amplia gama de categor铆as.

  • COCO8-seg: Un subconjunto compacto de 8 im谩genes de COCO dise帽ado para probar r谩pidamente el entrenamiento del modelo de segmentaci贸n, ideal para las comprobaciones de CI y la validaci贸n del flujo de trabajo en la ultralytics repositorio.

  • Carparts-seg: Un conjunto de datos especializado centrado en la segmentaci贸n de piezas de autom贸viles, ideal para aplicaciones de automoci贸n. Incluye una variedad de veh铆culos con anotaciones detalladas de componentes individuales del coche.

  • 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 que identifiquen debilidades estructurales.

  • Paquete-seg: Conjunto de datos dedicado a la segmentaci贸n de distintos tipos de materiales y formas de envases. Es especialmente 煤til para la log铆stica y la automatizaci贸n de almacenes, ya que ayuda a desarrollar 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 "Ultralytics YOLO formato". 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 del conjunto de datos COCO a formato YOLO

Puedes 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/', 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 formateados correctamente son cruciales para entrenar con 茅xito modelos de detecci贸n de objetos.

Anotaci贸n autom谩tica

La anotaci贸n autom谩tica 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 con rapidez y precisi贸n un gran n煤mero de im谩genes sin necesidad de etiquetado manual, ahorrando tiempo y esfuerzo.

Generar un conjunto de datos de segmentaci贸n utilizando un modelo de detecci贸n

Para auto-anotar tu conjunto de datos utilizando el marco 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="yolov8x.pt", sam_model='sam_b.pt')

Por supuesto, aqu铆 tienes la tabla actualizada con fragmentos de c贸digo:

Argumento Tipo Descripci贸n Por defecto
data str Ruta a una carpeta que contenga las im谩genes que se van a anotar. None
det_model str, optional Modelo de detecci贸n preentrenado YOLO . Por defecto 'yolov8x.pt'. 'yolov8x.pt'
sam_model str, optional Modelo de segmentaci贸n preentrenado SAM . Por defecto 'sam_b.pt'. 'sam_b.pt'
device str, optional Dispositivo en el que se ejecutar谩n los modelos. Por defecto es una cadena vac铆a (CPU o GPU, si est谩n disponibles). ''
output_dir str or None, optional Directorio para guardar los resultados anotados. Por defecto es un 'labels' en el mismo directorio que 'data'. None

En auto_annotate toma la ruta a tus im谩genes, junto con argumentos opcionales para especificar la detecci贸n preentrenada y SAM modelos de segmentaci贸nel dispositivo en el que ejecutar los modelos, y el directorio de salida para guardar 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 es especialmente 煤til para los 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 en la anotaci贸n manual.



Creado 2023-11-12, Actualizado 2024-04-18
Autores: glenn-jocher (8)

Comentarios