Vai al contenuto

YOLOv7: Borsa dei regali da addestrare

YOLOv7 è un rilevatore di oggetti in tempo reale all'avanguardia che supera tutti i rilevatori di oggetti conosciuti sia in termini di velocità che di precisione nell'intervallo tra 5 FPS e 160 FPS. Ha la massima precisione (56,8% AP) tra tutti i rilevatori di oggetti in tempo reale conosciuti con 30 FPS o più su GPU V100. Inoltre, YOLOv7 supera in velocità e precisione altri rilevatori di oggetti come YOLOR, YOLOX, Scaled-YOLOv4, YOLOv5 e molti altri. Il modello è stato addestrato sul dataset MS COCO da zero, senza utilizzare altri dataset o pesi pre-addestrati. Il codice sorgente di YOLOv7 è disponibile su GitHub.

Confronto tra YOLOv7 e i rilevatori di oggetti SOTA Confronto tra i rilevatori di oggetti più avanzati. Dai risultati riportati nella Tabella 2 sappiamo che il metodo proposto presenta il miglior compromesso velocità-accuratezza in assoluto. Se confrontiamo YOLOv7-tiny-SiLU con YOLOv5-N (r6.1), il nostro metodo è più veloce di 127 fps e più preciso del 10,7% nell'AP. Inoltre, YOLOv7 ha il 51,4% di AP con un frame rate di 161 fps, mentre PPYOLOE-L con lo stesso AP ha un frame rate di soli 78 fps. In termini di utilizzo dei parametri, YOLOv7 è inferiore del 41% a PPYOLOE-L. Se confrontiamo YOLOv7-X con 114 fps di velocità di inferenza con YOLOv5-L (r6.1) con 99 fps di velocità di inferenza, YOLOv7-X può migliorare l'AP del 3,9%. Se YOLOv7-X viene confrontato con YOLOv5-X (r6.1) di scala simile, la velocità di inferenza di YOLOv7-X è superiore di 31 fps. Inoltre, in termini di quantità di parametri e calcoli, YOLOv7-X riduce il 22% dei parametri e l'8% dei calcoli rispetto a YOLOv5-X (r6.1), ma migliora l'AP del 2,2% (Fonte).

Panoramica

Il rilevamento degli oggetti in tempo reale è un componente importante in molti sistemi di computer vision, tra cui il tracciamento di più oggetti, la guida autonoma, la robotica e l'analisi delle immagini mediche. Negli ultimi anni, lo sviluppo del rilevamento degli oggetti in tempo reale si è concentrato sulla progettazione di architetture efficienti e sul miglioramento della velocità di inferenza di varie CPU, GPU e unità di elaborazione neurale (NPU). YOLOv7 supporta sia le GPU mobili che i dispositivi GPU, dall'edge al cloud.

A differenza dei tradizionali rilevatori di oggetti in tempo reale che si concentrano sull'ottimizzazione dell'architettura, YOLOv7 si concentra sull'ottimizzazione del processo di formazione. Questo include moduli e metodi di ottimizzazione progettati per migliorare l'accuratezza del rilevamento degli oggetti senza aumentare il costo dell'inferenza, un concetto noto come "bag-of-freebies addestrabile".

Caratteristiche principali

YOLOv7 introduce diverse caratteristiche chiave:

  1. Riparametrizzazione del modello: YOLOv7 propone un modello di ri-parametrizzazione pianificato, che è una strategia applicabile agli strati di diverse reti con il concetto di percorso di propagazione del gradiente.

  2. Assegnazione dinamica delle etichette: L'addestramento del modello con più livelli di uscita presenta un nuovo problema: "Come assegnare obiettivi dinamici per le uscite dei diversi rami?". Per risolvere questo problema, YOLOv7 introduce un nuovo metodo di assegnazione delle etichette, chiamato assegnazione guidata delle etichette da un livello grossolano a uno fine.

  3. Scalatura estesa e composta: YOLOv7 propone metodi di "estensione" e "scalatura composta" per il rilevatore di oggetti in tempo reale che possono utilizzare in modo efficace i parametri e i calcoli.

  4. Efficienza: Il metodo proposto da YOLOv7 è in grado di ridurre efficacemente circa il 40% dei parametri e il 50% dei calcoli di un rilevatore di oggetti in tempo reale di ultima generazione, oltre a garantire una maggiore velocità di inferenza e un'accuratezza di rilevamento più elevata.

Esempi di utilizzo

Al momento in cui scriviamo, Ultralytics non supporta attualmente i modelli YOLOv7. Pertanto, gli utenti interessati a utilizzare YOLOv7 dovranno fare riferimento direttamente al repository GitHub di YOLOv7 per le istruzioni di installazione e utilizzo.

Ecco una breve panoramica dei passi tipici che potresti compiere per utilizzare YOLOv7:

  1. Visita il repository GitHub di YOLOv7: https://github.com/WongKinYiu/yolov7.

  2. Segui le istruzioni fornite nel file README per l'installazione. In genere si tratta di clonare il repository, installare le dipendenze necessarie e impostare le variabili d'ambiente necessarie.

  3. Una volta completata l'installazione, puoi addestrare e utilizzare il modello secondo le istruzioni d'uso fornite nel repository. Di solito si tratta di preparare il set di dati, configurare i parametri del modello, addestrare il modello e infine utilizzare il modello addestrato per eseguire il rilevamento degli oggetti.

Tieni presente che i passaggi specifici possono variare a seconda del tuo caso d'uso e dello stato attuale del repository YOLOv7. Pertanto, si consiglia vivamente di fare riferimento direttamente alle istruzioni fornite nel repository GitHub di YOLOv7.

Ci rammarichiamo per gli inconvenienti che ciò può causare e ci impegneremo ad aggiornare questo documento con esempi di utilizzo per Ultralytics una volta implementato il supporto per YOLOv7.

Citazioni e ringraziamenti

Desideriamo ringraziare gli autori di YOLOv7 per il loro significativo contributo nel campo del rilevamento di oggetti in tempo reale:

@article{wang2022yolov7,
  title={{YOLOv7}: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors},
  author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
  journal={arXiv preprint arXiv:2207.02696},
  year={2022}
}

Il documento originale di YOLOv7 è disponibile su arXiv. Gli autori hanno reso il loro lavoro disponibile al pubblico e la base di codice è accessibile su GitHub. Apprezziamo i loro sforzi per far progredire il campo e rendere il loro lavoro accessibile a una comunità più ampia.



Creato 2023-11-12, Aggiornato 2024-01-07
Autori: glenn-jocher (5), sergiuwaxmann (1)

Commenti