Vai al contenuto

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:

  1. 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".
  2. Una riga per ogni oggetto: Ogni riga del 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 (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:

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

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

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

Set di dati supportati

Set di dati supportati

  • COCO: un set di dati completo per il rilevamento, la segmentazione e la didascalia degli oggetti, con oltre 200.000 immagini etichettate in un'ampia gamma di categorie.

  • 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.

  • 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

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

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model='sam_b.pt')

Certamente, ecco la tabella aggiornata con i frammenti di codice:

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 è 'yolov8x.pt'. 'yolov8x.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 disponibile). ''
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.



Creato 2023-11-12, Aggiornato 2024-04-18
Autori: glenn-jocher (8)

Commenti