Dati personalizzati del treno
📚 Questa guida spiega come addestrare il proprio set di dati personalizzati con YOLOv5 🚀.
Prima di iniziare
Clonare il repo e installare il file requirements.txt in un file 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
La creazione di un modello personalizzato per il rilevamento degli 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 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 desiderano incorporare i nostri modelli di intelligenza artificiale nei loro prodotti e servizi.
Per maggiori dettagli, consultare Ultralytics Licensing.
YOLOv5 I modelli devono essere addestrati su dati etichettati per poter apprendere le classi di oggetti presenti in quei dati. Esistono due opzioni per creare il set di dati prima di iniziare l'addestramento:
Opzione 1: Creare un Roboflow set di dati
1.1 Raccolta di immagini
Il modello imparerà con l'esempio. L'addestramento su immagini simili a quelle che vedrà in natura è della massima importanza. L'ideale sarebbe raccogliere un'ampia gamma di immagini con la stessa configurazione (telecamera, angolazione, illuminazione, ecc.) con la quale verrà realizzato il progetto.
Se questo non è possibile, si può partire da un set di dati pubblici per addestrare il modello iniziale e poi campionare le immagini selvatiche durante l'inferenza per migliorare il set di dati e il modello in modo iterativo.
1.2 Creare etichette
Una volta raccolte le immagini, è necessario annotare gli oggetti di interesse per creare una verità di base da cui il modello possa imparare.
Roboflow Annotate è un semplice strumento basato sul Web per gestire ed etichettare le immagini con il proprio team ed esportarle nel formato di annotazioneYOLOv5.
1.3 Preparare il set di dati per YOLOv5
Indipendentemente dal fatto che si etichettino le immagini con Roboflow o meno, si può usare per convertire il set di dati in formato YOLO , creare un file di configurazione YAML YOLOv5 e ospitarlo per importarlo nello script di addestramento.
Creare un account gratuito su Roboflow e caricare il 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 si consiglia di applicare alcun passo di incremento in Roboflow per l'addestramento con YOLOv5. Si consiglia invece di applicare le seguenti fasi di preelaborazione:
- Auto-Orient - per eliminare l'orientamento EXIF dalle immagini.
- Ridimensiona (Stretch) - alla dimensione quadrata di input del modello (640x640 è il valore predefinito di YOLOv5 ).
Generando una versione si ottiene un'istantanea del set di dati, in modo da poter sempre tornare indietro e confrontare i futuri addestramenti del modello con questo, anche se si aggiungono altre immagini o si modifica la configurazione in seguito.
Esportazione in YOLOv5 Pytorch
e poi copiare lo snippet nello script di addestramento o nel blocco note per scaricare il set di dati.
Opzione 2: Creare un set di dati manuale
2.1 Creare dataset.yaml
COCO128 è un esempio di piccolo set di dati didattici composto dalle prime 128 immagini in COCO train2017. Queste stesse 128 immagini vengono utilizzate sia per l'addestramento che per la validazione, per verificare che la nostra pipeline di addestramento sia capace di 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
(o *.txt
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, esportare le etichette in YOLO formato, con una *.txt
per 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, dividere
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
Organizzare 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. Selezionare un modello
Selezionare un modello preaddestrato 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, consultare la tabella README.
4. Treno
Addestrare 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
💡 Allenarsi sempre da un set di dati locale. Le unità montate o di rete come Google Drive saranno molto lente.
Tutti i risultati della formazione vengono salvati in runs/train/
con directory di esecuzione crescenti, cioè runs/train/exp2
, runs/train/exp3
ecc. Per maggiori dettagli, consultare la sezione Formazione del nostro quaderno di istruzioni.
5. Visualizzare
Comet Registrazione e visualizzazione 🌟 NUOVO
Comet è ora completamente integrato con YOLOv5. 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 consente di non perdere mai di vista il proprio lavoro e facilita la condivisione dei risultati e la collaborazione tra team di qualsiasi dimensione!
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 per questa integrazione, consultare il documento Comet Tutorial. Per saperne di più su Comet, visitate il nostro sito web documentazione. Iniziate a provare il taccuino Comet Colab Notebook:
ClearML Registrazione e automazione 🌟 NUOVO
ClearML è completamente integrato in YOLOv5 per tenere traccia della sperimentazione, gestire le versioni dei set di dati e persino eseguire in remoto le esercitazioni. Per abilitare ClearML:
pip install clearml
- corsa
clearml-init
per connettersi a un server ClearML
Avrete 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 anche riproducibili su macchine diverse! Con una sola riga in più, possiamo programmare un compito di addestramento di YOLOv5 su una coda per essere eseguito da un numero qualsiasi di agenti (worker) di ClearML .
È possibile utilizzare ClearML Data per versionare il set di dati e poi passarlo a YOLOv5 semplicemente utilizzando il suo ID univoco. Questo vi aiuterà a tenere traccia dei vostri dati senza aggiungere ulteriori problemi. Esplorate l'esercitazione di ClearML per i dettagli!
Registrazione locale
I risultati dell'allenamento vengono registrati automaticamente con Tensorboard e CSV logger a runs/train
con una nuova cartella degli esperimenti creata per ogni nuovo addestramento come runs/train/exp2
, runs/train/exp3
, ecc.
Questa directory contiene statistiche su treno e val, mosaici, etichette, previsioni e mosaici aumentati, nonché metriche e grafici, tra cui curve diprecisione-richiamo (PR) e matrici di confusione.
File dei risultati results.csv
viene aggiornato dopo ogni epocae poi tracciata come results.png
(sotto) al termine dell'addestramento. È inoltre possibile 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 modello è stato addestrato, è possibile utilizzare il punto di controllo migliore best.pt
a:
- Eseguire CLI o Python su nuove immagini e video
- Convalidare l' accuratezza su treno, val e split di test
- Esportazione in TensorFlowKeras, ONNX, TFlite, TF.js, CoreML e TensorRT
- Evolvere gli iperparametri per migliorare le prestazioni
- Migliorate il vostro modello campionando immagini del mondo reale e aggiungendole al vostro set di dati.
Ambienti supportati
Ultralytics fornisce una serie di ambienti pronti all'uso, ognuno dei quali è preinstallato con le dipendenze essenziali quali CUDA, CUDNN, Python, e PyTorchper avviare i vostri progetti.
- Taccuini gratuiti GPU:
- Google Cloud: Guida rapida a GCP
- Amazon: Guida rapida AWS
- Azure: Guida rapida ad AzureML
- Docker: Guida rapida a Docker
Stato del progetto
Questo badge indica che tutti i test di Continuous Integration (CI) di YOLOv5 GitHub Actions 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.
FAQ
Come si addestra YOLOv5 su un set di dati personalizzato?
L'addestramento di YOLOv5 su un set di dati personalizzato comporta diverse fasi:
- Preparare il set di dati: Raccogliere ed etichettare le immagini. Utilizzare strumenti come Roboflow per organizzare i dati ed esportarli in formatoYOLOv5 .
- Impostazione dell'ambiente: Clonare il repo YOLOv5 e installare le dipendenze:
- Creare la configurazione del set di dati: Scrivere 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 ?
È possibile utilizzare Roboflow Annotate, uno strumento intuitivo basato sul Web per l'etichettatura delle immagini. Supporta la collaborazione in team ed esporta in formato YOLOv5 . Dopo aver raccolto le immagini, utilizzare 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 competenze di codifica approfondite. I vantaggi dell'utilizzo di Ultralytics HUB includono:
- Facile formazione dei modelli: Semplifica il processo di formazione con ambienti preconfigurati.
- Gestione dei dati: Gestite 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 si fa a convertire i dati annotati in formato YOLOv5 ?
Per convertire i dati annotati nel formato YOLOv5 utilizzando Roboflow:
- Caricare il set di dati in un'area di lavoro Roboflow .
- Etichettare le immagini se non sono già state etichettate.
- Generazione ed esportazione il set di dati in
YOLOv5 Pytorch
formato. Assicurarsi che vengano applicate le fasi di pre-elaborazione come l'Auto-Orientamento e il Ridimensionamento (Stretch) alle dimensioni quadrate dell'input (ad esempio, 640x640). - Scaricare il dataset e integrarlo nello script di addestramento 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: Per le aziende che desiderano integrare YOLOv5 in prodotti e servizi commerciali. Per informazioni dettagliate, visitate la pagina delle licenze.
Per maggiori dettagli, consultare la nostra guida sulle licenze diUltralytics .