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 da 5 FPS a 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 i rilevatori di oggetti SOTA
Dai risultati della tabella di confronto di YOLO 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).
Modello | Params (M) |
FLOP (G) |
Dimensione (pixel) |
FPS | APtest/ val 50-95 |
APtest 50 |
APtest 75 |
APtest S |
APtest M |
APtest L |
---|---|---|---|---|---|---|---|---|---|---|
YOLOX-S | 9.0M | 26.8G | 640 | 102 | 40.5% / 40.5% | - | - | - | - | - |
YOLOX-M | 25.3M | 73.8G | 640 | 81 | 47.2% / 46.9% | - | - | - | - | - |
YOLOX-L | 54.2M | 155.6G | 640 | 69 | 50.1% / 49.7% | - | - | - | - | - |
YOLOX-X | 99.1M | 281.9G | 640 | 58 | 51.5% / 51.1% | - | - | - | - | - |
PPYOLOE-S | 7.9M | 17.4G | 640 | 208 | 43.1% / 42.7% | 60.5% | 46.6% | 23.2% | 46.4% | 56.9% |
PPYOLOE-M | 23.4M | 49.9G | 640 | 123 | 48.9% / 48.6% | 66.5% | 53.0% | 28.6% | 52.9% | 63.8% |
PPYOLOE-L | 52.2M | 110.1G | 640 | 78 | 51.4% / 50.9% | 68.9% | 55.6% | 31.4% | 55.3% | 66.1% |
PPYOLOE-X | 98.4M | 206.6G | 640 | 45 | 52.2% / 51.9% | 69.9% | 56.5% | 33.3% | 56.3% | 66.4% |
YOLOv5-N (r6.1) | 1.9M | 4.5G | 640 | 159 | - / 28.0% | - | - | - | - | - |
YOLOv5-S (r6.1) | 7.2M | 16.5G | 640 | 156 | - / 37.4% | - | - | - | - | - |
YOLOv5-M (r6.1) | 21.2M | 49.0G | 640 | 122 | - / 45.4% | - | - | - | - | - |
YOLOv5-L (r6.1) | 46.5M | 109.1G | 640 | 99 | - / 49.0% | - | - | - | - | - |
YOLOv5-X (r6.1) | 86.7M | 205.7G | 640 | 83 | - / 50.7% | - | - | - | - | - |
YOLOR-CSP | 52.9M | 120.4G | 640 | 106 | 51.1% / 50.8% | 69.6% | 55.7% | 31.7% | 55.3% | 64.7% |
YOLOR-CSP-X | 96.9M | 226.8G | 640 | 87 | 53.0% / 52.7% | 71.4% | 57.9% | 33.7% | 57.1% | 66.8% |
YOLOv7-tiny-SiLU | 6.2M | 13.8G | 640 | 286 | 38.7% / 38.7% | 56.7% | 41.7% | 18.8% | 42.4% | 51.9% |
YOLOv7 | 36.9M | 104.7G | 640 | 161 | 51.4% / 51.2% | 69.7% | 55.9% | 31.8% | 55.5% | 65.0% |
YOLOv7-X | 71.3M | 189.9G | 640 | 114 | 53.1% / 52.9% | 71.2% | 57.8% | 33.8% | 57.1% | 67.4% |
YOLOv5-N6 (r6.1) | 3.2M | 18.4G | 1280 | 123 | - / 36.0% | - | - | - | - | - |
YOLOv5-S6 (r6.1) | 12.6M | 67.2G | 1280 | 122 | - / 44.8% | - | - | - | - | - |
YOLOv5-M6 (r6.1) | 35.7M | 200.0G | 1280 | 90 | - / 51.3% | - | - | - | - | - |
YOLOv5-L6 (r6.1) | 76.8M | 445.6G | 1280 | 63 | - / 53.7% | - | - | - | - | - |
YOLOv5-X6 (r6.1) | 140.7M | 839.2G | 1280 | 38 | - / 55.0% | - | - | - | - | - |
YOLOR-P6 | 37.2M | 325.6G | 1280 | 76 | 53.9% / 53.5% | 71.4% | 58.9% | 36.1% | 57.7% | 65.6% |
YOLOR-W6 | 79.8G | 453.2G | 1280 | 66 | 55.2% / 54.8% | 72.7% | 60.5% | 37.7% | 59.1% | 67.1% |
YOLOR-E6 | 115.8M | 683.2G | 1280 | 45 | 55.8% / 55.7% | 73.4% | 61.1% | 38.4% | 59.7% | 67.7% |
YOLOR-D6 | 151.7M | 935.6G | 1280 | 34 | 56.5% / 56.1% | 74.1% | 61.9% | 38.9% | 60.4% | 68.7% |
YOLOv7-W6 | 70.4M | 360.0G | 1280 | 84 | 54.9% / 54.6% | 72.6% | 60.1% | 37.3% | 58.7% | 67.1% |
YOLOv7-E6 | 97.2M | 515.2G | 1280 | 56 | 56.0% / 55.9% | 73.5% | 61.2% | 38.0% | 59.9% | 68.4% |
YOLOv7-D6 | 154.7M | 806.8G | 1280 | 44 | 56.6% / 56.3% | 74.0% | 61.8% | 38.8% | 60.1% | 69.5% |
YOLOv7-E6E | 151.7M | 843.2G | 1280 | 36 | 56.8% / 56.8% | 74.4% | 62.1% | 39.3% | 60.5% | 69.0% |
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 i dispositivi mobili GPU che 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:
-
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.
-
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.
-
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.
-
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:
-
Visita il repository GitHub di YOLOv7: https://github.com/WongKinYiu/yolov7.
-
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.
-
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:
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.
DOMANDE FREQUENTI
Che cos'è YOLOv7 e perché è considerato un'innovazione nel rilevamento degli oggetti in tempo reale?
YOLOv7 è un modello all'avanguardia per il rilevamento di oggetti in tempo reale che raggiunge velocità e precisione senza precedenti. Supera altri modelli, come YOLOX, YOLOv5 e PPYOLOE, sia per l'utilizzo dei parametri che per la velocità di inferenza. Le caratteristiche distintive di YOLOv7 sono la ri-parametrizzazione del modello e l'assegnazione dinamica delle etichette, che ne ottimizzano le prestazioni senza aumentare i costi di inferenza. Per maggiori dettagli tecnici sulla sua architettura e sulle metriche di confronto con altri rilevatori di oggetti all'avanguardia, consulta il documento YOLOv7.
In che modo YOLOv7 migliora i precedenti modelli di YOLO come YOLOv4 e YOLOv5?
YOLOv7 introduce diverse innovazioni, tra cui la ri-parametrizzazione del modello e l'assegnazione dinamica delle etichette, che migliorano il processo di formazione e l'accuratezza dell'inferenza. Rispetto a YOLOv5, YOLOv7 aumenta significativamente la velocità e l'accuratezza. Ad esempio, YOLOv7-X migliora l'accuratezza del 2,2% e riduce i parametri del 22% rispetto a YOLOv5-X. I confronti dettagliati sono riportati nella tabella delle prestazioni YOLOv7 a confronto con i rilevatori di oggetti SOTA.
Posso utilizzare YOLOv7 con gli strumenti e le piattaforme di Ultralytics ?
Al momento, Ultralytics non supporta direttamente YOLOv7 nei suoi strumenti e piattaforme. Gli utenti interessati a utilizzare YOLOv7 devono seguire le istruzioni di installazione e utilizzo fornite nel repository GitHub di YOLOv7. Per altri modelli all'avanguardia, puoi esplorare e addestrare gli strumenti di Ultralytics come Ultralytics HUB.
Come faccio a installare ed eseguire YOLOv7 per un progetto di rilevamento oggetti personalizzato?
Per installare ed eseguire YOLOv7, segui i seguenti passaggi:
- Clona il repository YOLOv7:
- Naviga nella directory clonata e installa le dipendenze:
- Prepara il tuo set di dati e configura i parametri del modello seguendo le istruzioni d'uso fornite nel repository. Per ulteriori indicazioni, visita il repository GitHub di YOLOv7 per le informazioni e gli aggiornamenti più recenti.
Quali sono le caratteristiche principali e le ottimizzazioni introdotte in YOLOv7?
YOLOv7 offre diverse caratteristiche chiave che rivoluzionano il rilevamento degli oggetti in tempo reale:
- Riparametrizzazione del modello: Migliora le prestazioni del modello ottimizzando i percorsi di propagazione del gradiente.
- Assegnazione dinamica delle etichette: Utilizza un metodo guidato da grossolano a fine per assegnare obiettivi dinamici per le uscite di diversi rami, migliorando l'accuratezza.
- Scala estesa e composta: Utilizza in modo efficiente i parametri e i calcoli per scalare il modello per varie applicazioni in tempo reale.
- Efficienza: Riduce il numero di parametri del 40% e il calcolo del 50% rispetto ad altri modelli all'avanguardia, raggiungendo al contempo una maggiore velocità di inferenza. Per ulteriori dettagli su queste caratteristiche, consulta la sezione Panoramica di YOLOv7.