Link to this sectionPanoramica dei dataset di segmentazione delle istanze#
La segmentazione delle istanze è un compito di computer vision 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 i compiti di segmentazione delle istanze, insieme alle istruzioni su come preparare, convertire e utilizzare questi dataset per l'addestramento dei tuoi modelli.
Link to this sectionFormati di dataset supportati#
Link to this sectionFormato Ultralytics YOLO#
Il formato delle etichette del dataset utilizzato per l'addestramento dei modelli di segmentazione YOLO è il seguente:
- Un file di testo per immagine: Ogni immagine nel dataset ha un corrispondente file di testo con lo stesso nome del file immagine e l'estensione ".txt".
- Una riga per oggetto: Ogni riga nel file di testo corrisponde a un'istanza di oggetto nell'immagine.
- 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 (ad esempio, 0 per persona, 1 per auto, ecc.).
- Coordinate di delimitazione dell'oggetto: Le coordinate del riquadro 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 normalizzate del poligono 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- La lunghezza di ogni riga non deve necessariamente essere uguale.
- Ogni etichetta di segmentazione deve avere un minimo di 3 punti
(x, y):<class-index> <x1> <y1> <x2> <y2> <x3> <y3>
Link to this sectionFormato YAML del dataset#
Il framework Ultralytics utilizza un formato di file YAML per definire il dataset e la configurazione del modello per l'addestramento dei modelli di segmentazione. Ecco un esempio del formato YAML utilizzato per definire un dataset di segmentazione:
# 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.zipI campi train e val specificano i percorsi alle directory contenenti rispettivamente le immagini di addestramento e di convalida.
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.
Link to this sectionUtilizzo#
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 sectionDataset supportati#
Ultralytics YOLO supporta vari dataset per i compiti di segmentazione delle istanze. Ecco un elenco di quelli più comunemente utilizzati:
- Carparts-seg: Un dataset specializzato incentrato sulla segmentazione delle parti di auto, ideale per applicazioni automobilistiche. Include una varietà di veicoli con annotazioni dettagliate dei singoli componenti dell'auto.
- COCO: Un dataset completo per object detection, segmentazione e didascalie, che presenta oltre 200.000 immagini etichettate in un'ampia gamma di categorie.
- COCO8-seg: Un sottoinsieme compatto di 8 immagini di COCO progettato per test rapidi dell'addestramento di modelli di segmentazione, ideale per i controlli CI e la convalida del flusso di lavoro nel repository
ultralytics. - COCO128-seg: Un dataset più piccolo per i compiti di instance segmentation, contenente un sottoinsieme di 128 immagini COCO con annotazioni di segmentazione.
- Crack-seg: Un dataset 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 di modelli che identificano debolezze strutturali.
- Package-seg: Un dataset 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 movimentazione e lo smistamento dei pacchi.
Link to this sectionAggiunta del tuo dataset#
Se hai un tuo dataset e vorresti usarlo per l'addestramento di modelli di segmentazione con il formato Ultralytics YOLO, assicurati che segua il formato specificato sopra alla voce "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; inserire file .txt di etichette nella cartella delle immagini può causare la mancata lettura delle etichette da parte del modello.
Link to this sectionPorting o conversione dei formati delle etichette#
Link to this sectionDa formato dataset COCO a formato YOLO#
Puoi convertire facilmente le etichette dal popolare formato dataset COCO al formato YOLO utilizzando il seguente snippet di codice:
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 nel formato COCO nel formato Ultralytics YOLO.
Ricorda di verificare se il dataset che vuoi utilizzare è compatibile con il tuo modello e segue le necessarie convenzioni di formato. Dataset formattati correttamente sono cruciali per l'addestramento di modelli di segmentazione di successo.
Link to this sectionAuto-annotazione#
Auto-annotation è una funzionalità essenziale che ti permette di generare un dataset di segmentazione utilizzando un modello di rilevamento pre-addestrato. Ti consente di annotare rapidamente e accuratamente un gran numero di immagini senza la necessità di etichettatura manuale, risparmiando tempo e fatica.
Link to this sectionGenera dataset di segmentazione utilizzando un modello di rilevamento#
Per auto-annotare il tuo dataset utilizzando il framework Ultralytics, puoi usare la funzione auto_annotate come mostrato di seguito:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
data | str | richiesto | Percorso alla directory contenente le immagini di destinazione per l'annotazione o la segmentazione. |
det_model | str | 'yolo26x.pt' | Percorso del modello di rilevamento YOLO per il rilevamento iniziale degli oggetti. |
sam_model | str | 'sam_b.pt' | Percorso del modello SAM per la segmentazione (supporta i pesi di SAM, SAM 2, MobileSAM e SAM 3). |
device | str | '' | Dispositivo di calcolo (ad esempio, 'cuda:0', 'cpu' o '' per il rilevamento automatico del dispositivo). |
conf | float | 0.25 | Soglia di confidenza del rilevamento YOLO per filtrare i rilevamenti deboli. |
iou | float | 0.45 | Soglia IoU per la Non-Maximum Suppression per filtrare le caselle sovrapposte. |
imgsz | int | 640 | Dimensione di input per ridimensionare le immagini (deve essere un multiplo di 32). |
max_det | int | 300 | Numero massimo di rilevamenti per immagine per l'efficienza della memoria. |
classes | list[int] | None | Elenco degli indici di classe da rilevare (ad esempio, [0, 1] per persona e bicicletta). |
output_dir | str | None | Directory di salvataggio per le annotazioni (predefinito: fratello di <data>_auto_annotate_labels). |
La funzione auto_annotate accetta il percorso delle tue immagini, insieme ad argomenti opzionali per specificare i modelli di rilevamento pre-addestrati, ad esempio YOLO26, YOLO11, o altri models, e i modelli di segmentazione, ad esempio 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 funzione è particolarmente utile per ricercatori e sviluppatori che lavorano con ampie collezioni di immagini, poiché permette loro di concentrarsi sullo sviluppo e sulla valutazione del modello invece che sull'annotazione manuale.
Link to this sectionVisualizza le annotazioni del dataset#
Prima di addestrare il tuo modello, è spesso utile visualizzare le annotazioni del tuo dataset per assicurarti 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.
Link to this sectionConversione 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 immagini di maschere binarie nel formato di segmentazione YOLO e le salva nella directory di output specificata.
Link to this sectionFAQ#
Link to this sectionQuali formati di dataset supporta Ultralytics YOLO per la segmentazione delle istanze?#
Ultralytics YOLO supporta diversi formati di dataset per la segmentazione delle istanze, con il formato principale che è il proprio formato Ultralytics YOLO. Ogni immagine nel tuo dataset necessita di un corrispondente file di testo con le informazioni sull'oggetto segmentate in più righe (una riga per oggetto), elencando l'indice della classe e le coordinate di delimitazione normalizzate. Per istruzioni più dettagliate sul formato del dataset YOLO, visita la Panoramica sui dataset di segmentazione delle istanze.
Link to this sectionCome posso convertire le annotazioni del dataset COCO nel formato YOLO?#
Convertire le annotazioni in formato COCO nel formato YOLO è semplice utilizzando gli strumenti 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, consulta Porting o conversione dei formati delle etichette.
Link to this sectionCome preparo un file YAML per l'addestramento dei modelli Ultralytics YOLO?#
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.zipAssicurati di aggiornare i percorsi e i nomi delle classi in base al tuo dataset. Per ulteriori informazioni, consulta la sezione Formato YAML del dataset.
Link to this sectionCos'è la funzionalità di auto-annotazione in Ultralytics YOLO?#
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 utilizzare 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 Auto-Annotate.