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

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

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.

Risultati della registrazione locale

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'

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

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.

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:

  1. Prepara il tuo set di dati: Raccogli le immagini ed etichettale. Usa strumenti come Roboflow per organizzare i dati ed esportarli nel formatoYOLOv5 .
  2. Configurazione dell'ambiente: Clona il repo di YOLOv5 e installa le dipendenze:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Crea la configurazione del set di dati: Scrivi 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 ?

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:

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


📅 Created 11 months ago ✏️ Updated 7 days ago

Commenti