Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Get Started
Lezioneprincipiante

Scrivi un file YAML del dataset

Scrivi data.yaml per indicare a Ultralytics le cartelle e i nomi delle classi, fai in modo che i percorsi siano validi da qualsiasi posizione e verifica il tutto con yolo val.

Il file YAML del dataset è il contratto tra le tue cartelle e ogni comando Ultralytics. Se sbagli un percorso, non funziona nulla; se sbagli l'ordine delle classi, tutto funziona, ma ogni previsione avrà un nome errato senza alcun avviso.

In questa lezione scriverai data.yaml per il dataset di pillole, imparerai esattamente come Ultralytics risolve i percorsi affinché funzioni anche sul computer di un collega e lo verificherai con un comando di convalida su una riga, che fornirà anche il valore di riferimento da superare con l'addestramento.

Esito

Puoi scrivere un data.yaml valido da qualsiasi directory di lavoro, mantenere coerenti gli indici delle classi e leggere la riga di scansione yolo val per confermare che il dataset è collegato correttamente.

Percorso rapido
Se sai già come muoverti, ecco la versione breve.
  1. Imposta path sulla radice del dataset e train/val sulle cartelle delle immagini, con percorsi relativi alla radice.

  2. Elenca names come indice → nome, in corrispondenza esatta con i file di etichette.

  3. Esegui yolo val model=yolo26n.pt data=my_dataset/data.yaml e leggi la riga di scansione.

  4. Rendi assoluto path prima di condividerlo; aggiungi nuove classi senza mai modificare quelle esistenti.

Pratico

Scrivi il file#

Pagina del profilo di Ultralytics Platform con l'elenco dei dataset dell'utente e un pulsante Nuovo dataset

I dataset su Ultralytics Platform hanno classi e suddivisioni proprie; per addestrare, si fa riferimento a essi con un URI come data=ul://username/datasets/name. Sul tuo computer, il file YAML svolge questo ruolo. Salvalo come my_dataset/data.yaml:

path: my_dataset # dataset root: absolute, or relative to where you run yolo
train: images/train # relative to path
val: images/val # relative to path
# test: images/test  # optional held-out split

names:
  0: pill
ChiaveObbligatorioSignificato
pathNoRadice del dataset; train, val e test sono relativi a essa. Se omessa, si usa la cartella del file YAML
train, valSìUna cartella di immagini, un file .txt che elenca i percorsi delle immagini o un elenco di uno di questi elementi
testNoImmagini di test tenute da parte, valutate solo con split=test
namesSìIndice della classe → nome; la lunghezza determina il numero di classi
downloadNoURL o script che scarica il dataset quando le immagini non sono presenti

train e val indicano cartelle di immagini; le etichette si trovano sostituendo images con labels. Il file YAML coco8 è un esempio minimo funzionante, mentre il file YAML VOC ne mostra uno più ampio.

Esempio pratico: verifica il funzionamento#

La convalida con il modello preaddestrato è il modo più rapido per controllare il flusso completo. Legge tutte le immagini e le etichette, segnala i problemi e calcola le metriche:

yolo val model=yolo26n.pt data=my_dataset/data.yaml
val: Scanning my_dataset/labels/val... 23 images, 0 backgrounds, 0 corrupt: 100%
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all         23        399     0.0256    0.00251      0.001     0.0002

Leggilo in ordine:

  1. Scanning my_dataset/labels/val: la cartella effettivamente individuata da Ultralytics. Verifica che sia quella prevista.
  2. 23 images, 0 backgrounds, 0 corrupt: ogni immagine di convalida ha un file di etichette valido. Gli sfondi non previsti o qualsiasi conteggio di elementi corrotti ti riportano alla lezione precedente.
  3. 399 istanze: i file di etichette contengono 399 pillole.
  4. mAP50-95 pari a 0.0002: è corretto, non è un errore. COCO non include la classe delle pillole, quindi il modello preaddestrato non riesce a trovarle. Questo punteggio quasi nullo è il tuo valore di riferimento. Se le tue classi sono presenti in COCO, come persone o automobili, lo stesso comando fornisce invece un valore di riferimento significativo.

Fai in modo che i percorsi siano validi ovunque#

La maggior parte degli errori «immagini non trovate» dipende dai percorsi. Ultralytics risolve path in questo modo:

datasets_dir è un'impostazione di Ultralytics; yolo settings la stampa e la guida alle impostazioni spiega come modificarla. I dataset integrati si affidano a questa alternativa: coco8.yaml imposta path: coco8 e un URL download:, così data=coco8.yaml funziona da qualsiasi cartella.

Regole per decidere:

  • Solo tu, e sempre dalla cartella del progetto? Un path relativo va bene.
  • Compagni di team, server, CI o notebook in altre cartelle? Usa un path assoluto.
  • I dati si trovano altrove e devono essere scaricati automaticamente? Aggiungi download: con un URL zip.

Mantieni gli indici delle classi come contratto#

L'intero all'inizio di ogni riga di etichetta è un indice in names. Ultralytics verifica l'intervallo — Label class 1 exceeds dataset class count 1 — ma non può verificarne il significato. Se il tuo strumento di etichettatura ha esportato 0: forklift, 1: person e il tuo YAML dichiara 0: person, 1: forklift, l'addestramento riesce, la mAP di validazione sembra corretta e ogni predizione riporta il nome sbagliato. Mantieni un'unica fonte di verità per l'elenco delle classi, condivisa dallo strumento di etichettatura, dallo script di conversione, dal YAML e dal codice di deployment.

Evita questi errori#

Percorso relativo dalla cartella sbagliata

Sintomo: FileNotFoundError: Dataset 'data.yaml' images not found, missing path '.../datasets/my_dataset/images/val', con una nota sulla directory di download del dataset. Causa: hai eseguito il comando da un'altra cartella, quindi path non esisteva e Ultralytics ha cercato invece in datasets_dir. Soluzione: esegui il comando dalla cartella del progetto oppure rendi assoluto path.

Riordinare i nomi è distruttivo

Scambiare o eliminare voci in names senza riassegnare le etichette cambia silenziosamente il significato di tutte le etichette. Il modello si addestra e fa previsioni sulle classi sbagliate, senza generare errori. Aggiungi le nuove classi alla fine, usando l'indice libero successivo, e non rinumerare mai quelle esistenti.

Le liste vengono unite in un unico punteggio

val: [images/val_day, images/val_night] unisce entrambe le cartelle in un unico set di validazione e restituisce un solo valore. Per esaminare separatamente giorno e notte — o un set di regressione selezionato insieme a un nuovo campione di produzione — mantieni un file YAML per ogni set e convalidali separatamente. Uno split test che valuti una sola volta, con split=test, è trattato in Suddividi correttamente il dataset.

Le impostazioni di addestramento, come l'aumento dei dati e la memorizzazione nella cache, sono argomenti di train, non chiavi YAML; sono tutte riportate nel riferimento della configurazione.

Provalo

Scrivi my_dataset/data.yaml ed esegui yolo val model=yolo26n.pt data=my_dataset/data.yaml. Registra il numero di immagini, sfondi, elementi corrotti e istanze, insieme alla mAP50-95 di riferimento. Poi cd in un'altra cartella, esegui di nuovo il comando con il percorso del YAML, leggi l'errore e correggi il YAML in modo che il comando funzioni da qualsiasi posizione. Consegna il YAML corretto e le due righe della scansione.

Criteri di completamento
La lezione è completata quando tutte le seguenti condizioni sono soddisfatte.
  • yolo val segnala 23 immagini, 0 sfondi e 0 elementi corrotti per il tuo YAML.

  • Hai registrato la mAP50-95 di riferimento del modello preaddestrato per il dataset.

  • Il tuo YAML funziona da qualsiasi directory di lavoro perché path è assoluto.

Mostra la soluzione
path: /home/you/projects/pills/my_dataset # absolute path to the dataset root
train: images/train
val: images/val

names:
  0: pill
val: Scanning /home/you/projects/pills/my_dataset/labels/val... 23 images, 0 backgrounds, 0 corrupt
                   all         23        399     0.0256    0.00251      0.001     0.0002

Da un'altra cartella, la versione relativa non ha funzionato con Dataset ... images not found perché my_dataset non esisteva lì e anche la posizione alternativa datasets_dir non conteneva una copia. Il path assoluto elimina questa ricerca. La mAP50-95 di riferimento è circa 0: il modello preaddestrato non ha una classe pillola.

Prossimi passi

I dati sono collegati e il valore di riferimento è registrato. Ora addestra YOLO26 su questi dati.

Accedi per salvare i progressi