Panoramica dei dataset con Oriented Bounding Box (OBB)#
L'addestramento di un modello di object detection preciso con bounding box orientati (OBB) richiede un set di dati 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 per la conversione dei formati.
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 y4Internamente, YOLO elabora le perdite e gli output nel formato xywhr, che rappresenta il punto centrale (xy), la larghezza, l'altezza e la rotazione del riquadro di delimitazione.

Un esempio di file di etichette *.txt per l'immagine sopra, che contiene un oggetto di classe 0 in formato OBB, potrebbe essere:
0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758Formato 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 🚀 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.zipOgnuno tra train, val e test accetta una directory, un elenco di directory o un file *.txt che elenca un percorso di immagine per riga (i percorsi che iniziano con ./ si risolvono rispetto al file *.txt). Un file *.txt è utile per eseguire il training su un sottoinsieme di una directory, saltare le immagini senza etichetta o combinare immagini da più fonti in un unico split.
path: datasets/dota8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
0: planeUtilizzo#
Per addestrare un modello utilizzando questi formati OBB:
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 bounding box orientati per l'object detection.
- DOTA-v1.5: Una versione intermedia del dataset DOTA, che offre annotazioni aggiuntive e miglioramenti 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, enfatizza il 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 dataset DOTA completo, adatto per testare i flussi di lavoro e i controlli di integrazione continua (CI) dell'addestramento OBB nel repository
ultralytics. - DOTA8 Multispectral: Un sottoinsieme TIFF a 8 immagini e 10 canali per testare l'addestramento OBB multispettrale sulla piattaforma Ultralytics.
- DOTA128: Un sottoinsieme di 128 immagini del dataset DOTA con tutte le immagini nella cartella train (utilizzata sia per train che per val), che offre un buon bilanciamento tra dimensioni e diversità per il test dei modelli OBB.
Incorporare il tuo dataset OBB#
Per chi desidera 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 corrispondente file di configurazione YAML.
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 effettuata con questo script:
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 dataset con il tuo modello e attenersi alle convenzioni di formato necessarie. I dataset correttamente strutturati sono fondamentali per addestrare modelli di object detection efficienti con oriented bounding box.
FAQ#
I bounding box orientati (OBB) sono un tipo di annotazione di bounding box in cui il box può essere ruotato per allinearsi più da vicino all'oggetto rilevato, anziché essere semplicemente allineato 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.
Puoi convertire le etichette del dataset DOTA nel formato YOLO OBB utilizzando la funzione
convert_dota_to_yolo_obbdi Ultralytics. Questa conversione garantisce la compatibilità con i modelli Ultralytics YOLO, consentendoti di sfruttare le funzionalità OBB per un object detection avanzato. 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.
L'addestramento di un modello YOLO26 con OBB prevede di assicurarsi che il dataset sia nel formato YOLO OBB e quindi di utilizzare l'API di Ultralytics per addestrare il modello. Ecco un esempio sia in Python che tramite CLI:
Esempiofrom 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)Ciò garantisce che il tuo modello sfrutti le annotazioni OBB dettagliate per una migliore precisione di rilevamento.
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 aggiuntive e miglioramenti rispetto a DOTA-v1 per attività di object detection avanzate.
- DOTA-v2: Questo dataset include 1,7 milioni di istanze con bounding box orientati e 11.268 immagini, concentrandosi principalmente sull'object detection aereo.
- DOTA8: Un sottoinsieme più piccolo di 8 immagini del dataset DOTA utilizzato per i test e i controlli di integrazione continua (CI).
- DOTA128: Un sottoinsieme di 128 immagini con tutte le immagini nella cartella train (utilizzata sia per train che per val), che offre maggiore diversità rispetto a DOTA8 pur rimanendo gestibile per lo sviluppo iniziale del modello OBB e la sperimentazione.
Questi dataset sono pensati per scenari in cui gli OBB offrono un vantaggio significativo, come l'analisi di immagini aeree e satellitari.
Sì, puoi usare il tuo dataset con bounding box orientati per l'addestramento di YOLO26. Assicurati che le annotazioni del tuo dataset siano convertite nel formato YOLO OBB, il che comporta la definizione dei 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 la configurazione dei tuoi dataset, fai riferimento alla sezione Dataset supportati.



