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
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:
- La licenzaAGPL-3.0 è una licenza open-source approvata dall'OSI, ideale per studenti e appassionati.
- La Licenza Enterprise per le aziende che vogliono incorporare i nostri modelli di intelligenza artificiale nei loro prodotti e servizi.
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.
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:
- 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 YOLOv5 Pytorch
quindi copia lo snippet nel tuo script di allenamento o nel notebook per scaricare il tuo 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. These same 128 images are used for both training and validation to verify our training pipeline is capable of 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 un *.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
ewidth
per larghezza dell'immagine ey_center
eheight
per altezza dell'immagine. - I numeri delle classi sono indicizzati a zero (partono da 0).
Il file di etichetta corrispondente all'immagine precedente contiene 2 persone (classe 0
) e un pareggio (classe 27
):
2.3 Organizzare le directory
Organizza le immagini e le etichette del treno e della val secondo l'esempio seguente. YOLOv5 assume /coco128
è 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:
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.
4. Treno
Addestra un modello YOLOv5s su COCO128 specificando il dataset, la dimensione del batch, 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.
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.
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 funzionalità 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:
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!
Registrazione locale
I risultati dell'allenamento vengono registrati automaticamente con Tensorboard e CSV logger a runs/train
con una nuova directory di esperimenti creata per ogni nuova formazione come runs/train/exp2
, runs/train/exp3
, ecc.
This directory contains train and val statistics, mosaics, labels, predictions and augmented mosaics, as well as metrics and charts including precision-recall (PR) curves and confusion matrices.
File dei risultati results.csv
is updated after each epoch, and then plotted as results.png
(sotto) al termine della formazione. 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'
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
- Validate accuracy on train, val and test splits
- Export to TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML and TensorRT formats
- Evolvere gli iperparametri per migliorare le prestazioni
- Migliora il tuo modello campionando immagini del mondo reale e aggiungendole al tuo set di dati.
Ambienti supportati
Ultralytics offre una serie di ambienti pronti all'uso, ognuno dei quali è preinstallato con le dipendenze essenziali, come ad esempio CUDA, CUDNN, Python, e PyTorchper dare il via ai tuoi progetti.
- Taccuini gratuiti GPU:
- Google Cloud: Guida rapida a GCP
- Amazon: Guida rapida di AWS
- Azure: Guida rapida ad AzureML
- Docker: Guida rapida a Docker
Stato del progetto
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.
DOMANDE FREQUENTI
Come faccio ad addestrare YOLOv5 sul mio set di dati personalizzato?
L'addestramento di YOLOv5 su un set di dati personalizzato comporta diverse fasi:
- Prepara il tuo set di dati: Raccogli le immagini ed etichettale. Usa strumenti come Roboflow per organizzare i dati ed esportarli nel formatoYOLOv5 .
- Configurazione dell'ambiente: Clona il repo di YOLOv5 e installa le dipendenze:
- Crea la configurazione del set di dati: Scrivi un
dataset.yaml
che definisce i percorsi treno/val e i nomi delle classi. - Addestrare il modello:
Quali strumenti posso utilizzare per annotare il mio set di dati YOLOv5 ?
Puoi utilizzare Roboflow Annotate, uno strumento intuitivo basato sul web per etichettare le immagini. Supporta la collaborazione in team ed esporta in formato YOLOv5 . Dopo aver raccolto le immagini, usa Roboflow per creare e gestire le annotazioni in modo efficiente. Altre opzioni includono strumenti come LabelImg e CVAT per le annotazioni locali.
Perché dovrei usare Ultralytics HUB per addestrare i miei modelli YOLO ?
Ultralytics HUB offre una piattaforma end-to-end per la formazione, l'implementazione e la gestione dei modelli di YOLO senza bisogno di grandi competenze di codifica. I vantaggi dell'utilizzo di Ultralytics HUB includono:
- Facile formazione dei modelli: Semplifica il processo di formazione con ambienti preconfigurati.
- Gestione dei dati: Gestisci senza problemi i set di dati e il controllo delle versioni.
- Monitoraggio in tempo reale: Integra strumenti come Comet per il monitoraggio e la visualizzazione delle metriche in tempo reale.
- Collaborazione: Ideale per progetti di gruppo con risorse condivise e gestione semplice.
Come posso convertire i miei dati annotati nel formato YOLOv5 ?
Per convertire i dati annotati in formato YOLOv5 utilizzando Roboflow:
- Carica il tuo set di dati in un'area di lavoro di Roboflow .
- Etichetta le immagini se non sono già etichettate.
- Generare ed esportare il set di dati in
YOLOv5 Pytorch
formato. Assicurati che vengano applicate le fasi di pre-elaborazione come l'Auto-Orientamento e il Ridimensionamento (Stretch) alle dimensioni quadrate dell'input (ad esempio, 640x640). - Scarica il set di dati e integralo nel tuo script di formazione YOLOv5 .
Quali sono le opzioni di licenza per l'utilizzo di YOLOv5 in applicazioni commerciali?
Ultralytics offre due opzioni di licenza:
- AGPL-3.0 Licenza: Una licenza open-source adatta all'uso non commerciale, ideale per studenti e appassionati.
- Licenza Enterprise: È pensata per le aziende che desiderano integrare YOLOv5 in prodotti e servizi commerciali. Per informazioni dettagliate, visita la pagina delle licenze.
Per maggiori dettagli, consulta la nostra guida sulle licenze diUltralytics .