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/cfg/datasets/coco8.yaml
# 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.zip

Le 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).

YOLO labeled image with bounding boxes on persons and tie

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

YOLO format label file with normalized coordinates

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.

YOLO dataset directory structure with train and val folders

Esempio di utilizzo

Ecco come puoi usare i dataset in formato YOLO per addestrare il tuo modello:

Esempio
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:

  1. Record del dataset (prima riga): contiene i metadati del dataset, inclusi il tipo di attività, i nomi delle classi e informazioni generali
  2. Record dell'immagine (righe successive): contiene i dati della singola immagine, inclusi dimensioni, annotazioni e percorsi dei file
Esempio NDJSON
{
    "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:

Esempio
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:

Esempio
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.zip

Le 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:

Esempio
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.

Commenti