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 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 YOLOv7 e i rilevatori di oggetti SOTA

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:

  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.

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:

  1. Clona il repository YOLOv7:
    git clone https://github.com/WongKinYiu/yolov7
    
  2. Naviga nella directory clonata e installa le dipendenze:
    cd yolov7
    pip install -r requirements.txt
    
  3. 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.


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

Commenti