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
Lo sviluppo di un modello di rilevamento degli oggetti personalizzato è un processo iterativo:
- 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.
- Etichettatura degli oggetti: Annotate con precisione gli oggetti di interesse all'interno delle immagini.
- Addestrare un modello: Utilizzare i dati etichettati per addestrare il modello YOLOv5 . Sfruttare l'apprendimento per trasferimento iniziando con pesi preaddestrati.
- Distribuzione e previsione: Utilizzare il modello addestrato per l'inferenza su nuovi dati non visti.
- 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 dapath
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
ewidth
per la larghezza totale dell'immagine, e dividerey_center
eheight
per l'altezza totale dell'immagine. - Gli indici delle classi sono indicizzati a zero (cioè, la prima classe è rappresentata da
0
, il secondo da1
e così via).
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:
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)
└── ...
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.
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 tuodataset.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:
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:
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 .
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.
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
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:
- Eseguire l 'inferenza su nuove immagini o video utilizzando il modello addestrato tramite l'opzione CLI o Python.
- Eseguire la convalida per valutare l'accuratezza e le capacità di generalizzazione del modello su diverse suddivisioni dei dati (ad esempio, un set di test trattenuto).
- Esportare il modello in vari formati di distribuzione come ONNX, TensorFlow SavedModelo TensorRT per un'inferenza ottimizzata su diverse piattaforme.
- Utilizzare tecniche di regolazione degli iperparametri per ottenere potenzialmente ulteriori guadagni di prestazioni.
- Continuate a migliorare il vostro modello seguendo i nostri suggerimenti per ottenere i migliori risultati di formazione e aggiungendo iterativamente dati più diversificati e impegnativi in base all'analisi delle prestazioni.
Ambienti supportati
Ultralytics fornisce ambienti pronti all'uso dotati di dipendenze essenziali come CUDA, cuDNN, Pythone PyTorchper facilitare un avvio senza intoppi.
- Taccuini gratuiti GPU:
- Piattaforme cloud:
- Google Cloud: Guida rapida a GCP
- Amazon AWS: Guida rapida AWS
- Microsoft Azure: Guida rapida ad AzureML
- Impostazione locale:
- Docker: Guida rapida a Docker
- Docker: Guida rapida a Docker
Stato del progetto
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:
- 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/
eval/
(e facoltativamentetest/
). Considerare l'uso di modelli come Google Gemini, SAM2, o Mondo YOLO per assistere o automatizzare il processo di etichettatura (vedere Sezione 1.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
- 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. - Avviare la formazione: Eseguire il programma
train.py
fornendo i percorsi dei propri filedataset.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 aimage1.txt
). Posizionare questi file in una cartellalabels/
parallelamente alla cartellaimages/
(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.