Vai al contenuto

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

Ultralytics apprendimento attivo

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:

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.

YOLOv5 Precisioni

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:

Fasi di pre-elaborazione consigliate

  • 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 formato YOLOv5

Esportazione in YOLOv5 Pytorch e poi copiare lo snippet nello script di addestramento o nel blocco note per scaricare il 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 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 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

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:

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

YOLOv5 struttura del set di dati

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.

YOLOv5 modelli

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.

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

💡 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. Aprire in Colab Aprire in Kaggle

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: Aprire in Colab

YOLO UI

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!

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 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.

Risultati della registrazione locale

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'

risultati.png

I prossimi passi

Una volta che il modello è stato addestrato, è possibile utilizzare il punto di controllo migliore best.pt a:

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.

Stato del progetto

YOLOv5 CI

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:

  1. Preparare il set di dati: Raccogliere ed etichettare le immagini. Utilizzare strumenti come Roboflow per organizzare i dati ed esportarli in formatoYOLOv5 .
  2. Impostazione dell'ambiente: Clonare il repo YOLOv5 e installare le dipendenze:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Creare la configurazione del set di dati: Scrivere un dataset.yaml che definisce i percorsi treno/val e i nomi delle classi.
  4. Addestrare il modello:
    python train.py --img 640 --epochs 3 --data dataset.yaml --weights yolov5s.pt
    

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:

  1. Caricare il set di dati in un'area di lavoro Roboflow .
  2. Etichettare le immagini se non sono già state etichettate.
  3. 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).
  4. 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 .

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

Commenti