YOLO Vision 2026:

Panoramica dei dataset di segmentazione di istanze#

La segmentazione di istanze è un'attività di visione artificiale che consiste nell'identificare e delimitare singoli oggetti all'interno di un'immagine. Questa guida fornisce una panoramica dei formati di dataset supportati da Ultralytics YOLO per attività di segmentazione di istanze, insieme alle istruzioni su come preparare, convertire e utilizzare tali dataset per l'addestramento dei tuoi modelli.

Formati di dataset supportati#

Formato Ultralytics YOLO#

Il formato di etichettatura del dataset utilizzato per l'addestramento dei modelli di segmentazione YOLO è il seguente:

  1. Un file di testo per immagine: ogni immagine nel dataset ha un file di testo corrispondente con lo stesso nome del file immagine e l'estensione ".txt".
  2. Una riga per oggetto: ogni riga nel file di testo corrisponde a un'istanza di oggetto nell'immagine.
  3. Informazioni sull'oggetto per riga: ogni riga contiene le seguenti informazioni sull'istanza dell'oggetto:
    • Indice della classe dell'oggetto: un numero intero che rappresenta la classe dell'oggetto (es. 0 per persona, 1 per auto, ecc.).
    • Coordinate del riquadro di delimitazione dell'oggetto: le coordinate di delimitazione attorno all'area della maschera, normalizzate tra 0 e 1.

Il formato per una singola riga nel file del dataset di segmentazione è il seguente:

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

In questo formato, <class-index> è l'indice della classe per l'oggetto, e <x1> <y1> <x2> <y2> ... <xn> <yn> sono le coordinate poligonali normalizzate della maschera di segmentazione dell'oggetto (i valori sono in [0, 1] rispetto alla larghezza e all'altezza dell'immagine). Le coordinate sono separate da spazi.

Ecco un esempio del formato del dataset YOLO per una singola immagine con due oggetti costituiti da un segmento a 3 punti e uno a 5 punti.

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
Suggerimento
  • La lunghezza di ogni riga non deve essere necessariamente uguale.
  • Ogni etichetta di segmentazione deve avere un minimo di 3 punti (x, y): <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Formato YAML del dataset#

Il framework Ultralytics utilizza un formato di file YAML per definire la configurazione del dataset e del modello per l'addestramento dei modelli di segmentazione. Ecco un esempio del formato YAML utilizzato per definire un dataset di segmentazione:

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

I campi train, val e test puntano alle immagini di addestramento, validazione e test. Ognuno accetta una directory, un elenco di directory o un file *.txt che elenca un percorso di immagine per riga (i percorsi che iniziano con ./ vengono risolti rispetto al file *.txt). Un file *.txt è utile per eseguire l'addestramento su un sottoinsieme di una directory, saltare immagini non annotate o combinare immagini da più fonti in un unico split.

Percorsi immagine come file `*.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 è un dizionario dei nomi delle classi. L'ordine dei nomi deve corrispondere all'ordine degli indici delle classi degli oggetti nei file del dataset YOLO.

Utilizzo#

Esempio
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)

Dataset supportati#

Ultralytics YOLO supporta vari dataset per attività di segmentazione di istanze. Ecco un elenco di quelli utilizzati più comunemente:

  • Carparts-seg: Un set di dati specializzato incentrato sulla segmentazione di parti di auto, ideale per applicazioni automotive. Include una varietà di veicoli con annotazioni dettagliate dei singoli componenti dell'auto.
  • COCO: Un set di dati completo per il rilevamento di oggetti, la segmentazione e la didascalia, che presenta oltre 200K immagini etichettate in un'ampia gamma di categorie.
  • COCO8-seg: Un sottoinsieme compatto di 8 immagini di COCO progettato per test rapidi dell'addestramento del modello di segmentazione, ideale per i controlli CI e la validazione del flusso di lavoro nel repository ultralytics.
  • COCO128-seg: Un set di dati più piccolo per attività di segmentazione d'istanza, contenente un sottoinsieme di 128 immagini COCO con annotazioni di segmentazione.
  • Crack-seg: Un set di dati su misura per la segmentazione di crepe su varie superfici. Essenziale per la manutenzione delle infrastrutture e il controllo qualità, fornisce immagini dettagliate per l'addestramento dei modelli per identificare le debolezze strutturali.
  • Package-seg: Un set di dati dedicato alla segmentazione di diversi tipi di materiali e forme di imballaggio. È particolarmente utile per la logistica e l'automazione dei magazzini, aiutando nello sviluppo di sistemi per la gestione e la cernita dei pacchi.

Aggiungere il tuo dataset#

Se hai il tuo set di dati e desideri utilizzarlo per l'addestramento di modelli di segmentazione con il formato Ultralytics YOLO, assicurati che segua il formato specificato sopra in "Formato Ultralytics YOLO". Converti le tue annotazioni nel formato richiesto e specifica i percorsi, il numero di classi e i nomi delle classi nel file di configurazione YAML. Mantieni images/ e labels/ come cartelle separate allo stesso livello, con una struttura di sottocartelle corrispondente; posizionare i file di etichette .txt nella cartella delle immagini può far sì che il modello perda le etichette.

Portare o convertire formati di etichette#

Formato dataset COCO a formato YOLO#

Puoi convertire facilmente le etichette dal popolare formato del dataset COCO al formato YOLO utilizzando il seguente snippet di codice:

Esempio
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Questo strumento di conversione può essere utilizzato per convertire il dataset COCO o qualsiasi dataset in formato COCO nel formato Ultralytics YOLO.

Ricordati di verificare se il dataset che vuoi utilizzare è compatibile con il tuo modello e segue le convenzioni di formato necessarie. Dataset formattati correttamente sono cruciali per l'addestramento di modelli di segmentazione di successo.

Auto-annotazione#

Auto-annotazione è una funzione essenziale che ti consente di generare un set di dati di segmentazione utilizzando un modello di rilevamento pre-addestrato. Ti consente di etichettare rapidamente e accuratamente un grande numero di immagini senza la necessità di etichettatura manuale, risparmiando tempo e fatica.

Genera un dataset di segmentazione utilizzando un modello di rilevamento#

Per auto-annotare il tuo set di dati utilizzando il framework Ultralytics, puoi utilizzare la funzione auto_annotate come mostrato di seguito:

Esempio
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")
ArgomentoTipoPredefinitoDescrizione
datastrobbligatorioPercorso della directory contenente le immagini target per l'annotazione o la segmentazione.
det_modelstr'yolo26x.pt'Percorso del modello di rilevamento YOLO per il rilevamento iniziale degli oggetti.
sam_modelstr'sam_b.pt'Percorso del modello SAM per la segmentazione (supporta pesi SAM, SAM 2, MobileSAM e SAM 3).
devicestr''Dispositivo di calcolo (es. 'cuda:0', 'cpu' o '' per il rilevamento automatico del dispositivo).
conffloat0.25Soglia di confidenza del rilevamento YOLO per filtrare i rilevamenti deboli.
ioufloat0.45Soglia IoU per la Soppressione Non Massima (Non-Maximum Suppression) per filtrare i riquadri sovrapposti.
imgszint640Dimensione di input per ridimensionare le immagini (deve essere un multiplo di 32).
max_detint300Numero massimo di rilevamenti per immagine per l'efficienza della memoria.
classeslist[int]NoneElenco degli indici di classe da rilevare (ad es., [0, 1] per persona e bicicletta).
output_dirstrNoneDirectory di salvataggio per le annotazioni (predefinita: <data>_auto_annotate_labels correlata).

La funzione auto_annotate accetta il percorso delle tue immagini, insieme ad argomenti opzionali per specificare i modelli di rilevamento pre-addestrati, ad es. YOLO26, YOLO11, o altri modelli, e modelli di segmentazione, ad es. SAM, SAM 2, MobileSAM, o SAM 3, il dispositivo su cui eseguire i modelli e la directory di output per salvare i risultati annotati.

Sfruttando la potenza dei modelli pre-addestrati, l'auto-annotazione può ridurre significativamente il tempo e lo sforzo richiesti per creare dataset di segmentazione di alta qualità. Questa funzionalità è particolarmente utile per ricercatori e sviluppatori che lavorano con grandi collezioni di immagini, poiché permette loro di concentrarsi sullo sviluppo e sulla valutazione del modello anziché sull'annotazione manuale.

Visualizza le annotazioni del dataset#

Prima di addestrare il tuo modello, è spesso utile visualizzare le annotazioni del dataset per assicurarsi che siano corrette. Ultralytics fornisce una funzione di utilità a questo scopo:

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,
)

Questa funzione disegna riquadri di delimitazione, etichetta gli oggetti con i nomi delle classi e regola il colore del testo per una migliore leggibilità, aiutandoti a identificare e correggere eventuali errori di annotazione prima dell'addestramento.

Conversione di maschere di segmentazione in formato YOLO#

Se hai maschere di segmentazione in formato binario, puoi convertirle nel formato di segmentazione YOLO utilizzando:

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)

Questa utilità converte le immagini di maschere binarie nel formato di segmentazione YOLO e le salva nella directory di output specificata.

FAQ#

  • Ultralytics YOLO supporta diversi formati di dataset per la segmentazione d'istanza, essendo il formato principale il proprio formato Ultralytics YOLO. Ciascuna immagine nel tuo dataset richiede un file di testo corrispondente con le informazioni degli oggetti segmentate in più righe (una riga per oggetto), elencando l'indice della classe e le coordinate di bounding normalizzate. Per istruzioni più dettagliate sul formato del dataset YOLO, visita la Panoramica dei Dataset di Segmentazione d'Istanza.

  • La conversione delle annotazioni in formato COCO nel formato YOLO è semplice utilizzando gli strumenti di Ultralytics. Puoi utilizzare la funzione convert_coco dal modulo ultralytics.data.converter:

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

    Questo script converte le annotazioni del tuo dataset COCO nel formato YOLO richiesto, rendendolo adatto all'addestramento dei tuoi modelli YOLO. Per maggiori dettagli, fai riferimento a Porta o Converti Formati di Etichette.

  • Per preparare un file YAML per l'addestramento dei modelli YOLO con Ultralytics, devi definire i percorsi del dataset e i nomi delle classi. Ecco un esempio di configurazione 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

    Assicurati di aggiornare i percorsi e i nomi delle classi in base al tuo dataset. Per ulteriori informazioni, controlla la sezione Formato YAML del Dataset.

  • L'auto-annotazione in Ultralytics YOLO ti consente di generare annotazioni di segmentazione per il tuo dataset utilizzando un modello di rilevamento pre-addestrato. Ciò riduce significativamente la necessità di etichettatura manuale. Puoi usare la funzione auto_annotate come segue:

    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"

    Questa funzione automatizza il processo di annotazione, rendendolo più veloce ed efficiente. Per maggiori dettagli, esplora il Riferimento per l'Auto-Annotazione.

Commenti