Vai al contenuto

Consigli per ottenere i migliori risultati di allenamento

📚 Questa guida spiega come ottenere i migliori risultati di mAP e allenamento con YOLOv5 🚀.

Nella maggior parte dei casi è possibile ottenere buoni risultati senza modificare i modelli o le impostazioni di addestramento, a patto che il dataset sia sufficientemente grande e ben etichettato. Se all'inizio non ottieni buoni risultati, ci sono dei passi da fare per migliorare, ma consigliamo sempre agli utenti di allenarsi con tutte le impostazioni predefinite prima di prendere in considerazione qualsiasi modifica. Questo aiuta a stabilire una linea di base delle prestazioni e a individuare le aree di miglioramento.

Se hai domande sui risultati del tuo allenamento ti consigliamo di fornire il maggior numero di informazioni possibili se ti aspetti una risposta utile, compresi i grafici dei risultati (train losses, val losses, P, R, mAP), la curva PR, la matrice di confusione, i mosaici dell'addestramento, i risultati dei test e le immagini delle statistiche del dataset come labels.png. Tutte queste immagini si trovano nella tua cartella project/name directory, in genere yolov5/runs/train/exp.

Di seguito abbiamo raccolto una guida completa per gli utenti che vogliono ottenere i migliori risultati nei loro allenamenti su YOLOv5 .

Set di dati

  • Immagini per classe. ≥ 1500 immagini per classe consigliate
  • Istanze per classe. ≥ 10000 istanze (oggetti etichettati) per classe consigliate
  • Varietà di immagini. Devono essere rappresentative dell'ambiente in cui vengono utilizzate. Per i casi d'uso reali consigliamo immagini provenienti da diverse ore del giorno, diverse stagioni, diverse condizioni atmosferiche, diverse luci, diverse angolazioni, diverse fonti (scraping online, raccolta locale, diverse telecamere) ecc.
  • Coerenza delle etichette. Tutte le istanze di tutte le classi in tutte le immagini devono essere etichettate. Un'etichettatura parziale non funziona.
  • Precisione delle etichette. Le etichette devono racchiudere strettamente ogni oggetto. Non deve esistere spazio tra un oggetto e il suo rettangolo di selezione. Nessun oggetto deve mancare di un'etichetta.
  • Verifica dell'etichetta. Guarda train_batch*.jpg all'avvio del treno per verificare che le etichette siano corrette, ad es. esempio mosaico.
  • Immagini di sfondo. Le immagini di sfondo sono immagini prive di oggetti che vengono aggiunte a un set di dati per ridurre i falsi positivi (FP). Si consiglia di aggiungere circa lo 0-10% di immagini di sfondo per ridurre i FP (COCO ha 1000 immagini di sfondo come riferimento, l'1% del totale). Non sono richieste etichette per le immagini di sfondo.

Analisi COCO

Selezione del modello

I modelli più grandi, come YOLOv5x e YOLOv5x6, produrranno risultati migliori in quasi tutti i casi, ma hanno più parametri, richiedono più memoria CUDA per l'addestramento e sono più lenti da eseguire. Per le implementazioni su dispositivi mobili consigliamo YOLOv5s/m, mentre per le implementazioni su cloud consigliamo YOLOv5l/x. Per un confronto completo di tutti i modelli, consulta la nostra tabella README.

YOLOv5 Modelli

  • Iniziare dai pesi pre-appresi. Consigliato per set di dati di piccole e medie dimensioni (es. VOC, VisDrone, Grano globale). Passa il nome del modello al metodo --weights argomento. I modelli vengono scaricati automaticamente dal sito Ultima versione di YOLOv5.
python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • Iniziare da zero. Consigliato per i set di dati di grandi dimensioni (es. COCO, Oggetti365, OIv6). Passa l'architettura del modello YAML che ti interessa, insieme a un file vuoto --weights '' argomento:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

Impostazioni di formazione

Prima di modificare qualsiasi cosa, allenati prima con le impostazioni predefinite per stabilire una linea di base delle prestazioni. Un elenco completo delle impostazioni di train.py si trova nel file argparser di train.py.

  • Epoche. Inizia con 300 epoche. Se si verifica un overfitting all'inizio, puoi ridurre le epoche. Se l'overfitting non si verifica dopo 300 epochs, fai un allenamento più lungo, cioè 600, 1200 epochs e così via.
  • Dimensioni dell'immagine. COCO si allena alla risoluzione nativa di --img 640anche se, a causa dell'elevato numero di oggetti di piccole dimensioni presenti nel set di dati, può trarre vantaggio dall'addestramento a risoluzioni più elevate, come ad esempio --img 1280. Se ci sono molti oggetti piccoli, i set di dati personalizzati trarranno vantaggio dall'addestramento a risoluzione nativa o superiore. I migliori risultati di inferenza si ottengono con la stessa --img come l'allenamento è stato eseguito, cioè se ci si allena a --img 1280 è necessario testare e rilevare anche --img 1280.
  • Dimensione del lotto. Usa il più grande --batch-size che il tuo hardware consente. I batch di piccole dimensioni producono statistiche batchnorm scadenti e dovrebbero essere evitati.
  • Iperparametri. Gli iperparametri predefiniti sono in hyp.scratch-low.yaml. Ti consigliamo di allenarti con gli iperparametri predefiniti prima di pensare di modificarli. In generale, l'aumento degli iperparametri di incremento ridurrà e ritarderà l'overfitting, consentendo allenamenti più lunghi e mAP finali più elevate. La riduzione degli iperparametri di guadagno della componente di perdita, come ad esempio hyp['obj'] contribuirà a ridurre l'overfitting in quelle specifiche componenti di perdita. Per un metodo automatizzato di ottimizzazione di questi iperparametri, consulta il nostro sito Tutorial sull'evoluzione degli iperparametri.

Ulteriori letture

Se vuoi saperne di più, un buon punto di partenza è la "Ricetta per l'addestramento delle reti neurali" di Karpathy, che contiene ottime idee per l'addestramento che si applicano ampiamente a tutti i domini ML: https://karpathy.github.io/2019/04/25/recipe/

Buona fortuna 🍀 e facci sapere se hai altre domande!



Creato 2023-11-12, Aggiornato 2024-01-12
Autori: glenn-jocher (3)

Commenti