Panoramica dei dataset per il rilevamento degli oggetti#
Per addestrare un modello di rilevamento degli oggetti robusto e accurato è necessario un dataset completo. Questa guida presenta vari formati di dataset compatibili con il modello Ultralytics YOLO e fornisce informazioni sulla loro struttura, sul loro utilizzo e sulla conversione tra formati diversi.
Formati di dataset supportati#
Formato Ultralytics YOLO#
Il formato Ultralytics YOLO è un formato di configurazione del dataset che ti consente di definire la directory radice 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 dei 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.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 ./ vengono risolti relativamente al file *.txt). Un file *.txt è utile per addestrare su un sottoinsieme di una directory, ignorare le immagini senza etichette o combinare immagini provenienti da più origini in una singola suddivisione.
path: datasets/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
0: personLe etichette per questo formato devono essere esportate nel formato YOLO con un file *.txt per immagine. Se un'immagine non contiene oggetti, non è necessario alcun file *.txt. Il file *.txt deve essere formattato con una riga per oggetto nel formato class x_center y_center width height. Le coordinate dei riquadri devono essere nel formato xywh normalizzato (da 0 a 1). Se i riquadri sono espressi in pixel, devi 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 partire da zero (iniziare con 0).

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

Quando usi 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 nel 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 (JSON delimitato da nuove righe) offre un metodo alternativo per definire i dataset per i modelli Ultralytics YOLO. Questo formato archivia i metadati e le annotazioni del dataset in un singolo file, in cui ogni riga contiene un oggetto JSON separato.
Un file di dataset NDJSON contiene:
- Record del dataset (prima riga): contiene i metadati del dataset, tra cui il tipo di attività, i nomi delle classi e le informazioni generali
- Record delle immagini (righe successive): contiene i dati delle singole immagini, tra cui dimensioni, annotazioni e percorsi dei file
{
"type": "dataset",
"task": "detect",
"name": "Example",
"description": "COCO NDJSON example dataset",
"url": "https://platform.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"
}Metadati personalizzati delle immagini#
Ogni record dell'immagine può includere un oggetto JSON metadata per il contesto specifico dell'applicazione, ad esempio condizioni di acquisizione, identificativi dell'attrezzatura o stato della revisione. Sono supportati i valori annidati. Quando i dati vengono importati in Ultralytics Platform, i metadati vengono memorizzati insieme all'immagine e possono essere visualizzati o modificati dal relativo pannello informativo a schermo intero.
{
"type": "image",
"file": "airbus-wing.jpg",
"url": "https://example.com/airbus-wing.jpg",
"split": "train",
"metadata": {
"aircraft": { "family": "A350", "section": "wing" },
"inspectionStatus": "reviewed"
}
}La piattaforma limita le chiavi dei metadati di primo livello a 128 caratteri, l'oggetto dei metadati serializzato di ogni immagine a 500.000 caratteri e i metadati effettivi combinati in una singola importazione NDJSON a 500.000 caratteri.
Esempio di utilizzo#
Per usare 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 sono contenute in un unico file
- Streaming: consente di elaborare dataset di grandi dimensioni riga per riga senza caricare tutto in memoria
- Integrazione cloud: supporta URL di immagini remote per l'addestramento basato sul 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. La maggior parte di questi dataset è ospitata anche sulla Ultralytics Platform, dove puoi esplorare le immagini e le annotazioni, visualizzare le statistiche del dataset e clonarli per l'addestramento sul cloud.
- African-wildlife: un dataset con immagini della fauna selvatica africana, tra cui bufali, elefanti, rinoceronti e zebre.
- Argoverse: un dataset contenente dati di tracking 3D e previsione del movimento provenienti da ambienti urbani, con annotazioni dettagliate.
- Brain-tumor: un dataset per il rilevamento dei tumori cerebrali che include immagini di scansioni MRI o CT con dettagli sulla presenza, la posizione e le caratteristiche dei tumori.
- COCO: Common Objects in Context (COCO) è un dataset su larga scala per il rilevamento degli oggetti, la segmentazione e la generazione di didascalie, con 80 categorie di oggetti.
- COCO8: Un sottoinsieme più piccolo delle prime 8 immagini di COCO train2017, 4 per l'addestramento e 4 per la validazione, 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 consapevoli dello spettro.
- COCO12-Formats: un dataset di test con 12 immagini che coprono 12 formati di immagine supportati (AVIF, BMP, DNG, HEIC, JP2, JPEG, JPG, MPO, PNG, TIF, TIFF, WebP) per la convalida delle pipeline di caricamento delle immagini.
- COCO16: un sottoinsieme delle prime 16 immagini di COCO train2017 (8 di addestramento + 8 di validazione), adatto per test rapidi.
- COCO32: un sottoinsieme delle prime 32 immagini di COCO train2017 (16 di addestramento + 16 di validazione), adatto per test rapidi.
- COCO64: un sottoinsieme delle prime 64 immagini di COCO train2017 (32 di addestramento + 32 di validazione), adatto per test rapidi.
- COCO128: un sottoinsieme più piccolo delle prime 128 immagini di COCO train2017, adatto per i test.
- Construction-PPE: un dataset con lavoratori nei cantieri edili e dispositivi di sicurezza etichettati, come caschi, giubbotti, guanti, stivali e occhiali, incluse annotazioni sulle attrezzature mancanti come no_helmet e no_goggle 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 oggetti domestici da interno, tra cui letti, sedie, TV e altro, ideale per applicazioni di automazione domestica intelligente, robotica, realtà aumentata e analisi della disposizione degli ambienti.
- KITTI: un dataset con scene di guida del mondo reale e dati stereo, LiDAR e GPS/IMU, utilizzato qui per attività di rilevamento di oggetti 2D, come l'identificazione di automobili, pedoni e ciclisti in ambienti urbani, rurali e autostradali.
- LVIS: un dataset su larga scala per il rilevamento, la segmentazione e il captioning degli oggetti, con 1203 categorie di oggetti.
- Medical-pills: un dataset con immagini di pillole medicinali, annotate per applicazioni come il controllo qualità farmaceutico, lo smistamento delle pillole e la conformità normativa.
- Objects365: un dataset di alta qualità e su larga scala per il rilevamento degli oggetti, con 365 categorie di oggetti e oltre 600K immagini annotate.
- OpenImagesV7: un dataset completo di Google con 1,7 M di immagini di addestramento e 42k immagini di validazione.
- Roboflow 100: un benchmark diversificato per il rilevamento degli oggetti, con 100 dataset che coprono sette domini di immagini per una valutazione completa dei modelli.
- Signature: un dataset con immagini di vari documenti contenenti firme annotate, a supporto della ricerca sulla verifica dei documenti e sul rilevamento delle frodi.
- SKU-110K: un dataset con rilevamento denso degli oggetti in ambienti di vendita al dettaglio, con oltre 11K immagini e 1,7 milioni di riquadri di delimitazione.
- TT100K: esplora il dataset dei segnali stradali Tsinghua-Tencent 100K (TT100K), con 16.817 immagini panoramiche stradali distribuite in 221 categorie di segnali per un rilevamento e una classificazione robusti.
- VisDrone: un dataset contenente dati di rilevamento degli oggetti e tracking multi-oggetto provenienti da immagini acquisite da droni, con oltre 10K immagini e sequenze video.
- VOC: il dataset Pascal Visual Object Classes (VOC) per il rilevamento e la segmentazione degli oggetti, con 20 classi di oggetti e oltre 11K immagini.
- xView: un dataset per il rilevamento degli oggetti in immagini aeree, con 60 categorie di oggetti e oltre 1 milione di oggetti annotati.
Aggiungere il tuo dataset#
Se hai un tuo dataset e vuoi usarlo per addestrare modelli di rilevamento con il formato Ultralytics YOLO, assicurati che segua il formato specificato sopra nella sezione "Formato Ultralytics YOLO". Converti le annotazioni nel formato richiesto e specifica i percorsi, il numero di classi e i nomi delle classi nel file di configurazione YAML.
Trasferire o convertire i formati delle etichette#
Dal formato del dataset COCO al formato YOLO#
Puoi convertire facilmente le etichette dal noto formato del dataset COCO al formato YOLO usando 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 usato per convertire il dataset COCO o qualsiasi dataset nel formato COCO al formato Ultralytics YOLO. Il processo trasforma le annotazioni COCO basate su JSON nel più semplice formato YOLO basato su testo, rendendolo compatibile con i modelli Ultralytics YOLO. Per il flusso di lavoro completo, inclusi la mappatura degli ID delle classi, la struttura delle directory e le annotazioni di segmentazione o posa, consulta Convertire le annotazioni COCO in YOLO.
Ricordati di verificare attentamente che il dataset che vuoi usare sia compatibile con il tuo modello e rispetti le necessarie convenzioni di formato. I dataset formattati correttamente sono fondamentali per addestrare modelli di rilevamento degli oggetti efficaci.
E adesso?#
Dopo aver formattato il dataset, inizia ad addestrare il tuo modello. Non sai da quale modello preaddestrato partire? Confronta le opzioni nella famiglia di modelli YOLO26.
FAQ#
Il formato Ultralytics YOLO è una configurazione strutturata per definire i dataset nei tuoi progetti di addestramento. Prevede l'impostazione dei percorsi delle immagini di addestramento, validazione e test e delle 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, uno per immagine, formattati comeclass x_center y_center width heightcon coordinate normalizzate. Per una guida dettagliata, consulta l'esempio del dataset COCO8.Puoi convertire un dataset COCO nel formato YOLO usando 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 annotazioni COCO nel formato YOLO, consentendo un'integrazione perfetta con i modelli Ultralytics YOLO. Per ulteriori dettagli, visita la sezione Trasferire o convertire i formati delle etichette.
Ultralytics YOLO supporta un'ampia gamma di dataset, tra cui:
Ogni pagina del dataset fornisce informazioni dettagliate sulla struttura e sull'utilizzo, pensate per un addestramento efficiente con YOLO26. Esplora l'elenco completo nella sezione Dataset supportati.
Per iniziare ad addestrare un modello YOLO26, assicurati che il dataset sia formattato correttamente e che i percorsi siano definiti in un file YAML. Usa il seguente script per iniziare l'addestramento:
Esempiofrom ultralytics import YOLO model = YOLO("yolo26n.pt") # Load a pretrained model results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)Consulta la sezione Utilizzo per ulteriori dettagli sull'utilizzo delle diverse modalità, inclusi i comandi CLI.
Ultralytics offre numerosi esempi e guide pratiche sull'uso di YOLO26 in applicazioni diverse. Per una panoramica completa, visita il Blog Ultralytics, dove puoi trovare casi di studio, tutorial dettagliati e storie della community che mostrano il rilevamento degli oggetti, la segmentazione e altro ancora con YOLO26. Per esempi specifici, consulta la sezione Utilizzo nella documentazione.