Panoramica dei dataset per il rilevamento di oggetti
L'addestramento di un modello di object detection robusto e preciso richiede un dataset completo. Questa guida introduce vari formati di dataset compatibili con il modello Ultralytics YOLO e fornisce approfondimenti sulla loro struttura, sull'utilizzo e su come convertire tra diversi formati.
Formati di dataset supportati
Formato Ultralytics YOLO
Il formato Ultralytics YOLO è un formato di configurazione del dataset che ti consente di definire la directory principale del dataset, i percorsi relativi alle directory delle immagini di addestramento/validazione/test o ai file *.txt contenenti i percorsi delle immagini, e un dizionario di nomi delle classi. Ecco un esempio:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8 ← 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: coco8 # 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
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zipLe etichette per questo formato dovrebbero essere esportate nel formato YOLO con un file *.txt per ogni immagine. Se non ci sono oggetti in un'immagine, non è richiesto alcun file *.txt. Il file *.txt dovrebbe essere formattato con una riga per ogni oggetto nel formato class x_center y_center width height. Le coordinate del riquadro devono essere nel formato xywh normalizzato (da 0 a 1). Se i tuoi riquadri sono in pixel, dovresti dividere x_center e width per la larghezza dell'immagine, e y_center e height per l'altezza dell'immagine. I numeri delle classi devono essere indicizzati a zero (partendo da 0).

Il file delle etichette corrispondente all'immagine sopra contiene 2 persone (classe 0) e una cravatta (classe 27):

Quando utilizzi il formato Ultralytics YOLO, organizza le immagini e le etichette di addestramento e validazione come mostrato nell'esempio del dataset COCO8 qui sotto.

Esempio di utilizzo
Ecco come puoi usare i dataset in formato YOLO per addestrare il tuo modello:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Formato Ultralytics NDJSON
Il formato NDJSON (Newline Delimited JSON) fornisce un modo alternativo per definire i dataset per i modelli Ultralytics YOLO. Questo formato memorizza i metadati del dataset e le annotazioni in un unico file dove ogni riga contiene un oggetto JSON separato.
Un file di dataset NDJSON contiene:
- Record del dataset (prima riga): contiene i metadati del dataset, inclusi il tipo di attività, i nomi delle classi e informazioni generali
- Record dell'immagine (righe successive): contiene i dati della singola immagine, inclusi dimensioni, annotazioni e percorsi dei file
{
"type": "dataset",
"task": "detect",
"name": "Example",
"description": "COCO NDJSON example dataset",
"url": "https://app.ultralytics.com/user/datasets/example",
"class_names": { "0": "person", "1": "bicycle", "2": "car" },
"bytes": 426342,
"version": 0,
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2025-01-01T00:00:00Z"
}Esempio di utilizzo
Per utilizzare un dataset NDJSON con YOLO26, specifica semplicemente il percorso del file .ndjson:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)Vantaggi del formato NDJSON
- File singolo: Tutte le informazioni del dataset contenute in un unico file
- Streaming: Puoi elaborare grandi dataset riga per riga senza caricare tutto in memoria
- Integrazione cloud: Supporta URL di immagini remote per l'addestramento basato su cloud
- Estensibile: Facile aggiungere campi di metadati personalizzati
- Controllo versione: Il formato a file singolo funziona bene con git e i sistemi di controllo versione
Dataset supportati
Ecco un elenco dei dataset supportati e una breve descrizione per ciascuno:
- African-wildlife: Un dataset che presenta immagini di fauna selvatica africana, tra cui bufali, elefanti, rinoceronti e zebre.
- Argoverse: Un dataset contenente dati di tracciamento 3D e previsione del movimento da ambienti urbani con ricche annotazioni.
- Brain-tumor: Un dataset per rilevare tumori cerebrali che include immagini di risonanza magnetica o TAC con dettagli sulla presenza, posizione e caratteristiche del tumore.
- COCO: Common Objects in Context (COCO) è un dataset su larga scala per object detection, segmentazione e captioning con 80 categorie di oggetti.
- COCO8: Un sottoinsieme più piccolo delle prime 4 immagini di COCO train e COCO val, adatto per test rapidi.
- COCO8-Grayscale: Una versione in scala di grigi di COCO8 creata convertendo RGB in scala di grigi, utile per la valutazione di modelli a canale singolo.
- COCO8-Multispectral: Una versione multispettrale a 10 canali di COCO8 creata interpolando le lunghezze d'onda RGB, utile per la valutazione di modelli sensibili allo spettro.
- COCO12-Formats: Un dataset di test con 12 immagini che copre tutti i formati di immagine supportati (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) per convalidare le pipeline di caricamento delle immagini.
- COCO128: Un sottoinsieme più piccolo delle prime 128 immagini di COCO train e COCO val, adatto per i test.
- Construction-PPE: Un dataset che presenta lavoratori in cantieri edili con dispositivi di sicurezza etichettati come caschi, giubbotti, guanti, stivali e occhiali protettivi, incluse annotazioni per attrezzature mancanti come no_helmet, no_googles per il monitoraggio della conformità nel mondo reale.
- Global Wheat 2020: Un dataset contenente immagini di spighe di grano per la Global Wheat Challenge 2020.
- HomeObjects-3K: Un dataset di articoli per la casa tra cui letti, sedie, TV e altro, ideale per applicazioni di automazione domestica smart, robotica, realtà aumentata e analisi del layout della stanza.
- KITTI: Un dataset che presenta scene di guida nel mondo reale con dati stereo, LiDAR e GPS/IMU, utilizzato qui per attività di 2D object detection come l'identificazione di auto, pedoni e ciclisti in ambienti urbani, rurali e autostradali.
- LVIS: Un dataset su larga scala per object detection, segmentazione e captioning con 1203 categorie di oggetti.
- Medical-pills: Un dataset che presenta immagini di pillole mediche, annotate per applicazioni come il controllo qualità farmaceutico, lo smistamento delle pillole e la conformità normativa.
- Objects365: Un dataset su larga scala di alta qualità per l'object detection con 365 categorie di oggetti e oltre 600.000 immagini annotate.
- OpenImagesV7: Un dataset completo di Google con 1,7 milioni di immagini di addestramento e 42k immagini di validazione.
- Roboflow 100: Un benchmark diversificato per l'object detection con 100 dataset che coprono sette domini di immagini per una valutazione completa del modello.
- Signature: Un dataset che presenta immagini di vari documenti con firme annotate, a supporto della ricerca sulla verifica dei documenti e il rilevamento delle frodi.
- SKU-110K: Un dataset che presenta object detection densa in ambienti di vendita al dettaglio con oltre 11.000 immagini e 1,7 milioni di bounding boxes.
- TT100K: Esplora il dataset di segnali stradali Tsinghua-Tencent 100K (TT100K) con 100.000 immagini di street view e oltre 30.000 segnali stradali annotati per un rilevamento e una classificazione robusti.
- VisDrone: Un dataset contenente dati di object detection e multi-object tracking da immagini catturate da droni con oltre 10.000 immagini e sequenze video.
- VOC: Il dataset Pascal Visual Object Classes (VOC) per object detection e segmentazione con 20 classi di oggetti e oltre 11.000 immagini.
- xView: Un dataset per l'object detection in immagini aeree con 60 categorie di oggetti e oltre 1 milione di oggetti annotati.
Aggiungi il tuo dataset
Se hai il tuo dataset e desideri utilizzarlo per addestrare modelli di rilevamento con il formato Ultralytics YOLO, assicurati che segua il formato specificato sopra alla voce "Formato Ultralytics 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
Da formato dataset COCO a formato YOLO
Puoi convertire facilmente le etichette dal popolare formato del dataset COCO al formato YOLO utilizzando il seguente frammento di codice:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")Questo strumento di conversione può essere utilizzato per convertire il dataset COCO o qualsiasi dataset in formato COCO nel formato Ultralytics YOLO. Il processo trasforma le annotazioni COCO basate su JSON nel formato YOLO più semplice basato su testo, rendendolo compatibile con i modelli Ultralytics YOLO.
Ricorda di ricontrollare se il dataset che vuoi usare è compatibile con il tuo modello e segue le convenzioni di formato necessarie. Dataset formattati correttamente sono cruciali per addestrare modelli di object detection di successo.
FAQ
Qual è il formato del dataset Ultralytics YOLO e come strutturarlo?
Il formato Ultralytics YOLO è una configurazione strutturata per definire i dataset nei tuoi progetti di addestramento. Comporta l'impostazione dei percorsi alle tue immagini di addestramento, validazione e test e alle relative etichette. Ad esempio:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8 ← 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: coco8 # 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
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zipLe etichette vengono salvate in file *.txt con un file per ogni immagine, formattati come class x_center y_center width height con coordinate normalizzate. Per una guida dettagliata, vedi l'esempio del dataset COCO8.
Come converto un dataset COCO nel formato YOLO?
Puoi convertire un dataset COCO nel formato YOLO utilizzando gli strumenti di conversione Ultralytics. Ecco un metodo rapido:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/")Questo codice convertirà le tue annotazioni COCO nel formato YOLO, consentendo un'integrazione perfetta con i modelli Ultralytics YOLO. Per ulteriori dettagli, visita la sezione Porta o converti i formati delle etichette.
Quali dataset sono supportati da Ultralytics YOLO per l'object detection?
Ultralytics YOLO supporta un'ampia gamma di dataset, inclusi:
Ogni pagina del dataset fornisce informazioni dettagliate sulla struttura e sull'utilizzo su misura per un efficiente addestramento di YOLO26. Esplora l'elenco completo nella sezione Dataset supportati.
Come inizio ad addestrare un modello YOLO26 usando il mio dataset?
Per iniziare ad addestrare un modello YOLO26, assicurati che il tuo dataset sia formattato correttamente e che i percorsi siano definiti in un file YAML. Usa lo script seguente per iniziare l'addestramento:
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)Fai riferimento alla sezione Utilizzo per ulteriori dettagli sull'utilizzo delle diverse modalità, inclusi i comandi CLI.
Dove posso trovare esempi pratici di utilizzo di Ultralytics YOLO per l'object detection?
Ultralytics fornisce numerosi esempi e guide pratiche per utilizzare YOLO26 in diverse applicazioni. Per una panoramica completa, visita il Blog di Ultralytics dove puoi trovare case study, tutorial dettagliati e storie della community che mostrano object detection, segmentazione e altro con YOLO26. Per esempi specifici, controlla la sezione Utilizzo nella documentazione.