Vai al contenuto

YOLOv7 vs YOLOv10: evoluzione architettonica e analisi delle prestazioni

L'evoluzione della famiglia YOLO (You Only Look Once) rappresenta un'affascinante cronologia dei progressi della computer vision, in grado di bilanciare l'eterno compromesso tra velocità di inferenza e precisione di rilevamento. Questo confronto analizza due tappe significative: YOLOv7un modello robusto che ha stabilito nuovi parametri di riferimento nel 2022, e YOLOv10, una versione del 2024 che introduce un cambiamento di paradigma con l'addestramento NMS.

Sebbene entrambi i modelli rappresentino una scelta eccellente per il rilevamento degli oggetti, essi rispondono a filosofie architettoniche diverse. YOLOv7 spinge i limiti del "bag-of-freebies" addestrabile e dell'ottimizzazione del percorso del gradiente, mentre YOLOv10 si concentra sull'eliminazione dei colli di bottiglia della post-elaborazione per raggiungere l'efficienza end-to-end in tempo reale.

YOLOv7: ottimizzazione del percorso del gradiente

Rilasciato nel luglio del 2022, YOLOv7 ha introdotto significative modifiche architetturali volte a ottimizzare il processo di addestramento senza aumentare i costi di inferenza. Grazie alla sua elevata precisione sul set di datiCOCO , YOLOv7 è diventato rapidamente uno dei preferiti per le attività di computer vision di carattere generale.

Autori: Chien-Yao Wang, Alexey Bochkovskiy e Hong-Yuan Mark Liao
Organizzazione: Institute of Information Science, Academia Sinica, Taiwan
Data: 2022-07-06
ArXiv:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
GitHub:WongKinYiu/yolov7

Caratteristiche architettoniche principali

YOLOv7 ha introdotto la Extended Efficient Layer Aggregation Network (E-ELAN). Questa architettura consente al modello di apprendere più caratteristiche diverse controllando i percorsi di gradiente più brevi e più lunghi, assicurando che la rete converga efficacemente durante l'addestramento.

Inoltre, YOLOv7 utilizza ampiamente i metodi "Bag-of-Freebies" che migliorano l'accuratezza durante l'addestramento senza aumentare i costi di inferenza. Questi includono la ri-parametrizzazione del modello, in cui una complessa struttura di addestramento viene semplificata in una struttura di inferenza snella, riducendo la latenza e mantenendo le prestazioni apprese.

Per saperne di più su YOLOv7

YOLOv10: la fine di NMS

YOLOv10, rilasciato nel maggio 2024 dai ricercatori della Tsinghua University, risolve un problema di lunga data nel rilevamento degli oggetti: La soppressione non massimaleNMS). I modelli YOLO tradizionali prevedono più bounding box per un singolo oggetto e si affidano all'NMS per filtrare i duplicati. Questa fase di post-elaborazione aggiunge una latenza che varia a seconda del numero di oggetti presenti nella scena.

Autori: Ao Wang, Hui Chen, Lihao Liu, et al.
Organizzazione: Università Tsinghua
Data: 2024-05-23
ArXiv:YOLOv10: Real-Time End-to-End Object Detection
GitHub:THU-MIG/yolov10

Caratteristiche architettoniche principali

YOLOv10 introduce una strategia di doppia assegnazione coerente. Durante l'addestramento, il modello utilizza sia una testa uno-a-molti (per una supervisione ricca) sia una testa uno-a-uno (per la predizione end-to-end). Durante l'inferenza, viene utilizzata solo la testa uno-a-uno, eliminando completamente la necessità di NMS . Ciò si traduce in un'inferenza prevedibile e a bassa latenza, che la rende particolarmente adatta alle applicazioni di intelligenza artificiale per i bordi, dove il tempo di elaborazione deve essere costante.

Per saperne di più su YOLOv10

Confronto tecnico: Architettura e prestazioni

La principale distinzione tra questi modelli risiede nel loro approccio all'efficienza dell'inferenza. YOLOv7 si basa su una struttura portante altamente ottimizzata (E-ELAN) per estrarre le caratteristiche in modo efficiente, ma richiede comunque una post-elaborazione tradizionale. YOLOv10 modifica la testa di rilevamento fondamentale per eliminare le fasi di post-elaborazione, ottenendo una latenza inferiore per livelli di accuratezza simili.

Metriche di performance

Come illustrato nella tabella seguente, YOLOv10 dimostra un'efficienza superiore. Ad esempio, YOLOv10b raggiunge una maggiore mAP (52,7%) rispetto a YOLOv7l (51,4%) pur utilizzando un numero significativamente inferiore di parametri (24,4M contro 36,9M) e di operazioni in virgola mobile (FLOP).

Capire la latenza

Le metriche di "velocità" evidenziano l'impatto del design NMS di YOLOv10. Eliminando il passaggio NMS , YOLOv10 riduce l'overhead computazionale durante l'inferenza, il che è particolarmente vantaggioso su acceleratori hardware come TensorRT , dove la post-elaborazione può altrimenti diventare un collo di bottiglia.

Modellodimensione
(pixel)
mAPval
50-95
Velocità
CPU ONNX
(ms)
Velocità
T4 TensorRT10
(ms)
parametri
(M)
FLOPs
(B)
YOLOv7l64051.4-6.8436.9104.7
YOLOv7x64053.1-11.5771.3189.9
YOLOv10n64039.5-1.562.36.7
YOLOv10s64046.7-2.667.221.6
YOLOv10m64051.3-5.4815.459.1
YOLOv10b64052.7-6.5424.492.0
YOLOv10l64053.3-8.3329.5120.3
YOLOv10x64054.4-12.256.9160.4

Punti di forza e debolezze

Punti di forza di YOLOv7 :

  • Robustezza comprovata: Ampiamente testato in vari contesti accademici e industriali dal 2022.
  • Supporto per l'alta risoluzione: Prestazioni eccellenti su ingressi a risoluzione più elevata (ad esempio, 1280 pixel) tramite specifiche varianti W6/E6.
  • Risorse della comunità: A causa della sua età, esiste un gran numero di tutorial e di implementazioni di terze parti.

Punti deboli di YOLOv7 :

  • Complessità: La ri-parametrizzazione e la struttura della testa ausiliaria possono complicare la pipeline di addestramento rispetto ai moderni modelli Ultralytics .
  • Dipendenza daNMS : La velocità di inferenza dipende parzialmente dalla densità della scena a causa dell'NMS.

Punti di forza di YOLOv10 :

  • Latenza minima: L'architettura NMS consente un'inferenza estremamente veloce, ideale per l'inferenza in tempo reale.
  • Efficienza: Raggiunge un'accuratezza all'avanguardia con un minor numero di parametri e un minore utilizzo di memoria.
  • Facilità di distribuzione: L'eliminazione del passaggio NMS semplifica il processo di esportazione in formati come ONNX e TensorRT.

Punti deboli di YOLOv10 :

  • Specificità del compito: si concentra principalmente sul rilevamento degli oggetti, mentre altri modelli dell'ecosistema Ultralytics (come YOLO11) supportano in modo nativo la segmentazione, la stima della posa e l'OBB in un quadro unificato.

Casi d'uso ideali

La scelta tra YOLOv7 e YOLOv10 dipende spesso dai vincoli specifici dell'ambiente di distribuzione.

  • Utilizzare YOLOv7 se: Si lavora su un progetto legacy che integra già l'architettura v7, oppure se si richiedono varianti specifiche ad alta risoluzione (come YOLOv7) per il rilevamento di piccoli oggetti in immagini di grandi dimensioni, dove la velocità di inferenza è secondaria alla precisione grezza.
  • Utilizzate YOLOv10 se: Si sta distribuendo su dispositivi edge con risorse limitate (Raspberry Pi, Jetson Nano, telefoni cellulari) o si richiede una latenza assolutamente minima per applicazioni come la guida autonoma o la robotica ad alta velocità. L'ingombro ridotto della memoria rende più conveniente l'esecuzione in ambienti cloud.

Il vantaggio di Ultralytics

Sia che si scelga YOLOv7 o YOLOv10, il loro utilizzo tramite l'APIPython Ultralytics offre vantaggi significativi rispetto all'uso del codice grezzo del repository. Ultralytics ha integrato questi modelli in un ecosistema unificato che privilegia la facilità d'uso, l'efficienza formativa e la versatilità.

Esperienza utente semplificata

L'addestramento di complessi modelli di deep learning richiedeva storicamente la gestione di intricati file di configurazione e dipendenze. Il framework Ultralytics standardizza questo processo. Gli sviluppatori possono passare da un'architettura all'altra (ad esempio, da YOLOv10n a YOLOv10s o addirittura a YOLO11) cambiando un singolo argomento di stringa, senza dover riscrivere i caricatori di dati o gli script di validazione.

Esempio di codice

L'esempio seguente mostra come caricare e prevedere questi modelli utilizzando il pacchetto Ultralytics . Si noti come l'API rimanga coerente indipendentemente dall'architettura del modello sottostante.

from ultralytics import YOLO

# Load a pre-trained YOLOv10 model (NMS-free)
model_v10 = YOLO("yolov10n.pt")

# Load a pre-trained YOLOv7 model
model_v7 = YOLO("yolov7.pt")

# Run inference on an image
# The API handles underlying differences automatically
results_v10 = model_v10("https://ultralytics.com/images/bus.jpg")
results_v7 = model_v7("https://ultralytics.com/images/bus.jpg")

# Print results
for result in results_v10:
    result.show()  # Display predictions

Ecosistema e protezione del futuro

Sebbene YOLOv7 e YOLOv10 siano potenti, l'ecosistema Ultralytics è in continua evoluzione. Il più recente YOLO11 si basa sulle lezioni apprese dalla v7 (aggregazione di funzionalità) e dalla v10 (efficienza).

  • Ben mantenuto: Aggiornamenti frequenti garantiscono la compatibilità con le ultime versioni di PyTorch, CUDA e i formati di esportazioneCoreML, ONNX, TensorRT).
  • Efficienza della memoria: I modelli Ultralytics sono progettati per ridurre al minimo l'utilizzo della VRAM GPU durante l'addestramento, consentendo l'utilizzo di batch di dimensioni maggiori su hardware consumer rispetto a molte alternative basate su Transformer (come RT-DETR).
  • Efficienza della formazione: Con iperparametri pre-tarati e una scansione "intelligente" dei set di dati, la convergenza dell'addestramento è spesso più rapida, con un risparmio sui costi di calcolo.

Per gli sviluppatori che iniziano oggi nuovi progetti, l'esplorazione di YOLO11 è altamente raccomandato in quanto offre un raffinato equilibrio tra la velocità vista in YOLOv10 e la robusta estrazione delle caratteristiche dei predecessori, oltre al supporto nativo per compiti che vanno oltre il semplice rilevamento, come la segmentazione delle istanze e la stima della posa.

Esplora altri modelli

Se siete interessati a ulteriori confronti o a diverse architetture, considerate queste risorse:


Commenti