Vai al contenuto

Panoramica dei dataset Oriented Bounding Box (OBB)

L'addestramento di un modello preciso di object detection con bounding box orientati (OBB) richiede un dataset completo. Questa guida spiega i vari formati di dataset OBB compatibili con i modelli Ultralytics YOLO, offrendo approfondimenti sulla loro struttura, applicazione e metodi per le conversioni di formato.

Formati di dataset OBB supportati

Formato YOLO OBB

Il formato YOLO OBB designa i bounding box tramite i loro quattro punti d'angolo con coordinate normalizzate tra 0 e 1. Segue questo formato:

class_index x1 y1 x2 y2 x3 y3 x4 y4

Internamente, YOLO elabora le perdite e gli output in xywhr formato, che rappresenta il riquadro di delimitazioneil punto centrale (xy), la larghezza, l'altezza e la rotazione di .

Esempi di formato OBB

Un esempio di *.txt file di etichette per l'immagine sopra, che contiene un oggetto della classe 0 in formato OBB, potrebbe apparire così:

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

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 di modelli OBB. Ecco un esempio del formato YAML utilizzato per definire un dataset OBB:

ultralytics/cfg/datasets/dota8.yaml

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DOTA8 dataset 8 images from split DOTAv1 dataset by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8/
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── dota8 ← downloads here (1MB)

# 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: dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images

# Classes for DOTA 1.0
names:
  0: plane
  1: ship
  2: storage tank
  3: baseball diamond
  4: tennis court
  5: basketball court
  6: ground track field
  7: harbor
  8: bridge
  9: large vehicle
  10: small vehicle
  11: helicopter
  12: roundabout
  13: soccer ball field
  14: swimming pool

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8.zip

Utilizzo

Per addestrare un modello utilizzando questi formati OBB:

Esempio

from ultralytics import YOLO

# Create a new YOLO11n-OBB model from scratch
model = YOLO("yolo11n-obb.yaml")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

Dataset supportati

Attualmente, sono supportati i seguenti dataset con Oriented Bounding Boxes:

  • DOTA-v1: La prima versione del dataset DOTA, che fornisce un set completo di immagini aeree con bounding box orientati per l'object detection.
  • DOTA-v1.5: Una versione intermedia del dataset DOTA, che offre annotazioni e miglioramenti aggiuntivi rispetto a DOTA-v1 per attività di object detection avanzate.
  • DOTA-v2: DOTA (A Large-scale Dataset for Object Detection in Aerial Images) versione 2, pone l'accento sul rilevamento da prospettive aeree e contiene bounding box orientati con 1,7 milioni di istanze e 11.268 immagini.
  • DOTA8: Un piccolo sottoinsieme di 8 immagini del set di dati DOTA completo, adatto per testare i flussi di lavoro e i controlli di integrazione continua (CI) dell'addestramento OBB in ultralytics repository.

Incorporare il proprio set di dati OBB

Per coloro che desiderano introdurre i propri set di dati con bounding box orientati, assicurarsi la compatibilità con il "formato YOLO OBB" menzionato sopra. Convertire le annotazioni in questo formato richiesto e specificare i percorsi, le classi e i nomi delle classi in un file di configurazione YAML corrispondente.

Converti formati di etichetta

Formato Dataset DOTA in Formato YOLO OBB

La transizione delle etichette dal formato del dataset DOTA al formato YOLO OBB può essere ottenuta con questo script:

Esempio

from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

Questo meccanismo di conversione è fondamentale per i dataset in formato DOTA, garantendo l'allineamento con il formato OBB di Ultralytics YOLO.

È imperativo convalidare la compatibilità del set di dati con il modello e rispettare le convenzioni di formato necessarie. Set di dati adeguatamente strutturati sono fondamentali per l'addestramento di modelli di object detection efficienti con bounding box orientati.

FAQ

Cosa sono gli Oriented Bounding Box (OBB) e come vengono utilizzati nei modelli Ultralytics YOLO?

Gli Oriented Bounding Box (OBB) sono un tipo di annotazione bounding box in cui la box può essere ruotata per allinearsi più strettamente con l'oggetto da rilevare, invece di essere semplicemente allineata agli assi. Questo è particolarmente utile nelle immagini aeree o satellitari in cui gli oggetti potrebbero non essere allineati con gli assi dell'immagine. Nei modelli Ultralytics YOLO, gli OBB sono rappresentati dai loro quattro punti d'angolo nel formato YOLO OBB. Ciò consente un rilevamento degli oggetti più accurato poiché i bounding box possono ruotare per adattarsi meglio agli oggetti.

Come posso convertire le etichette del mio dataset DOTA esistente nel formato YOLO OBB per l'uso con Ultralytics YOLO11?

Puoi convertire le etichette del dataset DOTA nel formato YOLO OBB usando convert_dota_to_yolo_obb funzione di Ultralytics. Questa conversione garantisce la compatibilità con i modelli YOLO di Ultralytics, consentendoti di sfruttare le capacità OBB per un rilevamento degli oggetti migliorato. Ecco un rapido esempio:

from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

Questo script riformatterà le tue annotazioni DOTA in un formato compatibile con YOLO.

Come posso addestrare un modello YOLO11 con bounding box orientati (OBB) sul mio dataset?

L'addestramento di un modello YOLO11 con OBB implica assicurarsi che il tuo dataset sia nel formato YOLO OBB e quindi utilizzare la API Ultralytics per addestrare il modello. Ecco un esempio sia in python che tramite CLI:

Esempio

from ultralytics import YOLO

# Create a new YOLO11n-OBB model from scratch
model = YOLO("yolo11n-obb.yaml")

# Train the model on the custom dataset
results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)
# Train a new YOLO11n-OBB model on the custom dataset
yolo obb train data=your_dataset.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640

Questo garantisce che il tuo modello sfrutti le annotazioni OBB dettagliate per una migliore precisione di rilevamento.

Quali set di dati sono attualmente supportati per l'addestramento OBB nei modelli Ultralytics YOLO?

Attualmente, Ultralytics supporta i seguenti dataset per l'addestramento OBB:

  • DOTA-v1: La prima versione del dataset DOTA, che fornisce un set completo di immagini aeree con bounding box orientati per l'object detection.
  • DOTA-v1.5: Una versione intermedia del dataset DOTA, che offre annotazioni e miglioramenti aggiuntivi rispetto a DOTA-v1 per attività di object detection avanzate.
  • DOTA-v2: Questo set di dati include 1,7 milioni di istanze con bounding box orientati e 11.268 immagini, concentrandosi principalmente sul rilevamento di oggetti aerei.
  • DOTA8: Un sottoinsieme più piccolo di 8 immagini del dataset DOTA utilizzato per i test e i controlli di integrazione continua (CI).

Questi dataset sono pensati per scenari in cui le OBB offrono un vantaggio significativo, come l'analisi di immagini aeree e satellitari.

Posso utilizzare il mio set di dati con bounding box orientati per l'addestramento di YOLO11 e, in caso affermativo, come?

Sì, puoi usare il tuo dataset con bounding box orientati per l'addestramento di YOLO11. Assicurati che le annotazioni del tuo dataset siano convertite nel formato YOLO OBB, che prevede la definizione dei bounding box tramite i loro quattro punti angolari. Puoi quindi creare un file di configurazione YAML specificando i percorsi del dataset, le classi e altri dettagli necessari. Per maggiori informazioni sulla creazione e la configurazione dei tuoi dataset, consulta la sezione Dataset supportati.



📅 Creato 1 anno fa ✏️ Aggiornato 10 giorni fa

Commenti