YOLOv7 vs YOLOv10: Evoluzione architetturale e analisi delle prestazioni
L'evoluzione della famiglia YOLO (You Only Look Once) rappresenta una cronologia affascinante dei progressi nella computer vision, bilanciando l'eterno compromesso tra velocità di inferenza e accuratezza di detect. Questo confronto approfondisce due pietre miliari significative: YOLOv7, un modello robusto che ha stabilito nuovi benchmark nel 2022, e YOLOv10, un rilascio del 2024 che introduce un cambio di paradigma con l'addestramento NMS-free.
Sebbene entrambi i modelli siano scelte eccellenti per l'object detection, soddisfano diverse filosofie architetturali. YOLOv7 spinge i limiti dei "bag-of-freebies" addestrabili e dell'ottimizzazione del percorso del gradiente, mentre YOLOv10 si concentra sull'eliminazione dei colli di bottiglia di post-elaborazione per ottenere un'efficienza end-to-end in tempo reale.
YOLOv7: Ottimizzazione del percorso del gradiente
Rilasciato nel luglio 2022, YOLOv7 ha introdotto significativi cambiamenti architetturali incentrati sull'ottimizzazione del processo di addestramento senza aumentare i costi di inferenza. È diventato rapidamente uno dei preferiti per le attività di computer vision generiche grazie alla sua elevata precisione sul dataset COCO.
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 chiave
YOLOv7 ha introdotto la Extended Efficient Layer Aggregation Network (E-ELAN). Questa architettura consente al modello di apprendere caratteristiche più diversificate controllando i percorsi del gradiente più brevi e più lunghi, assicurando che la rete converga efficacemente durante l'addestramento.
Inoltre, YOLOv7 utilizza ampiamente "Bag-of-Freebies", ovvero metodi che migliorano l'accuratezza durante l'addestramento senza aumentare il costo dell'inferenza. Questi includono la riparametrizzazione del modello, in cui una struttura di addestramento complessa viene semplificata in una struttura di inferenza snella, riducendo la latenza pur mantenendo le prestazioni apprese.
YOLOv10: La fine di NMS
YOLOv10, rilasciato nel maggio 2024 dai ricercatori della Tsinghua University, affronta un collo di bottiglia di lunga data nel rilevamento di oggetti: la Non-Maximum Suppression (NMS). I modelli YOLO tradizionali prevedono più bounding box per un singolo oggetto e si affidano alla NMS per filtrare i duplicati. Questa fase di post-elaborazione aggiunge latenza, che varia a seconda del numero di oggetti nella scena.
Autori: Ao Wang, Hui Chen, Lihao Liu, et al.
Organizzazione: Tsinghua University
Data: 2024-05-23
ArXiv:YOLOv10: Real-Time End-to-End Object Detection
GitHub:THU-MIG/yolov10
Caratteristiche architettoniche chiave
YOLOv10 introduce una strategia di Assegnazione Duale Coerente. Durante l'addestramento, il modello utilizza sia un head one-to-many (per una supervisione ricca) sia un head one-to-one (per la previsione end-to-end). Durante l'inferenza, viene utilizzato solo l'head one-to-one, eliminando completamente la necessità di NMS. Ciò si traduce in un'inferenza prevedibile e a bassa latenza, rendendolo altamente adatto per le applicazioni di edge AI dove il tempo di elaborazione deve essere costante.
Confronto tecnico: Architettura e prestazioni
La distinzione principale tra questi modelli risiede nel loro approccio all'efficienza dell'inferenza. YOLOv7 si basa su una backbone (E-ELAN) altamente ottimizzata per estrarre le caratteristiche in modo efficiente, ma richiede comunque la tradizionale post-elaborazione. YOLOv10 modifica l'head di detection fondamentale per rimuovere i passaggi 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 un mAP più alto (52,7%) rispetto a YOLOv7l (51,4%) pur utilizzando un numero significativamente inferiore di parametri (24,4 M contro 36,9 M) e operazioni in virgola mobile (FLOP).
Comprensione della latenza
Le metriche di "Velocità" evidenziano l'impatto del design senza NMS di YOLOv10. Rimuovendo il passaggio NMS, YOLOv10 riduce il sovraccarico computazionale durante l'inferenza, il che è particolarmente vantaggioso su acceleratori hardware come TensorRT dove la post-elaborazione può altrimenti diventare un collo di bottiglia.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
| YOLOv10n | 640 | 39.5 | - | 1.56 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.7 | - | 2.66 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.3 | - | 5.48 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.7 | - | 6.54 | 24.4 | 92.0 |
| YOLOv10l | 640 | 53.3 | - | 8.33 | 29.5 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 12.2 | 56.9 | 160.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 alta risoluzione: Prestazioni eccellenti su input a risoluzione più alta (ad esempio, 1280 pixel) tramite varianti W6/E6 specifiche.
- Risorse della community: Esiste un grande volume di tutorial e implementazioni di terze parti grazie alla sua longevità.
Punti deboli di YOLOv7:
- Complessità: La riparametrizzazione e la struttura ausiliaria dell'head possono complicare la pipeline di addestramento rispetto ai moderni modelli Ultralytics.
- Dipendenza da NMS: La velocità di inferenza dipende parzialmente dalla densità della scena a causa di NMS.
Punti di forza di YOLOv10:
- Latenza minima: L'architettura senza NMS consente un'inferenza estremamente rapida, ideale per l'inferenza in tempo reale.
- Efficienza: Raggiunge una precisione all'avanguardia con meno parametri e un minore utilizzo di memoria.
- Facilità di implementazione: La rimozione del passaggio NMS semplifica il processo di esportazione in formati come ONNX e TensorRT.
Punti deboli di YOLOv10:
- Specificità dell'attività: focalizzato principalmente sul rilevamento di oggetti, mentre altri modelli nell'ecosistema Ultralytics (come YOLO11) supportano nativamente la segmentazione, la stima della posa e OBB in un framework unificato.
Casi d'uso ideali
La scelta tra YOLOv7 e YOLOv10 spesso dipende dai vincoli specifici dell'ambiente di implementazione.
- Usa YOLOv7 se: Stai lavorando a un progetto legacy che integra già l'architettura v7, oppure se hai bisogno di varianti specifiche ad alta risoluzione (come YOLOv7-w6) per la detection di piccoli oggetti in immagini di grandi dimensioni, dove la velocità di inferenza è secondaria rispetto alla precisione pura.
- Usa YOLOv10 se: stai eseguendo il deployment su dispositivi edge con risorse limitate (Raspberry Pi, Jetson Nano, telefoni cellulari) o hai bisogno di una latenza minima assoluta per applicazioni come la guida autonoma o la robotica ad alta velocità. L'impronta di memoria inferiore rende anche più economico l'esecuzione in ambienti cloud.
Il vantaggio di Ultralytics
Sia che si scelga YOLOv7 o YOLOv10, utilizzarli tramite la API Python di Ultralytics offre vantaggi significativi rispetto all'utilizzo del codice repository puro. Ultralytics ha integrato questi modelli in un ecosistema unificato che privilegia la facilità d'uso, l'efficienza di addestramento e la versatilità.
Esperienza utente semplificata
Storicamente, l'addestramento di modelli complessi di deep learning richiedeva la gestione di file di configurazione e dipendenze complessi. Il framework Ultralytics standardizza questo processo. Gli sviluppatori possono passare da un'architettura all'altra (ad esempio, da YOLOv10n a YOLOv10s o anche a YOLO11) modificando un singolo argomento stringa, senza riscrivere i data loader o gli script di convalida.
Esempio di codice
Il seguente esempio dimostra come caricare ed effettuare previsioni con 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 garanzia di durata nel tempo
Sebbene YOLOv7 e YOLOv10 siano potenti, l'ecosistema Ultralytics è in continua evoluzione. L'ultimo modello YOLO11 si basa sugli insegnamenti tratti sia da v7 (aggregazione delle funzionalità) che da v10 (efficienza).
- Ben manutenuto: Aggiornamenti frequenti garantiscono la compatibilità con le versioni più recenti di PyTorch, CUDA e formati di esportazione (CoreML, ONNX, TensorRT).
- Efficienza della memoria: I modelli Ultralytics sono progettati per ridurre al minimo l'utilizzo della VRAM della GPU durante l'addestramento, consentendo dimensioni dei batch maggiori su hardware consumer rispetto a molte alternative basate su Transformer (come RT-DETR).
- Efficienza di addestramento: Grazie agli iperparametri pre-ottimizzati e alla scansione "intelligente" del set di dati, la convergenza dell'addestramento è spesso più rapida, con conseguente risparmio sui costi di calcolo.
Per gli sviluppatori che iniziano nuovi progetti oggi, si consiglia vivamente di esplorare YOLO11, poiché offre un equilibrio raffinato tra la velocità di YOLOv10 e la solida estrazione di funzionalità dei predecessori, insieme al supporto nativo per attività che vanno oltre la semplice detection, come la segmentation delle istanze e la stima della posa.
Esplora altri modelli
Se sei interessato ad ulteriori confronti o architetture diverse, considera queste risorse:
- YOLO11 vs YOLOv8 - Confronta i modelli all'avanguardia più recenti.
- RT-DETR vs YOLOv10 - Rilevamento basato su Transformer vs. efficienza basata su CNN.
- YOLOv9 contro YOLOv10 - Esaminando le informazioni sul gradiente programmabile (PGI) rispetto ai design senza NMS.