Ultralytics YOLO27:

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/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

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

Percorsi delle immagini come file `*.txt`
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: person

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

YOLO labeled image with bounding boxes on persons and tie

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

YOLO format label file with normalized coordinates

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.

YOLO dataset directory structure with train and val folders

Esempio di utilizzo#

Ecco come puoi usare i dataset nel 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 (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:

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

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

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

    Le etichette vengono salvate in file *.txt, uno per immagine, formattati come class x_center y_center width height con 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:

    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)

    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.

Commenti