Panoramica sui dataset di Oriented Bounding Box (OBB)

L'addestramento di un modello di object detection preciso con oriented bounding box (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 sui metodi di conversione del 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 nel formato xywhr, che rappresenta il punto centrale (xy), la larghezza, l'altezza e la rotazione del bounding box.

Oriented bounding box annotation format examples

Un esempio di file di etichetta *.txt per l'immagine sopra, che contiene un oggetto di 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 dei 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 the DOTAv1 split) 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 (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: 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 YOLO26n-OBB model from scratch
model = YOLO("yolo26n-obb.yaml")

# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)

Dataset supportati

Attualmente, sono supportati i seguenti dataset con oriented bounding box:

  • DOTA-v1: La prima versione del dataset DOTA, che fornisce un set completo di immagini aeree con oriented bounding box per l'object detection.
  • DOTA-v1.5: Una versione intermedia del dataset DOTA, che offre annotazioni aggiuntive e miglioramenti rispetto a DOTA-v1 per compiti di object detection avanzati.
  • DOTA-v2: DOTA (A Large-scale Dataset for Object Detection in Aerial Images) versione 2, enfatizza il rilevamento da prospettive aeree e contiene oriented bounding box con 1,7 milioni di istanze e 11.268 immagini.
  • DOTA8: Un sottoinsieme piccolo di 8 immagini dell'intero dataset DOTA adatto per testare i flussi di lavoro e i controlli di Continuous Integration (CI) dell'addestramento OBB nel repository ultralytics.
  • DOTA128: Un sottoinsieme di 128 immagini del dataset DOTA con tutte le immagini nella cartella train (utilizzate sia per train che per val), che offre un buon equilibrio tra dimensioni e diversità per testare i modelli OBB.

Incorporare il tuo dataset OBB

Per coloro che desiderano introdurre i propri dataset con oriented bounding box, assicurati la compatibilità con il "formato YOLO OBB" menzionato sopra. Converti le tue annotazioni in questo formato richiesto e specifica i percorsi, le classi e i nomi delle classi in un file di configurazione YAML corrispondente.

Convertire i formati delle etichette

Dal formato dataset DOTA al formato YOLO OBB

La transizione delle etichette dal formato 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 nel formato DOTA, garantendo l'allineamento con il formato OBB di Ultralytics YOLO.

È imperativo convalidare la compatibilità del dataset con il tuo modello e attenersi alle convenzioni di formato necessarie. Dataset correttamente strutturati sono fondamentali per addestrare modelli di object detection efficienti con oriented bounding box.

FAQ

Cosa sono le Oriented Bounding Boxes (OBB) e come vengono utilizzate nei modelli Ultralytics YOLO?

Le Oriented Bounding Boxes (OBB) sono un tipo di annotazione di bounding box in cui la scatola può essere ruotata per allinearsi più strettamente con l'oggetto rilevato, anziché 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, le OBB sono rappresentate dai loro quattro punti d'angolo nel formato YOLO OBB. Ciò consente un rilevamento degli oggetti più accurato poiché le bounding box possono ruotare per adattarsi meglio agli oggetti.

Come posso convertire le mie etichette del dataset DOTA esistenti nel formato YOLO OBB per l'uso con Ultralytics YOLO26?

Puoi convertire le etichette del dataset DOTA nel formato YOLO OBB utilizzando la funzione convert_dota_to_yolo_obb di Ultralytics. Questa conversione garantisce la compatibilità con i modelli Ultralytics YOLO, consentendoti di sfruttare le funzionalità OBB per un'object detection migliorata. 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 addestro un modello YOLO26 con oriented bounding box (OBB) sul mio dataset?

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

Esempio
from ultralytics import YOLO

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

# Train the model on the custom dataset
results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)

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

Quali dataset 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 oriented bounding box per l'object detection.
  • DOTA-v1.5: Una versione intermedia del dataset DOTA, che offre annotazioni aggiuntive e miglioramenti rispetto a DOTA-v1 per compiti di object detection avanzati.
  • DOTA-v2: Questo dataset include 1,7 milioni di istanze con oriented bounding box e 11.268 immagini, concentrandosi principalmente sull'object detection aerea.
  • DOTA8: Un sottoinsieme più piccolo di 8 immagini del dataset DOTA utilizzato per test e controlli di continuous integration (CI).
  • DOTA128: Un sottoinsieme di 128 immagini con tutte le immagini nella cartella train (utilizzate sia per train che per val), che offre maggiore diversità rispetto a DOTA8 pur rimanendo gestibile per lo sviluppo iniziale e la sperimentazione del modello OBB.

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 dataset con oriented bounding box per l'addestramento YOLO26 e, in tal caso, come?

Sì, puoi utilizzare il tuo dataset con oriented bounding box per l'addestramento YOLO26. Assicurati che le annotazioni del tuo dataset siano convertite nel formato YOLO OBB, il che comporta la definizione delle bounding box tramite i loro quattro punti d'angolo. Puoi quindi creare un file di configurazione YAML specificando i percorsi del dataset, le classi e altri dettagli necessari. Per ulteriori informazioni sulla creazione e configurazione dei tuoi dataset, fai riferimento alla sezione Dataset supportati.

Commenti