Vai al contenuto

YOLOv9 . YOLOv5: Evoluzione architettonica ed eredità nel rilevamento degli oggetti

L'evoluzione della famiglia YOLO You Only Look Once) rappresenta un'affascinante cronologia dei progressi compiuti nel campo della visione artificiale. YOLOv5, rilasciato da Ultralytics 2020, ha stabilito un nuovo standard in termini di facilità d'uso e prontezza di produzione, diventando il framework di riferimento per gli sviluppatori di tutto il mondo. YOLOv9, rilasciato nel 2024 dai ricercatori dell'Accademia Sinica, amplia i confini dell'architettura teorica con concetti come il Programmable Gradient Information (PGI).

Questo confronto esplora come l'affidabilità collaudata sul campo di YOLOv5 con le innovazioni architetturali di YOLOv9, aiutandoti a decidere quale modello si adatta alle tue specifiche esigenze di visione artificiale.

Confronto delle metriche di performance

La tabella seguente mette a confronto i due modelli in base a varie dimensioni. Si noti che, mentre YOLOv9 una maggiore accuratezza teorica (mAP), YOLOv5 competitivo in termini di velocità ed efficienza delle risorse, in particolare per le implementazioni legacy.

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
YOLOv5n64028.073.61.122.67.7
YOLOv5s64037.4120.71.929.124.0
YOLOv5m64045.4233.94.0325.164.2
YOLOv5l64049.0408.46.6153.2135.0
YOLOv5x64050.7763.211.8997.2246.4

YOLOv5: lo standard per l'IA di produzione

Dal suo rilascio nel 2020 da parte di Ultralytics, YOLOv5 è diventato sinonimo di implementazione pratica dell'IA. Non si trattava solo di un'architettura di modello, ma di un cambiamento completo dell'ecosistema. Prima di YOLOv5, l'addestramento dei modelli di rilevamento degli oggetti richiedeva spesso file di configurazione complessi e framework fragili basati su C. YOLOv5 PyTorch nativa PyTorch che ha reso l'addestramento semplice come un singolo comando.

Scopri di più su YOLOv5

Punti di Forza Chiave di YOLOv5

  1. Facilità d'uso senza pari: il segno distintivo dei Ultralytics è l'esperienza utente. YOLOv5 un flusso di lavoro senza soluzione di continuità, dalla preparazione del set di dati alla distribuzione.
  2. Ampio supporto di piattaforme: offre supporto nativo per l'esportazione in CoreML, TFLitee ONNX, rendendolo incredibilmente versatile per applicazioni mobili e edge.
  3. Basso consumo di risorse: a differenza delle architetture che richiedono un uso intensivo di trasformatori e una grande quantità GPU , YOLOv5 altamente efficiente e consente l'addestramento su hardware consumer o persino su notebook cloud gratuiti come Google .
  4. Stabilità: grazie ad anni di manutenzione attiva, i casi limite sono stati risolti, garantendo una piattaforma stabile per applicazioni mission-critical nella produzione intelligente e nella sicurezza.

Esempio di facilità d'uso

L'esecuzione dell'inferenza con YOLOv5 o qualsiasi Ultralytics ) è standardizzata e semplice:

from ultralytics import YOLO

# Load a pretrained YOLOv5s model
model = YOLO("yolov5s.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")

# Show results
results[0].show()

YOLOv9: innovazione architettonica con PGI

Rilasciato all'inizio del 2024, YOLOv9 si concentra sulla risoluzione del problema del collo di bottiglia delle informazioni nelle reti neurali profonde. Man mano che le reti diventano più profonde, le informazioni critiche sulle caratteristiche possono andare perse durante il processo di feed-forward. YOLOv9 questo problema con le informazioni sul gradiente programmabile (PGI) e la rete di aggregazione dei livelli efficiente generalizzata (GELAN).

Scopri di più su YOLOv9

Innovazioni Architetturali

  • Architettura GELAN: questa nuova architettura combina il meglio di CSPNet (utilizzata in YOLOv5) ed ELAN (utilizzata in YOLOv7) per massimizzare l'efficienza dei parametri. Consente al modello di raggiungere una maggiore precisione con un numero inferiore di parametri rispetto alle architetture precedenti.
  • Informazioni sul gradiente programmabile (PGI): il PGI genera gradienti affidabili attraverso un ramo ausiliario utilizzato solo durante l'addestramento. Ciò garantisce che gli strati profondi conservino le informazioni semantiche senza aggiungere costi di inferenza, migliorando le prestazioni in compiti difficili come il rilevamento di oggetti di piccole dimensioni.

Analisi comparativa: quando utilizzare quale?

La scelta tra questi due modelli dipende dalla tua priorità: velocità di implementazione o massima precisione.

1. Efficienza della formazione ed ecosistema

YOLOv5 vince in termini di maturità dell'ecosistema. È integrato in migliaia di strumenti di terze parti e gode di un enorme supporto da parte della comunità. Se avete bisogno di implementare un modello oggi con il minimo attrito, YOLOv5 o il più recente YOLO11) è spesso la scelta più sicura.

YOLOv9 è completamente supportato Ultralytics , il che significa che gli utenti possono sfruttare le stesse pipeline di formazione semplificate. Tuttavia, la sua architettura complessa (rami ausiliari) può talvolta renderlo più lento da addestrare e leggermente più intensivo in termini di memoria rispetto allo snello YOLOv5.

2. Implementazione periferica vs. Precisione del server

Per attività che richiedono una precisione assoluta, come l'analisi offline di immagini mediche o ispezioni industriali ad alta precisione, YOLOv9e supera significativamente YOLOv5x, offrendo un mAP del +5% mAP .

Tuttavia, per dispositivi edge come Raspberry Pi o NVIDIA , YOLOv5 rimane uno dei preferiti. La sua architettura più semplice si traduce bene nella quantizzazione int8 e spesso produce velocità di inferenza più elevate su hardware limitato, anche se modelli più recenti come YOLO26 lo stanno rapidamente sostituendo in questa nicchia.

3. Versatilità dei Compiti

Entrambi i modelli sono versatili, ma Ultralytics garantisce che supportino un'ampia gamma di attività oltre alla semplice rilevazione:

Il Futuro: YOLO26

Sebbene YOLOv5 YOLOv9 modelli eccellenti, il settore è in rapida evoluzione. Gli sviluppatori alla ricerca della tecnologia più avanzata dovrebbero prendere in considerazione YOLO26.

Rilasciato nel gennaio 2026, YOLO26 rappresenta il culmine di questi progressi architettonici. Adotta un design End-to-End NMS, reso popolare per la prima volta da YOLOv10, che elimina completamente la fase di soppressione non massima, caratterizzata da un'elevata latenza. Inoltre, è dotato dell'ottimizzatore MuSGD, un ibrido tra SGD Muon, che garantisce una convergenza più rapida e una maggiore stabilità.

Grazie a miglioramenti quali ProgLoss + STAL per il rilevamento di oggetti di piccole dimensioni e alla rimozione della Distribution Focal Loss (DFL) per un'esportazione più semplice, YOLO26 offre CPU fino al 43% più veloce rispetto alle generazioni precedenti, rendendolo la scelta ideale sia per la ricerca che per la produzione.

Scopri di più su YOLO26

Conclusione

  • Scegli YOLOv5 se hai bisogno di un modello leggero e collaudato per sistemi legacy o con risorse estremamente limitate, dove potrebbe mancare il supporto per operatori più recenti (come quelli in YOLOv9).
  • Scegli YOLOv9 se hai bisogno di un'elevata precisione su set di dati complessi e puoi permetterti costi di formazione leggermente più elevati.
  • Scegli YOLO26 per avere il meglio di tutto: velocità NMS, precisione di alto livello e funzionalità di nuova generazione come l'ottimizzatore MuSGD.

Per iniziare a utilizzare uno qualsiasi di questi modelli, è possibile utilizzare la Ultralytics per gestire i propri set di dati, eseguire il training nel cloud e implementare senza sforzo.

Introduzione

È possibile addestrare qualsiasi di questi modelli utilizzando ilPython Ultralytics . È sufficiente modificare il nome del modello nello script:

from ultralytics import YOLO

# Switch between models easily
model = YOLO("yolov5su.pt")  # YOLOv5
# model = YOLO("yolov9c.pt") # YOLOv9
# model = YOLO("yolo26n.pt") # YOLO26

# Train on your data
model.train(data="coco8.yaml", epochs=100)

Commenti