Vai al contenuto

Dati personalizzati per la formazione

📚 Questa guida spiega come addestrare il tuo set di dati personalizzato con YOLOv5 🚀.

Prima di iniziare

Clona il repo e installa il file requirements.txt in un file di tipo Python>=3.8.0 con l'inclusione di PyTorch>=1.8. I modelli e i dataset vengono scaricati automaticamente dall'ultimarelease di YOLOv5 .

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

Formazione su dati personalizzati

Ultralytics apprendimento attivo

Creare un modello personalizzato per rilevare i tuoi oggetti è un processo iterativo che prevede la raccolta e l'organizzazione delle immagini, l'etichettatura degli oggetti di interesse, l'addestramento di un modello, la sua distribuzione in natura per fare previsioni e quindi l'utilizzo del modello distribuito per raccogliere esempi di casi limite da ripetere e migliorare.

Licenze

Ultralytics offre due opzioni di licenza:

Per maggiori dettagli consulta Ultralytics Licensing.

YOLOv5 I modelli devono essere addestrati su dati etichettati per poter apprendere le classi di oggetti presenti in quei dati. Ci sono due opzioni per creare il tuo set di dati prima di iniziare l'addestramento:

Opzione 1: Creare un Roboflow Set di dati

1.1 Raccogliere le immagini

Il tuo modello imparerà con l'esempio. L'addestramento su immagini simili a quelle che vedrà in natura è della massima importanza. Idealmente, raccoglierai un'ampia varietà di immagini con la stessa configurazione (fotocamera, angolazione, illuminazione, ecc.) con la quale realizzerai il tuo progetto.

Se questo non è possibile, puoi partire da un set di dati pubblici per addestrare il tuo modello iniziale e poi campionare le immagini selvagge durante l'inferenza per migliorare il set di dati e il modello in modo iterativo.

1.2 Creare etichette

Una volta raccolte le immagini, dovrai annotare gli oggetti di interesse per creare una verità di base da cui il tuo modello possa imparare.

YOLOv5 Precisioni

Roboflow Annotate è un semplice strumento basato sul web per gestire ed etichettare le immagini con il tuo team ed esportarle nel formato di annotazione diYOLOv5.

1.3 Preparare il set di dati per YOLOv5

Che tu etichetti le tue immagini con Roboflow o meno, puoi usarlo per convertire il tuo set di dati nel formato YOLO , creare un file di configurazione YAML YOLOv5 e ospitarlo per importarlo nel tuo script di allenamento.

Crea un account gratuito su Roboflow e carica il tuo set di dati in un file Public etichettare tutte le immagini non annotate, quindi generare ed esportare una versione del set di dati in YOLOv5 Pytorch formato.

Nota: YOLOv5 esegue l'incremento online durante l'addestramento, quindi non consigliamo di applicare alcun passaggio di incremento in Roboflow per l'addestramento con YOLOv5. Tuttavia, consigliamo di applicare le seguenti fasi di pre-elaborazione:

Fasi di pre-elaborazione consigliate

  • Auto-Orient - per eliminare l'orientamento EXIF dalle immagini.
  • Ridimensiona (Stretch) - alla dimensione quadrata di input del tuo modello (640x640 è il valore predefinito di YOLOv5 ).

La generazione di una versione ti fornirà un'istantanea del tuo set di dati, in modo che tu possa sempre tornare indietro e confrontare i futuri cicli di addestramento del modello con questo, anche se in seguito aggiungerai altre immagini o modificherai la configurazione.

Esportazione in formato YOLOv5

Esportazione in YOLOv5 Pytorch quindi copia lo snippet nel tuo script di allenamento o nel notebook per scaricare il tuo set di dati.

Roboflow download del set di dati

Opzione 2: Creare un set di dati manuale

2.1 Creare dataset.yaml

COCO128 è un esempio di piccolo tutorial composto dalle prime 128 immagini di COCO train2017. Queste stesse 128 immagini vengono utilizzate sia per l'addestramento che per la convalida per verificare che la nostra pipeline di addestramento sia in grado di fare overfitting. dati/coco128.yaml, mostrato di seguito, è il file di configurazione del dataset che definisce 1) la directory principale del dataset path e i percorsi relativi a train / val / test le directory delle immagini (o *.txt file con i percorsi delle immagini) e 2) una classe names dizionario:

# 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: ../datasets/coco128  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)

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

2.2 Creare etichette

Dopo aver utilizzato uno strumento di annotazione per etichettare le immagini, esporta le tue etichette in YOLO formato, con una *.txt per ogni immagine (se non ci sono oggetti nell'immagine, non c'è nessun file *.txt è necessario). Il *.txt Le specifiche del file sono:

  • Una riga per oggetto
  • Ogni riga è class x_center y_center width height formato.
  • Le coordinate della casella devono essere in xywh normalizzato (da 0 a 1). Se le caselle sono in pixel, dividi x_center e width per larghezza dell'immagine e y_center e height per altezza dell'immagine.
  • I numeri delle classi sono indicizzati a zero (partono da 0).

Roboflow annotazioni

Il file di etichetta corrispondente all'immagine precedente contiene 2 persone (classe 0) e un pareggio (classe 27):

Roboflow preelaborazione del dataset

2.3 Organizzare le directory

Organizza le immagini e le etichette dei treni e delle val secondo l'esempio seguente. YOLOv5 assume /coco128 si trova all'interno di un /datasets elenco accanto a il /yolov5 directory. YOLOv5 individua automaticamente le etichette per ogni immagine sostituendo l'ultima istanza di /images/ in ogni percorso dell'immagine con /labels/. Ad esempio:

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 struttura del set di dati

3. Seleziona un modello

Seleziona un modello pre-addestrato da cui iniziare l'addestramento. In questo caso selezioniamo YOLOv5s, il secondo modello più piccolo e veloce disponibile. Per un confronto completo di tutti i modelli, consulta la nostra tabella README.

YOLOv5 modelli

4. Treno

Addestra un modello YOLOv5s su COCO128 specificando il dataset, la dimensione del lotto, la dimensione dell'immagine e il modello preaddestrato. --weights yolov5s.pt (consigliato), o inizializzato in modo casuale --weights '' --cfg yolov5s.yaml (non consigliato). I pesi pre-addestrati vengono scaricati automaticamente dal file Ultima versione di YOLOv5.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

Suggerimento

💡 Aggiungi --cache ram o --cache disk per accelerare la formazione (richiede notevoli risorse di RAM/disco).

Suggerimento

💡 Allenati sempre da un dataset locale. Le unità montate o in rete come Google Drive saranno molto lente.

Tutti i risultati della formazione vengono salvati in runs/train/ con directory di esecuzione crescenti, ad esempio. runs/train/exp2, runs/train/exp3 ecc. Per maggiori dettagli consulta la sezione Formazione del nostro quaderno di istruzioni. Apri in Colab Apri in Kaggle

5. Visualizzare

Comet Registrazione e visualizzazione 🌟 NUOVO

Comet è ora completamente integrato con YOLOv5. Tieni traccia e visualizza le metriche del modello in tempo reale, salva gli iperparametri, i set di dati e i checkpoint del modello e visualizza le previsioni del modello con i pannelli personalizzati diComet ! Comet ti permette di non perdere mai di vista il tuo lavoro e di condividere facilmente i risultati e collaborare con team di tutte le dimensioni!

Iniziare è facile:

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

Per saperne di più su tutte le funzioni di Comet supportate da questa integrazione, consulta il documento Comet Tutorial. Se vuoi saperne di più sul sito Comet, visita il nostro sito documentazione. Inizia provando il taccuino Comet Colab Notebook: Apri in Colab

YOLO UI

ClearML Registrazione e automazione 🌟 NUOVO

ClearML è completamente integrato in YOLOv5 per tracciare la tua sperimentazione, gestire le versioni dei set di dati e perfino eseguire in remoto le sessioni di allenamento. Per abilitare ClearML:

  • pip install clearml
  • correre clearml-init per connettersi a un server ClearML

Avrai a disposizione tutte le caratteristiche che ci si aspetta da un gestore di esperimenti: aggiornamenti in tempo reale, caricamento di modelli, confronto di esperimenti ecc. ma ClearML tiene anche traccia delle modifiche non impegnate e dei pacchetti installati, ad esempio. Grazie a ciò, i task di ClearML (che è ciò che chiamiamo esperimenti) sono riproducibili anche su macchine diverse! Con una sola riga in più, possiamo programmare un'attività di formazione di YOLOv5 su una coda per essere eseguita da un numero qualsiasi di agenti (worker) di ClearML .

Puoi utilizzare ClearML Data per creare una versione del tuo set di dati e poi passarlo a YOLOv5 semplicemente utilizzando il suo ID univoco. Questo ti aiuterà a tenere traccia dei tuoi dati senza aggiungere ulteriori problemi. Esplora il tutorial di ClearML per maggiori dettagli!

ClearML Interfaccia utente per la gestione degli esperimenti

Registrazione locale

I risultati dell'allenamento vengono registrati automaticamente con Tensorboard e CSV logger a runs/traincon una nuova directory di esperimenti creata per ogni nuova formazione come runs/train/exp2, runs/train/exp3, ecc.

Questa directory contiene le statistiche del treno e del val, i mosaici, le etichette, le previsioni e i mosaici aumentati, oltre a metriche e grafici come le curve di precisione-richiamo (PR) e le matrici di confusione.

Risultati della registrazione locale

File dei risultati results.csv viene aggiornata dopo ogni epoca e poi tracciata come results.png (sotto) al termine dell'addestramento. Puoi anche tracciare qualsiasi results.csv manualmente:

from utils.plots import plot_results

plot_results('path/to/results.csv')  # plot 'results.csv' as 'results.png'

risultati.png

I prossimi passi

Una volta che il tuo modello è stato addestrato, puoi utilizzare il tuo miglior punto di controllo best.pt a:

  • Esegui CLI o Python su nuove immagini e video
  • Convalidare l' accuratezza su treno, val e test split
  • Esportazione nei formati TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML e TensorRT
  • Evolvere gli iperparametri per migliorare le prestazioni
  • Migliora il tuo modello campionando immagini reali e aggiungendole al tuo set di dati.

Ambienti supportati

Ultralytics offre una serie di ambienti pronti all'uso, ciascuno preinstallato con le dipendenze essenziali come CUDA, CUDNN, Python, e PyTorchper dare il via ai tuoi progetti.

Stato del progetto

YOLOv5 CI

Questo badge indica che tutti i test di YOLOv5 GitHub Actions Continuous Integration (CI) sono stati superati con successo. Questi test CI verificano rigorosamente la funzionalità e le prestazioni di YOLOv5 in vari aspetti chiave: formazione, validazione, inferenza, esportazione e benchmark. Assicurano un funzionamento coerente e affidabile su macOS, Windows e Ubuntu, con test condotti ogni 24 ore e su ogni nuovo commit.



Creato 2023-11-12, Aggiornato 2024-01-21
Autori: glenn-jocher (11)

Commenti