Panoramica dei dataset di segmentazione delle istanze
Formati di dati supportati
Ultralytics YOLO formato
Il formato delle etichette del dataset utilizzato per l'addestramento dei modelli di segmentazione di YOLO è il seguente:
- Un file di testo per ogni immagine: Ogni immagine del set di dati ha un file di testo corrispondente con lo stesso nome del file immagine e l'estensione ".txt".
- Una riga per ogni oggetto: Ogni riga del 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 es. 0 per la persona, 1 per l'auto, ecc.).
- Coordinate di delimitazione dell'oggetto: Le coordinate di delimitazione dell'area della maschera, normalizzate per essere comprese tra 0 e 1.
Il formato di una singola riga del file di dati di segmentazione è il seguente:
In questo formato, <class-index>
è l'indice della classe dell'oggetto e <x1> <y1> <x2> <y2> ... <xn> <yn>
sono le coordinate di delimitazione della maschera di segmentazione dell'oggetto. Le coordinate sono separate da spazi.
Ecco un esempio del formato del dataset YOLO per una singola immagine con due oggetti composti 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 xy:
<class-index> <x1> <y1> <x2> <y2> <x3> <y3>
Formato YAML del set di dati
Il framework Ultralytics utilizza un formato di file YAML per definire il dataset e la configurazione del modello per l'addestramento dei modelli di rilevamento. Ecco un esempio del formato YAML utilizzato per definire un set di dati di rilevamento:
# 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
Il train
e val
specificano i percorsi delle directory contenenti rispettivamente le immagini di addestramento e di convalida.
names
è un dizionario di nomi di classi. L'ordine dei nomi deve corrispondere all'ordine degli indici delle classi degli oggetti nei file del dataset YOLO .
Utilizzo
Esempio
Set di dati supportati
Set di dati supportati
- COCO: A comprehensive dataset for object detection, segmentation, and captioning, featuring over 200K labeled images across a wide range of categories.
- COCO8-seg: Un sottoinsieme compatto di 8 immagini di COCO progettato per testare rapidamente l'addestramento del modello di segmentazione, ideale per i controlli di CI e la convalida del flusso di lavoro nel laboratorio di analisi.
ultralytics
deposito. - COCO128-seg: A smaller dataset for instance segmentation tasks, containing a subset of 128 COCO images with segmentation annotations.
- Carparts-seg: un set di dati specializzato nella segmentazione di parti di automobili, ideale per le applicazioni automobilistiche. Include una serie di veicoli con annotazioni dettagliate dei singoli componenti dell'auto.
- Crack-seg: un set di dati creato su misura per la segmentazione delle crepe in varie superfici. Essenziale per la manutenzione e il controllo di qualità delle infrastrutture, fornisce immagini dettagliate per l'addestramento di modelli che identificano 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 lo sviluppo di sistemi per la gestione e lo smistamento dei pacchi.
Aggiungi il tuo set di dati
Se hai un tuo set di dati e vuoi utilizzarlo per addestrare i modelli di segmentazione con il formato Ultralytics YOLO , assicurati che segua il formato specificato sopra in "FormatoUltralytics 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.
Porta o converti i formati delle etichette
Formato del set di dati COCO in formato YOLO
Puoi convertire facilmente le etichette dal popolare formato COCO al formato YOLO utilizzando il seguente frammento di codice:
Esempio
Questo strumento di conversione può essere utilizzato per convertire il set di dati COCO o qualsiasi altro set di dati in formato COCO nel formato Ultralytics YOLO .
Ricordati di controllare due volte che il set di dati che vuoi utilizzare sia compatibile con il tuo modello e che segua le convenzioni di formato necessarie. I dataset correttamente formattati sono fondamentali per addestrare modelli di rilevamento di oggetti di successo.
Annotazione automatica
L'auto-annotazione è una funzione essenziale che ti permette di generare un set di dati di segmentazione utilizzando un modello di rilevamento pre-addestrato. Ti permette di annotare rapidamente e con precisione un gran numero di immagini senza dover ricorrere all'etichettatura manuale, risparmiando tempo e fatica.
Generare un set di dati di segmentazione utilizzando un modello di rilevamento
Per auto-analizzare il tuo set di dati utilizzando il framework Ultralytics , puoi utilizzare il metodo auto_annotate
come mostrato di seguito:
Esempio
Argomento | Tipo | Descrizione | Predefinito |
---|---|---|---|
data | str | Percorso di una cartella contenente le immagini da annotare. | None |
det_model | str, optional | Modello di rilevamento preaddestrato di YOLO . Il valore predefinito è 'yolo11x.pt' . | 'yolo11x.pt' |
sam_model | str, optional | Modello di segmentazione preaddestrato SAM . Il valore predefinito è 'sam_b.pt' . | 'sam_b.pt' |
device | str, optional | Dispositivo su cui eseguire i modelli. Il valore predefinito è una stringa vuota (CPU o GPU, se disponibili). | '' |
output_dir | str or None, optional | Directory in cui salvare i risultati annotati. Per impostazione predefinita, si tratta di una cartella 'labels' nella stessa cartella di 'data' . | None |
Il auto_annotate
La funzione accetta il percorso delle immagini, insieme ad argomenti opzionali per specificare il rilevamento pre-addestrato e la funzione di rilevamento. SAM modelli di segmentazione, 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 l'impegno necessari per creare set di dati di segmentazione di alta qualità. Questa funzione è particolarmente utile per i ricercatori e gli sviluppatori che lavorano con grandi collezioni di immagini, in quanto consente loro di concentrarsi sullo sviluppo e sulla valutazione dei modelli piuttosto che sull'annotazione manuale.
DOMANDE FREQUENTI
Quali formati di dati supporta Ultralytics YOLO per la segmentazione delle istanze?
Ultralytics YOLO supporta diversi formati di set di dati per la segmentazione, con il formato principale che è il proprio formato Ultralytics YOLO . Ogni immagine del tuo set di dati deve avere un file di testo corrispondente con le informazioni sull'oggetto segmentate in più righe (una riga per ogni oggetto), con l'indice della classe e le coordinate di delimitazione normalizzate. Per istruzioni più dettagliate sul formato del dataset YOLO , visita la sezione Panoramica sui dataset di segmentazione delle istanze.
Come posso convertire le annotazioni dei dataset COCO nel formato YOLO ?
La conversione delle annotazioni in formato COCO in formato YOLO è semplice grazie agli strumenti di Ultralytics . Puoi utilizzare il programma convert_coco
dalla funzione ultralytics.data.converter
modulo:
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 set di dati COCO nel formato richiesto da YOLO , rendendole adatte all'addestramento dei tuoi modelli YOLO . Per maggiori dettagli, fai riferimento a Porta o Converti i formati delle etichette.
Come si prepara un file YAML per l'addestramento dei modelli di Ultralytics YOLO ?
Per preparare un file YAML per l'addestramento dei modelli di YOLO con Ultralytics, devi definire i percorsi dei dataset e i nomi delle classi. Ecco un esempio di configurazione YAML:
path: ../datasets/coco8-seg # dataset root dir
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to 'path')
names:
0: person
1: bicycle
2: car
# ...
Assicurati di aggiornare i percorsi e i nomi delle classi in base al tuo set di dati. Per maggiori informazioni, consulta la sezione Formato YAML del dataset.
Che cos'è la funzione di auto-annotazione in Ultralytics YOLO ?
L'annotazione automatica in Ultralytics YOLO ti permette di generare annotazioni di segmentazione per il tuo set di dati utilizzando un modello di rilevamento pre-addestrato. Questo riduce notevolmente 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="yolo11x.pt", sam_model="sam_b.pt")
Questa funzione automatizza il processo di annotazione, rendendolo più veloce ed efficiente. Per maggiori dettagli, esplora la sezione Annotazione automatica.