YOLOv7: borsa dei regali addestrabile
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 superiore 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 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 è del 41% inferiore a PPYOLOE-L. Se si confronta 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 visione artificiale, 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 introduce un'attenzione particolare all'ottimizzazione del processo di addestramento. 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 ri-parametrizzato 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, in grado di utilizzare efficacemente parametri e calcoli.
-
Efficienza: Il metodo proposto da YOLOv7 è in grado di ridurre efficacemente circa il 40% dei parametri e il 50% dei calcoli rispetto allo stato dell'arte dei rilevatori di oggetti in tempo reale, con 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 si possono compiere per utilizzare YOLOv7:
-
Visitate il repository GitHub di YOLOv7: https://github.com/WongKinYiu/yolov7.
-
Seguire 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, è possibile addestrare e utilizzare il modello secondo le istruzioni d'uso fornite nel repository. In genere si tratta di preparare il set di dati, configurare i parametri del modello, addestrare il modello e quindi utilizzare il modello addestrato per eseguire il rilevamento degli oggetti.
Si noti che i passaggi specifici possono variare a seconda del caso d'uso specifico e dello stato attuale del repository YOLOv7. Pertanto, si raccomanda vivamente di fare riferimento direttamente alle istruzioni fornite nel repository GitHub di YOLOv7.
Siamo spiacenti 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 pubblico il loro lavoro 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.
FAQ
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 per il confronto con altri rilevatori di oggetti all'avanguardia, si rimanda al documento YOLOv7.
In che modo YOLOv7 migliora i precedenti modelli 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 addestramento 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, è possibile esplorare e addestrare utilizzando gli strumenti di Ultralytics come Ultralytics HUB.
Come si installa ed esegue YOLOv7 per un progetto di rilevamento di oggetti personalizzato?
Per installare ed eseguire YOLOv7, procedere come segue:
- Clonare il repository YOLOv7:
- Navigare nella cartella clonata e installare le dipendenze:
- Preparare il set di dati e configurare i parametri del modello secondo le istruzioni d'uso fornite nel repository. Per ulteriori indicazioni, visitare 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 in diversi rami, migliorando la precisione.
- 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, consultare la sezione Panoramica di YOLOv7.