Vai al contenuto

Addestrare YOLOv5 su dati personalizzati

📚 Questa guida spiega come addestrare il proprio set di dati personalizzati utilizzando il programma YOLOv5 🚀. L'addestramento di modelli personalizzati è un passo fondamentale per adattare le soluzioni di computer vision a specifiche applicazioni del mondo reale, oltre al generico rilevamento di oggetti.

Prima di iniziare

Per prima cosa, assicurarsi di avere l'ambiente necessario. Clonare il repository YOLOv5 e installare le dipendenze necessarie da requirements.txt. A Python.8.0 ambiente con PyTorch.8 è essenziale. I modelli e i set di dati vengono scaricati automaticamente dall'ultima versione di YOLOv5. rilascio se non si trovano in loco.

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

Formazione su dati personalizzati

Il diagramma del ciclo di apprendimento attivo Ultralytics mostra la raccolta dei dati, l'etichettatura, l'addestramento, la distribuzione e la raccolta di casi limite.

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

  1. Raccogliere e organizzare le immagini: Raccogliere le immagini rilevanti per il compito specifico. È fondamentale disporre di dati diversi e di alta qualità. Consultate la nostra guida sulla raccolta e l'annotazione dei dati.
  2. Etichettatura degli oggetti: Annotate con precisione gli oggetti di interesse all'interno delle immagini.
  3. Addestrare un modello: Utilizzare i dati etichettati per addestrare il modello YOLOv5 . Sfruttare l'apprendimento per trasferimento iniziando con pesi preaddestrati.
  4. Distribuzione e previsione: Utilizzare il modello addestrato per l'inferenza su nuovi dati non visti.
  5. Raccogliere casi limite: Identificare gli scenari in cui il modello non funziona bene(casi limite) e aggiungere dati simili al set di dati per migliorare la robustezza. Ripetere il ciclo.

Ultralytics HUB offre una soluzione semplificata e senza codice per l'intero ciclo delle operazioni di apprendimento automatico (MLOps), compresa la gestione dei set di dati, l'addestramento dei modelli e la distribuzione.

Licenze

Ultralytics offre due opzioni di licenza per soddisfare diversi scenari di utilizzo:

  • LicenzaAGPL-3.0 : Questa licenza open-source approvata dall'OSI è ideale per studenti, ricercatori e appassionati di collaborazione aperta e condivisione della conoscenza. Richiede che i lavori derivati siano condivisi sotto la stessa licenza. Per tutti i dettagli, consultare il file LICENZA.
  • Licenza Enterprise: Progettata per le applicazioni commerciali, questa licenza consente la perfetta integrazione del software e dei modelli di intelligenza artificiale Ultralytics in prodotti e servizi commerciali senza le clausole open-source della licenza AGPL-3.0. Se il vostro progetto richiede una distribuzione commerciale, richiedete una Licenza Enterprise.

Esplorate ulteriormente le nostre opzioni di licenza nella pagina delle licenze diUltralytics .

Prima di iniziare l'addestramento, la preparazione del set di dati è essenziale.

1. Creare un set di dati

I modelli YOLOv5 richiedono dati etichettati per apprendere le caratteristiche visive delle classi di oggetti. L'organizzazione corretta del set di dati è fondamentale.

1.1 Creare dataset.yaml

Il file di configurazione del set di dati (ad es, coco128.yaml) delinea la struttura del set di dati, i nomi delle classi e i percorsi delle directory delle immagini. COCO128 serve come un piccolo set di dati di esempio, che comprende le prime 128 immagini dell'ampia gamma di immagini COCO dataset. È utile per testare rapidamente la pipeline di addestramento e diagnosticare potenziali problemi quali overfitting.

Il dataset.yaml La struttura del file include:

  • path: La directory principale contenente il set di dati.
  • train, val, test: Percorsi relativi da path a directory contenenti immagini o file di testo che elencano i percorsi delle immagini per i set di addestramento, convalida e test.
  • names: Un dizionario che mappa gli indici delle classi (a partire da 0) con i nomi delle classi corrispondenti.

Di seguito è riportata la struttura per coco128.yaml (vista 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 Sfruttare i modelli per l'etichettatura automatica

L'etichettatura manuale tramite strumenti è un approccio comune, ma il processo può richiedere molto tempo. I recenti progressi nei modelli di fondazione offrono la possibilità di automatizzare o semi-automatizzare il processo di annotazione, accelerando potenzialmente in modo significativo la creazione di set di dati. Ecco alcuni esempi di modelli che possono aiutare a generare le etichette:

  • Google Gemini: I modelli multimodali di grandi dimensioni come Gemini possiedono potenti capacità di comprensione delle immagini. Possono essere sollecitati a identificare e localizzare gli oggetti all'interno delle immagini, generando riquadri di delimitazione o descrizioni che possono essere convertite in etichette in formato YOLO . Esplorate le sue potenzialità nel quaderno didattico fornito.
  • SAM2 (Segment Anything Model 2): I modelli di fondazione incentrati sulla segmentazione, come SAM2, sono in grado di identificare e delineare gli oggetti con elevata precisione. Sebbene siano principalmente destinati alla segmentazione, le maschere risultanti possono spesso essere convertite in annotazioni di bounding box adatte a compiti di rilevamento di oggetti.
  • Mondo YOLO: Questo modello offre funzionalità di rilevamento a vocabolario aperto. È possibile fornire descrizioni testuali degli oggetti a cui si è interessati e YOLOWorld è in grado di individuarli nelle immagini senza un addestramento preliminare su quelle classi specifiche. Questo può essere utilizzato come punto di partenza per generare etichette iniziali, che possono poi essere perfezionate.

L'uso di questi modelli può fornire una fase di "pre-etichettatura", riducendo lo sforzo manuale richiesto. Tuttavia, è fondamentale rivedere e perfezionare le etichette generate automaticamente per garantirne l'accuratezza e la coerenza, poiché la qualità influisce direttamente sulle prestazioni del modello YOLOv5 addestrato. Dopo aver generato (e potenzialmente perfezionato) le etichette, è necessario assicurarsi che esse siano conformi ai requisiti di YOLO formato: uno *.txt file per immagine, con ogni riga che rappresenta un oggetto come class_index x_center y_center width height (coordinate normalizzate, classe a indice zero). Se un'immagine non ha oggetti di interesse, non c'è un corrispondente *.txt è necessario un file.

Il formato YOLO *.txt Le specifiche del file sono precise:

  • Una riga per ogni rettangolo di selezione dell'oggetto.
  • Ogni riga deve contenere: class_index x_center y_center width height.
  • Le coordinate devono essere normalizzato in un intervallo compreso tra 0 e 1. Per ottenere questo risultato, dividere i valori dei pixel di x_center e width per la larghezza totale dell'immagine, e dividere y_center e height per l'altezza totale dell'immagine.
  • Gli indici delle classi sono indicizzati a zero (cioè, la prima classe è rappresentata da 0, il secondo da 1e così via).

Immagine di esempio con due persone e una cravatta annotata

Il file di etichetta corrispondente all'immagine precedente, contenente due oggetti "persona" (indice di classe 0) e un oggetto "legame" (indice della classe 27), avrebbe il seguente aspetto:

Esempio di contenuto del file di etichetta in formato YOLO per l'immagine annotata

1.3 Organizzare le directory

Strutturate il vostro set di dati come illustrato di seguito. Per impostazione predefinita, YOLOv5 anticipa la directory del dataset (ad esempio, /coco128) per risiedere all'interno di un /datasets cartella situata adiacente a il /yolov5 directory del repository.

YOLOv5 individua automaticamente le etichette per ogni immagine sostituendo l'ultima istanza 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 è la seguente:

/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)
            └── ...

Diagramma che mostra la struttura di directory raccomandata per i set di dati YOLOv5

2. Selezionare un modello

Scegliere un modello preaddestrato per avviare il processo di addestramento. Iniziare con pesi pre-addestrati accelera significativamente l'apprendimento e migliora le prestazioni rispetto all'addestramento da zero. YOLOv5 offre modelli di varie dimensioni, ognuno dei quali bilancia velocità e precisione in modo diverso. Ad esempio, YOLOv5s è il secondo modello più piccolo e veloce, adatto ad ambienti con risorse limitate. Per un confronto dettagliato di tutti i modelli disponibili, consultare la tabella README.

Grafico di confronto dei modelli YOLOv5 che mostra dimensioni, velocità e precisione

3. Treno

Iniziare il formazione del modello utilizzando il train.py sceneggiatura. Gli argomenti essenziali includono:

  • --img: Definisce l'ingresso dimensione dell'immagine (ad esempio, --img 640). Le dimensioni maggiori offrono generalmente una migliore accuratezza, ma richiedono una maggiore quantità di memoria GPU .
  • --batch: Determina il valore di Dimensione del lotto (ad esempio, --batch 16). Scegliete la dimensione più grande che la vostra GPU può gestire.
  • --epochs: Specifica il numero totale di allenamenti epoche (ad esempio, --epochs 100). Un'epoca rappresenta un passaggio completo sull'intero set di dati di addestramento.
  • --data: Percorso per il tuo dataset.yaml (ad es, --data coco128.yaml).
  • --weights: Percorso del file dei pesi iniziali. Utilizzando i pesi preaddestrati (ad esempio, --weights yolov5s.pt) è altamente raccomandato per una convergenza più rapida e risultati superiori. Per addestrare da zero (sconsigliato a meno che non si disponga di un set di dati molto grande e di esigenze specifiche), usare --weights '' --cfg yolov5s.yaml.

I pesi preaddestrati vengono scaricati automaticamente dall'ultima versione di YOLOv5 se non si trovano in locale.

# 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

Ottimizzare la velocità di allenamento

💡 Impiegato --cache ram o --cache disk per memorizzare le immagini del set di dati in RAM o disco locale, rispettivamente. Questo accelera notevolmente l'addestramento, in particolare quando le operazioni di I/O (Input/Output) del dataset sono un collo di bottiglia. Si noti che ciò richiede un notevole spazio su RAM o su disco.

Memorizzazione dei dati locali

💡 Eseguire sempre l'addestramento utilizzando set di dati archiviati localmente. L'accesso ai dati da unità di rete (come Google Drive) o da archivi remoti può essere notevolmente più lento e compromettere le prestazioni dell'addestramento. Copiare il set di dati su un'unità SSD locale è spesso la pratica migliore.

Tutti i risultati dell'addestramento, compresi i pesi e i log, vengono salvati nel file runs/train/ directory. Ogni sessione di allenamento crea una nuova sottodirectory (ad esempio, runs/train/exp, runs/train/exp2, ecc.) Per un'esperienza interattiva e pratica, esplorate la sezione di formazione nei nostri quaderni ufficiali: Aprire in Colab Aprire in Kaggle

4. Visualizzare

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

Comet Registrazione e visualizzazione 🌟 NUOVO

Comet è completamente integrato per un monitoraggio completo degli esperimenti. Visualizzate le metriche in tempo reale, salvate gli iperparametri, gestite i dataset e i checkpoint dei modelli e analizzate le previsioni dei modelli grazie ai pannelli personalizzati interattivi Comet .

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!

Approfondite le funzionalità supportate nel nostro Guida all'integrazione di Comet. Per saperne di più sulle capacità di Comet, consultate il sito ufficiale di Comet. documentazione. Provate il Comet Colab Notebook per una dimostrazione dal vivo: Aprire in Colab

L'interfaccia utente Comet mostra le metriche di formazione e le visualizzazioni di YOLOv5 .

ClearML Registrazione e automazione 🌟 NUOVO

ClearML consente di tracciare in modo dettagliato gli esperimenti, gestire le versioni dei set di dati e persino eseguire in remoto le esercitazioni. Attivate ClearML con questi semplici passaggi:

  • Installare il pacchetto: pip install clearml
  • Inizializzare ClearML: Eseguire clearml-init una volta per connettersi al proprio server ClearML (sia esso self-hosted o il server livello gratuito).

ClearML acquisisce automaticamente i dettagli dell'esperimento, il caricamento dei modelli, i confronti, le modifiche al codice non impegnate e i pacchetti installati, garantendo la piena riproducibilità. È possibile programmare facilmente le attività di formazione sugli agenti remoti e gestire le versioni dei set di dati utilizzando ClearML Data. Per maggiori dettagli, consultate la Guida all'integrazione diClearML .

L'interfaccia ClearML per la gestione degli esperimenti mostra i grafici e i log di una sessione di allenamento YOLOv5 .

Registrazione locale

I risultati dell'allenamento vengono registrati automaticamente utilizzando TensorBoard e salvato come CSV all'interno della directory specifica dell'esperimento (ad es, runs/train/exp). I dati registrati comprendono:

  • Metriche di perdita e di prestazione per l'addestramento e la convalida.
  • Immagini di esempio che mostrano gli aumenti applicati (come i mosaici).
  • Etichette di verità a terra accanto alle previsioni del modello per l'ispezione visiva.
  • Le principali metriche di valutazione, come le curve diprecisione-richiamo (PR).
  • Matrici di confusione per un'analisi dettagliata delle prestazioni a livello di classe.

Esempio di risultati della registrazione locale, compresi i grafici e i mosaici di immagini dell'addestramento YOLOv5

Il results.csv è aggiornato dopo ogni epoca ed è tracciato come results.png una volta terminato l'addestramento. È inoltre possibile tracciare qualsiasi results.csv manualmente utilizzando la funzione di utilità fornita:

from utils.plots import plot_results

# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv")  # This will generate 'results.png' in the same directory

Esempio di grafico results.png che mostra metriche di addestramento come mAP, precisione, richiamo e perdita in base alle epoche.

5. I prossimi passi

Una volta completato con successo l'addestramento, il checkpoint del modello con le migliori prestazioni (best.pt) è salvato e pronto per essere distribuito o perfezionato. Le possibili fasi successive includono:

Ambienti supportati

Ultralytics fornisce ambienti pronti all'uso dotati di dipendenze essenziali come CUDA, cuDNN, Pythone PyTorchper facilitare un avvio senza intoppi.

Stato del progetto

Badge di stato per l'integrazione continua YOLOv5

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

FAQ

Domande frequenti

Come si addestra YOLOv5 su un set di dati personalizzato?

L'addestramento di YOLOv5 su un set di dati personalizzato comporta diversi passaggi chiave:

  1. Preparare il set di dati: Raccogliere le immagini e annotarle. Assicurarsi che le annotazioni siano nel formato richiesto YOLO formato. Organizzare le immagini e le etichette in train/ e val/ (e facoltativamente test/). Considerare l'uso di modelli come Google Gemini, SAM2, o Mondo YOLO per assistere o automatizzare il processo di etichettatura (vedere Sezione 1.2).
  2. Impostazione dell'ambiente: Clonare il repository YOLOv5 e installare le dipendenze usando pip install -r requirements.txt.
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Creare la configurazione del set di dati: Definire i percorsi dei set di dati, il numero di classi e i nomi delle classi in un file di testo. dataset.yaml file.
  4. Avviare la formazione: Eseguire il programma train.py fornendo i percorsi dei propri file dataset.yaml, i pesi preaddestrati desiderati (ad esempio, yolov5s.pt), la dimensione dell'immagine, 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
    

Perché dovrei usare Ultralytics HUB per addestrare i miei modelli YOLO ?

Ultralytics HUB è una piattaforma completa progettata per semplificare l'intero ciclo di vita dello sviluppo del modello YOLO , spesso senza dover scrivere alcun codice. I vantaggi principali includono:

  • Formazione semplificata: Addestramento facile dei modelli grazie ad ambienti preconfigurati e a un'interfaccia utente intuitiva.
  • Gestione integrata dei dati: Caricare, controllare la versione e gestire in modo efficiente i set di dati all'interno della piattaforma.
  • Monitoraggio in tempo reale: Tracciate i progressi della formazione e visualizzate le metriche delle prestazioni utilizzando strumenti integrati come Comet o TensorBoard.
  • Caratteristiche di collaborazione: Facilita il lavoro di squadra attraverso risorse condivise, strumenti di gestione dei progetti e una facile condivisione dei modelli.
  • Distribuzione senza codice: Distribuire i modelli addestrati direttamente su vari obiettivi.

Per una guida pratica, consultate il nostro blog post: Come addestrare i modelli personalizzati con Ultralytics HUB.

Come posso convertire i miei dati annotati nel formato YOLOv5 ?

Sia che si annotino manualmente sia che si utilizzino strumenti automatici (come quelli menzionati nella sezione 1.2), le etichette finali devono essere nel formato specifico di YOLO richiesto da YOLOv5:

  • Creare una .txt per ogni immagine. Il nome del file deve corrispondere al nome del file dell'immagine (ad esempio, image1.jpg corrisponde a image1.txt). Posizionare questi file in una cartella labels/ parallelamente alla cartella images/ (ad es, ../datasets/mydataset/labels/train/).
  • Ogni riga di un file .txt Il file rappresenta l'annotazione di un oggetto e segue il formato: class_index center_x center_y width height.
  • Coordinate (center_x, center_y, width, height) deve essere normalizzato (valori compresi tra 0,0 e 1,0) rispetto alle dimensioni dell'immagine.
  • Gli indici di classe sono a base zero (la prima classe è 0, il secondo è 1, ecc.).

Molti strumenti di annotazione manuale offrono l'esportazione diretta nel formato YOLO . Se si utilizzano modelli automatizzati, è necessario disporre di script o processi per convertire i loro risultati (ad esempio, coordinate dei riquadri di delimitazione, maschere di segmentazione) in questo specifico formato di testo normalizzato. Assicurarsi che la struttura finale del set di dati sia conforme all'esempio fornito nella guida. Per maggiori dettagli, consultare la nostra Guida alla raccolta e all'annotazione dei dati.

Quali sono le opzioni di licenza per l'utilizzo di YOLOv5 in applicazioni commerciali?

Ultralytics offre licenze flessibili, adatte alle diverse esigenze:

  • LicenzaAGPL-3.0 : Questa licenza open-source è adatta alla ricerca accademica, ai progetti personali e alle situazioni in cui la conformità all'open-source è accettabile. Richiede che le modifiche e le opere derivate siano anch'esse open-source sotto AGPL-3.0. Leggere i dettagli della licenzaAGPL-3.0 .
  • Licenza Enterprise: Una licenza commerciale progettata per le aziende che integrano YOLOv5 in prodotti o servizi proprietari. Questa licenza elimina gli obblighi di open-source previsti dalla AGPL-3.0, consentendo una distribuzione closed-source. Visitate la pagina delle licenze per ulteriori dettagli o per richiedere una licenza Enterprise.

Selezionate la licenza che meglio si adatta ai requisiti del vostro progetto e al modello di distribuzione.



📅C reato 1 anno fa ✏️ Aggiornato 1 mese fa

Commenti