Vai al contenuto

YOLOv9 vs. YOLOv10: Un confronto tecnico per l'object detection

La scelta del modello di object detection giusto è una decisione critica per sviluppatori e ricercatori, che devono bilanciare la necessità di alta precisione con i vincoli dell'inference in tempo reale e delle risorse computazionali. Questa guida fornisce un confronto tecnico approfondito tra YOLOv9 e YOLOv10, due architetture all'avanguardia che hanno spinto i confini delle prestazioni della computer vision nel 2024.

Mentre YOLOv9 si concentra sulle innovazioni architetturali per risolvere i colli di bottiglia delle informazioni nel deep learning, YOLOv10 introduce un cambio di paradigma con un design NMS-free per una latenza minima. Entrambi i modelli sono completamente integrati nel pacchetto Python Ultralytics, consentendo agli utenti di addestrarli, convalidarli e distribuirli facilmente all'interno di un ecosistema unificato.

Metriche di performance e benchmark

I compromessi di performance tra questi due modelli sono distinti. YOLOv9 generalmente spinge i limiti della precisione media (mAP), in particolare con le sue varianti più grandi, rendendolo adatto per scenari in cui l'accuratezza è fondamentale. Al contrario, YOLOv10 è progettato per l'efficienza, riducendo significativamente la latenza di inferenza e il numero di parametri, il che è ideale per l'implementazione edge.

La tabella seguente illustra queste differenze utilizzando il dataset COCO. In particolare, YOLOv10n raggiunge velocità incredibili sulle GPU T4, mentre YOLOv9e domina in termini di accuratezza di detection.

Modellodimensione
(pixel)
mAPval
50-95
Velocità
CPU ONNX
(ms)
Velocità
T4 TensorRT10
(ms)
parametri
(M)
FLOPs
(B)
YOLOv9t64038.3-2.32.07.7
YOLOv9s64046.8-3.547.126.4
YOLOv9m64051.4-6.4320.076.3
YOLOv9c64053.0-7.1625.3102.1
YOLOv9e64055.6-16.7757.3189.0
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

YOLOv9: Risolvere il collo di bottiglia informativo

Rilasciato nel febbraio 2024, YOLOv9 affronta una sfida teorica fondamentale nelle reti neurali profonde: la perdita di informazioni man mano che i dati si propagano attraverso i livelli profondi. Questo modello è progettato per garantire che la rete conservi le caratteristiche essenziali necessarie per un rilevamento di oggetti accurato.

Dettagli tecnici:

Architettura: PGI e GELAN

YOLOv9 introduce due concetti rivoluzionari:

  1. Informazioni sul gradiente programmabile (PGI): Un framework di supervisione ausiliario che previene la perdita di informazioni durante l'addestramento. Assicura che vengano generati gradienti affidabili per l'aggiornamento dei pesi della rete, risolvendo i problemi di supervisione profonda riscontrati nelle architetture precedenti.
  2. Generalized Efficient Layer Aggregation Network (GELAN): Una nuova architettura che massimizza l'efficienza dei parametri. GELAN consente al modello di ottenere una maggiore accuratezza con meno parametri rispetto ai design convenzionali ottimizzando il modo in cui le caratteristiche vengono aggregate tra i livelli.

Punti di forza e debolezze

YOLOv9 eccelle nelle applicazioni in cui l'accuratezza è fondamentale. La sua capacità di preservare informazioni dettagliate sulle feature lo rende superiore per il detect di piccoli oggetti o per la navigazione in scene complesse. Tuttavia, questa sofisticazione comporta un compromesso in termini di complessità. Le aggiunte architetturali come PGI sono principalmente per il training, il che significa che possono essere rimosse durante l'inferenza, ma le risorse di training potrebbero essere superiori. Inoltre, pur essendo efficiente, la sua latenza è generalmente superiore rispetto ai design efficienti specializzati di YOLOv10.

Scopri di più su YOLOv9

YOLOv10: L'era del rilevamento senza NMS

YOLOv10, sviluppato da ricercatori dell'Università di Tsinghua e rilasciato a maggio 2024, dà priorità alla velocità in tempo reale e all'implementabilità end-to-end. La sua caratteristica distintiva è l'eliminazione della Non-Maximum Suppression (NMS), una fase di post-elaborazione che tradizionalmente rappresenta un collo di bottiglia per la latenza di inferenza.

Dettagli tecnici:

Architettura: Assegnazioni duali coerenti

L'innovazione principale di YOLOv10 è Consistent Dual Assignments durante l'addestramento. Il modello impiega una strategia di assegnazione uno-a-molti per una supervisione ricca durante l'addestramento, ma passa a un'assegnazione uno-a-uno per l'inferenza. Questa architettura consente al modello di prevedere direttamente il riquadro di delimitazione ottimale per ciascun oggetto, rendendo obsoleta la post-elaborazione NMS. Insieme a un Rank-Guided Block Design, YOLOv10 riduce la ridondanza e il sovraccarico computazionale (FLOP).

Punti di forza e debolezze

Il vantaggio principale di YOLOv10 è la bassa latenza. Rimuovendo NMS, la latenza di inferenza diventa deterministica e significativamente inferiore, il che è fondamentale per l'elaborazione video in tempo reale. Vanta anche un'eccellente efficienza dei parametri, come si vede nella tabella di confronto in cui i modelli YOLOv10 raggiungono un'accuratezza competitiva con meno FLOPs. Un potenziale punto debole è la sua introduzione relativamente recente rispetto agli ecosistemi consolidati, anche se l'integrazione in Ultralytics mitiga questo aspetto. È anche altamente specializzato per la detection, mentre altri modelli nell'ecosistema offrono un supporto multi-task più ampio.

Esportazione End-to-End

Poiché YOLOv10 è NMS-free per progettazione, esportarlo in formati come ONNX o TensorRT è spesso più semplice e produce modelli end-to-end "puri" senza richiedere complessi plugin di post-elaborazione.

Scopri di più su YOLOv10

Analisi comparativa per sviluppatori

Quando si integrano questi modelli nella produzione, entrano in gioco diversi fattori pratici oltre alle metriche grezze.

Facilità d'uso ed ecosistema

Entrambi i modelli traggono immensi vantaggi dall'essere parte dell'ecosistema Ultralytics. Ciò significa che gli sviluppatori possono passare da YOLOv9 a YOLOv10 semplicemente cambiando una stringa del modello, utilizzando le stesse pipeline di addestramento, gli strumenti di convalida e i formati di implementazione.

  • Efficienza di addestramento: I modelli Ultralytics in genere richiedono meno memoria rispetto ai detect basati su transformer, consentendo l'addestramento su GPU consumer standard.
  • Versatilità: Mentre YOLOv9 e YOLOv10 sono focalizzati sulla detection, l'API Ultralytics supporta altri task come instance segmentation e pose estimation attraverso modelli come YOLO11 e YOLOv8, offrendo un toolkit completo per diversi progetti di visione AI.

Casi d'uso ideali

  • Scegli YOLOv9 quando:

    • La tua applicazione richiede la massima accuratezza possibile (ad esempio, imaging medicale, rilevamento di difetti nella produzione).
    • Stai lavorando con oggetti difficili da detect dove la conservazione delle informazioni è cruciale.
    • La latenza è una preoccupazione secondaria rispetto alla precisione.
  • Scegli YOLOv10 quando:

    • La velocità è fondamentale. Applicazioni come la guida autonoma, la navigazione robotica o l'analisi video ad alto FPS traggono vantaggio dal design NMS-free.
    • Distribuzione su dispositivi edge (come NVIDIA Jetson o Raspberry Pi) dove le risorse CPU/GPU sono limitate.
    • Hai bisogno di un tempo di inferenza deterministico senza la variabilità introdotta dall'elaborazione NMS.

Esempio di codice: Esecuzione di entrambi i modelli

Grazie all'API unificata Ultralytics, confrontare questi modelli sui tuoi dati è semplice. Il seguente codice python dimostra come caricare ed eseguire l'inferenza con entrambe le architetture.

from ultralytics import YOLO

# Load a pre-trained YOLOv9 model
model_v9 = YOLO("yolov9c.pt")

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

# Run inference on an image
results_v9 = model_v9("path/to/image.jpg")
results_v10 = model_v10("path/to/image.jpg")

# Print results
print(f"YOLOv9 Detection: {len(results_v9[0].boxes)}")
print(f"YOLOv10 Detection: {len(results_v10[0].boxes)}")

Conclusione

Sia YOLOv9 che YOLOv10 rappresentano pietre miliari significative nella computer vision. YOLOv9 spinge i limiti teorici della conservazione delle caratteristiche e della precisione, rendendolo un punto di riferimento per la ricerca e le attività che richiedono elevata accuratezza. YOLOv10 ridefinisce l'efficienza rimuovendo il collo di bottiglia dell'NMS, offrendo una soluzione ottimizzata per le applicazioni in tempo reale.

Per gli utenti che cercano il miglior equilibrio assoluto tra accuratezza, velocità e ricchezza di funzionalità in diverse attività (tra cui segmentazione e classificazione), consigliamo anche di esplorare YOLO11. In quanto ultima iterazione di Ultralytics, YOLO11 affina i migliori attributi dei suoi predecessori in un pacchetto robusto e pronto per l'uso aziendale, adatto praticamente a qualsiasi applicazione di visione artificiale.

Esplora altri modelli

L'ecosistema Ultralytics è vasto. Se i requisiti del tuo progetto sono diversi, considera queste alternative:

  • YOLO11: L'ultimo modello all'avanguardia che offre prestazioni e versatilità superiori in Detection, Segmentation, Pose, OBB e Classificazione.
  • YOLOv8: Un modello molto popolare e stabile, noto per la sua ampia compatibilità e il supporto multi-task.
  • RT-DETR: Un detector basato su transformer che offre un'elevata accuratezza senza la necessità di NMS, fungendo da alternativa alle architetture YOLO per casi d'uso specifici.

Sfruttando la piattaforma Ultralytics, ottieni l'accesso a questa intera suite di modelli, assicurandoti di avere sempre lo strumento giusto per il lavoro.


Commenti