Ultralytics YOLO27:
Get Started

Addestra YOLOv5 con dati personalizzati#

📚 Questa guida spiega come addestrare il tuo dataset personalizzato usando il modello YOLOv5 🚀. L'addestramento di modelli personalizzati è un passaggio fondamentale per adattare le soluzioni di visione artificiale a specifiche applicazioni del mondo reale, al di là del generico rilevamento degli oggetti.

Prima di iniziare#

Per prima cosa, assicurati di aver configurato l'ambiente necessario. Clona il repository di YOLOv5 e installa le dipendenze richieste da requirements.txt. È essenziale disporre di un ambiente Python>=3.8.0 con PyTorch>=1.8. Se non vengono trovati localmente, i modelli e i dataset vengono scaricati automaticamente dalla versione più recente di YOLOv5.

git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies

Addestra con dati personalizzati#

Diagramma del ciclo di apprendimento attivo di Ultralytics

Lo sviluppo di un modello personalizzato di rilevamento degli oggetti è un processo iterativo:

  1. Raccogli e organizza le immagini: raccogli immagini pertinenti alla tua attività specifica. Dati di alta qualità e diversificati sono fondamentali. Consulta la nostra guida alla raccolta e annotazione dei dati.
  2. Etichetta gli oggetti: annota con precisione gli oggetti di interesse nelle immagini.
  3. Addestra un modello: usa i dati etichettati per addestrare il tuo modello YOLOv5. Sfrutta il transfer learning iniziando da pesi preaddestrati.
  4. Distribuisci e predici: usa il modello addestrato per eseguire inferenze su nuovi dati mai visti.
  5. Raccogli i casi limite: individua gli scenari in cui il modello ha prestazioni scarse (casi limite) e aggiungi dati simili al dataset per migliorarne la robustezza. Ripeti il ciclo.

Ultralytics Platform offre una soluzione completa e semplificata, senza codice, per l'intero ciclo di operazioni di machine learning (MLOps), inclusi la gestione dei dataset, l'addestramento dei modelli e la distribuzione.

Licenze

Ultralytics offre due opzioni di licenza per soddisfare diversi scenari d'uso:

  • Licenza AGPL-3.0: questa licenza open source approvata dall'OSI è ideale per studenti, ricercatori e appassionati che credono nella collaborazione aperta e nella condivisione delle conoscenze. Richiede che le opere derivate siano distribuite con la stessa licenza. Consulta il file LICENSE per tutti i dettagli.
  • Licenza Enterprise: per lo sviluppo e l'uso in produzione, questa licenza consente di integrare facilmente il software e i modelli AI di Ultralytics nei prodotti e servizi aziendali, inclusi strumenti interni, flussi di lavoro automatizzati e deployment in produzione, senza dover rispettare i requisiti open source di AGPL-3.0. Per iniziare, contattaci tramite Ultralytics Licensing.

Scopri più a fondo le nostre opzioni di licenza nella pagina Licenze Ultralytics.

Prima di avviare l'addestramento, è essenziale preparare il dataset.

1. Crea un dataset#

I modelli YOLOv5 richiedono dati etichettati per apprendere le caratteristiche visive delle classi di oggetti. Organizzare correttamente il dataset è fondamentale.

1.1 Crea dataset.yaml#

Il file di configurazione del dataset (ad es. coco128.yaml) descrive la struttura del dataset, i nomi delle classi e i percorsi delle directory delle immagini. COCO128 è un piccolo dataset di esempio composto dalle prime 128 immagini del vasto dataset COCO. È utile per testare rapidamente la pipeline di addestramento e diagnosticare potenziali problemi come l'overfitting.

La struttura del file dataset.yaml include:

  • path: la directory principale contenente il dataset.
  • train, val, test: percorsi relativi da path alle directory contenenti immagini o file di testo con gli elenchi dei percorsi delle immagini per i set di addestramento, convalida e test.
  • names: un dizionario che associa gli indici delle classi (a partire da 0) ai nomi delle rispettive classi.

Puoi impostare path su una directory assoluta (ad es. /home/user/datasets/coco128) o su un percorso relativo come ../datasets/coco128 quando avvii l'addestramento dalla directory principale del repository YOLOv5.

Di seguito è riportata la struttura di coco128.yaml (visualizza su GitHub):

# Dataset root directory relative to the yolov5 directory
path: ../datasets/coco128

# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images

# Classes (example using 80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ... (remaining COCO classes)
    77: teddy bear
    78: hair drier
    79: toothbrush

1.2 Sfrutta i modelli per l'etichettatura automatizzata#

L'etichettatura manuale è l'approccio più comune, ma richiede molto tempo. I modelli di base possono automatizzare o semiautomatizzare le annotazioni e velocizzare la creazione del dataset. Ecco alcuni modelli che possono aiutarti a generare etichette:

  • Google Gemini: i modelli multimodali di grandi dimensioni come Gemini hanno potenti capacità di comprensione delle immagini. Puoi chiedere loro di identificare e localizzare gli oggetti nelle immagini, generando riquadri di delimitazione o descrizioni convertibili in etichette nel formato YOLO. Scopri il loro potenziale nel notebook tutorial fornito.
  • SAM2 (Modello Segment Anything 2): i modelli di base dedicati alla segmentazione, come SAM2, possono identificare e delineare gli oggetti con grande precisione. Sebbene siano pensati principalmente per la segmentazione, le maschere risultanti possono spesso essere convertite in annotazioni con riquadri di delimitazione adatte alle attività di rilevamento degli oggetti.
  • YOLOWorld: questo modello offre funzionalità di rilevamento a vocabolario aperto. Puoi fornire descrizioni testuali degli oggetti che ti interessano e YOLOWorld può individuarli nelle immagini senza essere stato addestrato in precedenza su quelle specifiche classi. Puoi usarlo come punto di partenza per generare etichette iniziali, da perfezionare in seguito.

L'uso di questi modelli può fornire una fase di «pre-etichettatura», riducendo il lavoro manuale necessario. Tuttavia, è fondamentale verificare e perfezionare le etichette generate automaticamente per garantire accuratezza e coerenza, poiché la qualità incide direttamente sulle prestazioni del modello YOLOv5 addestrato. Dopo aver generato (ed eventualmente perfezionato) le etichette, assicurati che rispettino il formato YOLO: un file *.txt per immagine, con ogni riga che rappresenta un oggetto come class_index x_center y_center width height (coordinate normalizzate, indice della classe a partire da zero). Se un'immagine non contiene oggetti di interesse, non è necessario alcun file *.txt corrispondente.

Le specifiche dei file *.txt nel formato YOLO sono precise:

  • Una riga per ogni riquadro di delimitazione.
  • Ogni riga deve contenere: class_index x_center y_center width height.
  • Le coordinate devono essere normalizzate in un intervallo compreso tra 0 e 1. Per farlo, dividi i valori in pixel di x_center e width per la larghezza totale dell'immagine e dividi y_center e height per l'altezza totale dell'immagine.
  • Gli indici delle classi partono da zero (ovvero, la prima classe è rappresentata da 0, la seconda da 1 e così via).

Example image with two persons and a tie annotated

Il file di etichette corrispondente all'immagine sopra, contenente due oggetti «person» (indice di classe 0) e un oggetto «tie» (indice di classe 27), sarebbe così:

YOLO format label file content example

1.3 Organizza le directory#

Struttura la directory dei dataset come illustrato di seguito. Per impostazione predefinita, YOLOv5 prevede che la directory del dataset (ad es. /coco128) si trovi in una cartella /datasets accanto alla directory del repository /yolov5.

YOLOv5 individua automaticamente le etichette di ogni immagine sostituendo l'ultima occorrenza di /images/ nel percorso dell'immagine con /labels/. Ad esempio:

../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file

La struttura di directory consigliata è:

/datasets/
└── coco128/  # Dataset root
    ├── images/
    │   ├── train2017/  # Training images
    │   │   ├── 000000000009.jpg
    │   │   └── ...
    │   └── val2017/    # Validation images (optional if using same set for train/val)
    │       └── ...
    └── labels/
        ├── train2017/  # Training labels
        │   ├── 000000000009.txt
        │   └── ...
        └── val2017/    # Validation labels (optional if using same set for train/val)
            └── ...

YOLOv5 recommended dataset directory structure

2. Seleziona un modello#

Scegli un modello preaddestrato per avviare il processo di addestramento. Iniziare con pesi preaddestrati accelera notevolmente l'apprendimento e migliora le prestazioni rispetto all'addestramento da zero. YOLOv5 offre modelli di varie dimensioni, ciascuno con un diverso equilibrio tra velocità e accuratezza. Ad esempio, YOLOv5s è il secondo modello più piccolo e il secondo più veloce, adatto agli ambienti con risorse limitate. Consulta la tabella del README per un confronto dettagliato di tutti i modelli disponibili.

Comparison chart of YOLOv5 models showing size, speed, and accuracy

3. Addestra#

Avvia l'addestramento del modello usando lo script train.py. Gli argomenti essenziali includono:

  • --img: definisce la dimensione dell'immagine di input (ad es. --img 640). In genere, dimensioni maggiori offrono una migliore accuratezza, ma richiedono più memoria GPU.
  • --batch: determina la dimensione del batch (ad es. --batch 16). Scegli la dimensione massima gestibile dalla tua GPU.
  • --epochs: specifica il numero totale di epoche di addestramento (ad es. --epochs 100). Un'epoca rappresenta un passaggio completo sull'intero dataset di addestramento.
  • --data: percorso del tuo file dataset.yaml (ad es. --data coco128.yaml).
  • --weights: percorso del file dei pesi iniziali. È vivamente consigliato usare pesi preaddestrati (ad es. --weights yolov5s.pt) per ottenere una convergenza più rapida e risultati migliori. Per addestrare da zero (non consigliato, a meno che tu non abbia un dataset molto grande e necessità specifiche), usa --weights '' --cfg yolov5s.yaml.

Se non sono presenti localmente, i pesi preaddestrati vengono scaricati automaticamente dalla release più recente di YOLOv5.

# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
Ottimizza la velocità di addestramento

💡 Usa --cache ram o --cache disk per memorizzare nella cache le immagini del dataset nella RAM o sul disco locale, rispettivamente. Questo accelera notevolmente l'addestramento, soprattutto quando le operazioni di I/O del dataset (input/output) rappresentano un collo di bottiglia. Tieni presente che ciò richiede una quantità considerevole di RAM o spazio su disco.

Archiviazione dei dati in locale

💡 Addestra sempre usando dataset archiviati localmente. Accedere ai dati da unità di rete (come Google Drive) o da archivi remoti può essere molto più lento e ridurre le prestazioni dell'addestramento. Copiare il dataset su un SSD locale è spesso la scelta migliore.

Tutti gli output dell'addestramento, inclusi pesi e log, vengono salvati nella directory runs/train/. Ogni sessione di addestramento crea una nuova sottodirectory (ad es. runs/train/exp, runs/train/exp2 e così via). Per un'esperienza pratica e interattiva, consulta la sezione sull'addestramento nei notebook tutorial ufficiali: Open In Colab Open In Kaggle

4. Visualizza#

YOLOv5 si integra perfettamente con diversi strumenti per visualizzare i progressi dell'addestramento, valutare i risultati e monitorare le prestazioni in tempo reale.

Registrazione e visualizzazione con Comet#

Comet è completamente integrato per un monitoraggio completo degli esperimenti. Visualizza le metriche in tempo reale, salva gli iperparametri, gestisci i dataset e i checkpoint dei modelli e analizza le previsioni del modello usando i pannelli personalizzati Comet interattivi.

Iniziare è semplice:

pip install comet_ml                                                          # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE                                        # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!

Scopri più a fondo le funzionalità supportate nella nostra guida all'integrazione di Comet. Approfondisci le funzionalità di Comet consultando la documentazione ufficiale. Prova il notebook Comet su Colab per una demo dal vivo: Apri in Colab

Comet UI showing YOLOv5 training metrics and visualizations

Registrazione e automazione con ClearML#

L'integrazione con ClearML consente un monitoraggio dettagliato degli esperimenti, la gestione delle versioni dei dataset e persino l'esecuzione remota delle sessioni di addestramento. Attiva ClearML con questi semplici passaggi:

  • Installa il pacchetto: pip install clearml
  • Inizializza ClearML: esegui clearml-init una volta per connetterti al tuo server ClearML (ospitato autonomamente o con il piano gratuito).

ClearML acquisisce automaticamente i dettagli degli esperimenti, i caricamenti dei modelli, i confronti, le modifiche al codice non sottoposte a commit e i pacchetti installati, garantendo la piena riproducibilità. Puoi pianificare facilmente le attività di addestramento su agenti remoti e gestire le versioni dei dataset con ClearML Data. Consulta la guida all'integrazione di ClearML per informazioni complete.

ClearML experiment management UI for YOLOv5

Registrazione locale#

I risultati dell'addestramento vengono registrati automaticamente con TensorBoard e salvati come file CSV nella directory dell'esperimento specifico (ad es. runs/train/exp). I dati registrati includono:

  • Perdita e metriche delle prestazioni dell'addestramento e della convalida.
  • Immagini di esempio che mostrano le trasformazioni applicate (come i mosaici).
  • Etichette di ground truth insieme alle previsioni del modello per l'ispezione visiva.
  • Metriche di valutazione chiave, come le curve Precisione-Recall (PR).
  • Matrici di confusione per un'analisi dettagliata delle prestazioni per classe.
YOLOv5 local logging results with charts and mosaics

Il file results.csv viene aggiornato dopo ogni epoca e, al termine dell'addestramento, viene generato il grafico results.png. Puoi anche creare manualmente il grafico di qualsiasi file results.csv usando la funzione di utilità fornita:

from utils.plots import plot_results

# Traccia i risultati di una directory di esecuzione di addestramento specifica
plot_results("runs/train/exp/results.csv")  # Verrà generato 'results.png' nella stessa directory

YOLOv5 results.png training metrics plot

5. Passaggi successivi#

Al termine dell'addestramento, il checkpoint del modello con le migliori prestazioni (best.pt) viene salvato ed è pronto per la distribuzione o per ulteriori perfezionamenti. I possibili passaggi successivi includono:

Ambienti supportati#

Ultralytics offre ambienti pronti all'uso dotati delle dipendenze essenziali, come CUDA, cuDNN, Python e PyTorch, per consentirti di iniziare senza difficoltà.

Stato del progetto#

YOLOv5 Continuous Integration Status Badge

Questo badge indica che tutti i test GitHub Actions di integrazione continua (CI) di YOLOv5 vengono superati. Questi rigorosi test CI coprono le funzionalità principali, tra cui addestramento, convalida, inferenza, esportazione e benchmark, sui sistemi operativi macOS, Windows e Ubuntu. I test vengono eseguiti automaticamente ogni 24 ore e a ogni commit di codice, garantendo stabilità costante e prestazioni ottimali.

Domande frequenti#

  • L'addestramento di YOLOv5 su un dataset personalizzato prevede diversi passaggi chiave:

    1. Prepara il dataset: raccogli le immagini e annotale. Assicurati che le annotazioni siano nel formato YOLO richiesto. Organizza immagini ed etichette nelle directory train/ e val/ (e, facoltativamente, test/). Puoi usare modelli come Google Gemini, SAM2 o YOLOWorld per assistere o automatizzare il processo di etichettatura (vedi la Sezione 1.2).
    2. Configura l'ambiente: clona il repository YOLOv5 e installa le dipendenze usando pip install -r requirements.txt.
      git clone https://github.com/ultralytics/yolov5
      cd yolov5
      pip install -r requirements.txt
    3. Crea la configurazione del dataset: definisci i percorsi del dataset, il numero di classi e i nomi delle classi in un file dataset.yaml.
    4. Avvia l'addestramento: esegui lo script train.py, specificando i percorsi del tuo dataset.yaml, i pesi pretrained desiderati (ad es. yolov5s.pt), la dimensione delle immagini, la dimensione del batch e il numero di epoche.
      python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
  • Ultralytics Platform è una piattaforma completa progettata per semplificare l'intero ciclo di vita dello sviluppo dei modelli YOLO, spesso senza dover scrivere codice. Tra i principali vantaggi:

    • Addestramento semplificato: addestra facilmente i modelli usando ambienti preconfigurati e un'interfaccia utente intuitiva.
    • Gestione dei dati integrata: carica, gestisci il controllo delle versioni e amministra i tuoi dataset in modo efficiente all'interno della piattaforma.
    • Monitoraggio in tempo reale: segui i progressi dell'addestramento e visualizza le metriche di prestazione man mano che arrivano.
    • Funzionalità di collaborazione: facilita il lavoro di squadra grazie a risorse condivise, strumenti di gestione dei progetti e una facile condivisione dei modelli.
    • Distribuzione senza codice: distribuisci i modelli addestrati direttamente su varie destinazioni.

    Per una guida pratica, leggi il nostro post sul blog: Come addestrare i tuoi modelli personalizzati con Ultralytics Platform.

  • Che tu annoti manualmente o usi strumenti automatizzati (come quelli menzionati nella Sezione 1.2), le etichette finali devono rispettare lo specifico formato YOLO richiesto da YOLOv5:

    • Crea un file .txt per ogni immagine. Il nome del file deve corrispondere a quello dell'immagine (ad es. image1.jpg corrisponde a image1.txt). Inserisci questi file in una directory labels/ parallela alla directory images/ (ad es. ../datasets/mydataset/labels/train/).
    • Ogni riga di un file .txt rappresenta l'annotazione di un oggetto e segue il formato: class_index center_x center_y width height.
    • Le coordinate (center_x, center_y, width, height) devono essere normalizzate (valori compresi tra 0.0 e 1.0) rispetto alle dimensioni dell'immagine.
    • Gli indici delle classi partono da zero (la prima classe è 0, la seconda è 1 e così via).

    Molti strumenti di annotazione manuale offrono l'esportazione diretta nel formato YOLO. Se usi modelli automatizzati, dovrai ricorrere a script o processi per convertire i loro risultati (ad es. coordinate dei riquadri delimitatori, maschere di segmentazione) in questo specifico formato testuale normalizzato. Assicurati che la struttura finale del tuo dataset sia conforme all'esempio fornito nella guida. Per maggiori dettagli, consulta la nostra Guida alla raccolta e all'annotazione dei dati.

  • Ultralytics offre licenze flessibili, pensate per esigenze diverse:

    • Licenza AGPL-3.0: questa licenza open source è adatta alla ricerca accademica, ai progetti personali e ai casi in cui è accettabile rispettare gli obblighi dell'open source. Impone che anche le modifiche e le opere derivate siano rilasciate con licenza AGPL-3.0. Consulta i dettagli della licenza AGPL-3.0.
    • Licenza Enterprise: una licenza commerciale pensata per le aziende che integrano YOLOv5 in prodotti o servizi proprietari. Questa licenza elimina gli obblighi open source di AGPL-3.0 e consente la distribuzione di software closed source. Visita la nostra pagina delle licenze per maggiori dettagli o per richiedere una Licenza Enterprise.

    Scegli la licenza più adatta ai requisiti del tuo progetto e al tuo modello di distribuzione.

Commenti