YOLOv5 vs EfficientDet#
Quando inizi un nuovo progetto di visione artificiale, scegliere la giusta architettura di rete neurale è una delle decisioni più importanti che prenderai. Questa guida fornisce un confronto tecnico approfondito tra Ultralytics YOLOv5 e EfficientDet di Google. Analizzandone le architetture, le metriche di prestazione e gli ecosistemi di addestramento, puntiamo ad aiutare sviluppatori e ricercatori a individuare il miglior modello di rilevamento degli oggetti per i propri specifici ambienti di distribuzione.
Sebbene EfficientDet abbia introdotto concetti innovativi nel ridimensionamento composto e nella fusione delle caratteristiche, YOLOv5 ha rivoluzionato il settore democratizzando l'accesso all'AI ad alte prestazioni grazie alla sua implementazione PyTorch estremamente intuitiva, all'esperienza utente ottimizzata e all'ineguagliabile equilibrio tra velocità e accuratezza.
Ultralytics YOLOv5: lo standard del settore per l'accessibilità#
Rilasciato nell'estate del 2020, YOLOv5 ha segnato una svolta fondamentale nella linea evolutiva di YOLO. Passando dal framework Darknet basato su C a PyTorch nativo, è diventato l'architettura di riferimento per gli sviluppatori che desiderano creare, addestrare e distribuire rapidamente i modelli.
- Autori: Glenn Jocher
- Organizzazione: Ultralytics
- Data: 2020-06-26
- GitHub: https://github.com/ultralytics/yolov5
- Documentazione: https://docs.ultralytics.com/models/yolov5
Innovazioni architetturali#
YOLOv5 è apprezzato per la sua architettura altamente ottimizzata, che dà priorità a un ciclo di vita fluido del machine learning. Utilizza un backbone CSPDarknet53 modificato abbinato a una rete di aggregazione dei percorsi (PANet), che migliora drasticamente la propagazione delle caratteristiche su più scale spaziali.
I principali progressi includono:
- Data augmentation Mosaic: questa tecnica di addestramento combina quattro immagini di addestramento distinte in un singolo mosaico. In questo modo costringe il modello a imparare a identificare gli oggetti in contesti spaziali complessi e potenzia significativamente la sua capacità di rilevare obiettivi di piccole dimensioni.
- Anchor box con apprendimento automatico: prima dell'inizio dell'addestramento, YOLOv5 analizza i tuoi dati di addestramento personalizzati e calcola automaticamente le dimensioni ottimali delle anchor box utilizzando il clustering k-means.
- Efficienza della memoria: rispetto ai pesanti modelli basati su Transformer, YOLOv5 mantiene un'occupazione di memoria significativamente inferiore sia durante l'addestramento sia durante l'inferenza, consentendo un funzionamento fluido su hardware di livello consumer.
EfficientDet: rilevamento degli oggetti scalabile#
Introdotto da Google Research nel 2019, EfficientDet mirava a fornire una famiglia di rilevatori di oggetti scalabili. Si basa sul backbone di classificazione delle immagini EfficientNet e introduce un innovativo meccanismo di fusione delle caratteristiche.
- Autori: Mingxing Tan, Ruoming Pang e Quoc V. Le
- Organizzazione: Google
- Data: 2019-11-20
- Arxiv: https://arxiv.org/abs/1911.09070
- GitHub: https://github.com/google/automl/tree/master/efficientdet
- Documentazione: https://github.com/google/automl/tree/master/efficientdet#readme
Innovazioni architetturali#
La proposta principale di EfficientDet risiede nel suo approccio sistematico al ridimensionamento e all'aggregazione delle caratteristiche:
- BiFPN (rete piramidale delle caratteristiche bidirezionale): a differenza delle FPN tradizionali, che trasmettono le informazioni solo dall'alto verso il basso, BiFPN consente una fusione rapida e semplice delle caratteristiche a più scale introducendo pesi apprendibili per imparare l'importanza delle diverse caratteristiche di input.
- Ridimensionamento composto: EfficientDet ridimensiona congiuntamente risoluzione, profondità e larghezza di tutte le reti del backbone, delle caratteristiche e della predizione di box/classi, ottenendo modelli che vanno dal leggero D0 all'imponente D7.
Mentre EfficientDet dipende fortemente dall'ecosistema TensorFlow e dalle librerie AutoML, YOLOv5 opera nativamente all'interno di PyTorch, offrendo quello che molti sviluppatori considerano un workflow più intuitivo, idiomatico per Python e facile da sottoporre a debug.
Confronto di prestazioni e metriche#
Quando confronti questi modelli, è fondamentale valutarne le prestazioni su benchmark standard come il dataset COCO. La tabella seguente evidenzia i compromessi tra dimensioni, richiesta computazionale (FLOPs) e velocità di inferenza.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv5n | 640 | 28.0 | 73.6 | 1.12 | 2.6 | 7.7 |
| YOLOv5s | 640 | 37.4 | 120.7 | 1.92 | 9.1 | 24.0 |
| YOLOv5m | 640 | 45.4 | 233.9 | 4.03 | 25.1 | 64.2 |
| YOLOv5l | 640 | 49.0 | 408.4 | 6.61 | 53.2 | 135.0 |
| YOLOv5x | 640 | 50.7 | 763.2 | 11.89 | 97.2 | 246.4 |
| EfficientDet-d0 | 640 | 34.6 | 10.2 | 3.92 | 3.9 | 2.54 |
| EfficientDet-d1 | 640 | 40.5 | 13.5 | 7.31 | 6.6 | 6.1 |
| EfficientDet-d2 | 640 | 43.0 | 17.7 | 10.92 | 8.1 | 11.0 |
| EfficientDet-d3 | 640 | 47.5 | 28.0 | 19.59 | 12.0 | 24.9 |
| EfficientDet-d4 | 640 | 49.7 | 42.8 | 33.55 | 20.7 | 55.2 |
| EfficientDet-d5 | 640 | 51.5 | 72.5 | 67.86 | 33.7 | 130.0 |
| EfficientDet-d6 | 640 | 52.6 | 92.8 | 89.29 | 51.9 | 226.0 |
| EfficientDet-d7 | 640 | 53.7 | 122.0 | 128.07 | 51.9 | 325.0 |
Analisi equilibrata#
YOLOv5 eccelle nella flessibilità di distribuzione e nella compatibilità con l'accelerazione hardware nativa. Nota le velocità TensorRT elevatissime sulla GPU T4. Questo rende YOLOv5 estremamente adatto alle pipeline di analisi video ad alto throughput e di inferenza in tempo reale. Inoltre, l'ecosistema Ultralytics rende l'esportazione in formati come ONNX, CoreML e TensorRT un comando a riga singola.
EfficientDet offre un'eccellente efficienza parametrica. A parità di numero di parametri, spesso raggiunge un'elevata precisione media media (mAP). Tuttavia, questa efficienza teorica non si traduce sempre in tempi di inferenza più rapidi sull'orologio di sistema nelle GPU edge, a causa del complesso instradamento del livello BiFPN, che può essere vincolato dalla larghezza di banda della memoria anziché dalla capacità di calcolo.
Ecosistema e facilità d'uso#
Il vantaggio determinante della scelta di un modello Ultralytics risiede nell'ecosistema circostante. YOLOv5 fa parte di un repository sottoposto a manutenzione intensa e sviluppato attivamente, con un enorme supporto della community.
Con l'introduzione della Ultralytics Platform, puoi passare senza problemi dalla raccolta dei dati alla distribuzione. Questa piattaforma supporta annotazione automatica, addestramento sul cloud e monitoraggio dei modelli fin da subito. Al contrario, addestrare EfficientDet spesso richiede di affrontare la complessità delle API meno recenti di TensorFlow per il rilevamento degli oggetti, il che può comportare una curva di apprendimento ripida per la prototipazione rapida.
Inoltre, la versatilità di YOLOv5 va oltre i riquadri di delimitazione. Grazie ad aggiornamenti continui, il framework Ultralytics supporta nativamente la segmentazione delle istanze e la classificazione delle immagini, fornendo un'API unificata per molteplici attività di visione artificiale.
Casi d'uso ideali#
- Scegli YOLOv5 quando: ti servono prototipazione rapida, un'esperienza di addestramento senza attriti e una distribuzione edge altamente ottimizzata. È ideale per droni, analisi nel settore retail e applicazioni mobili in cui la bassa latenza è fondamentale.
- Scegli EfficientDet quando: operi esclusivamente in un ambiente Google Cloud/TensorFlow AutoML e richiedi la massima accuratezza per parametro senza vincoli stringenti sulla latenza in tempo reale.
La prossima generazione: abbracciare YOLO26#
Sebbene YOLOv5 rimanga un affidabile modello di riferimento, il panorama della visione artificiale si è evoluto. Per gli sviluppatori che cercano il massimo stato dell'arte nel 2026, YOLO26 rappresenta il nuovo vertice della linea Ultralytics.
Basandosi sull'eredità dei suoi predecessori, come YOLOv8 e YOLO11, YOLO26 introduce innovazioni rivoluzionarie:
- Design end-to-end senza NMS: YOLO26 elimina nativamente la necessità del post-processing di soppressione non massima. Questo riduce significativamente la variabilità della latenza e semplifica l'architettura di distribuzione.
- Inferenza su CPU fino al 43% più veloce: altamente ottimizzato per l'AI edge, offre velocità senza precedenti sui dispositivi edge a basso consumo e sulle CPU standard prive di GPU dedicate.
- Ottimizzatore MuSGD: ispirato alle tecniche di addestramento dei modelli linguistici di grandi dimensioni (LLM), questo ibrido di SGD e Muon garantisce un addestramento altamente stabile e una convergenza rapida.
- Funzioni di perdita avanzate: l'integrazione di ProgLoss e STAL migliora drasticamente il riconoscimento degli obiettivi di piccole dimensioni, un aspetto fondamentale per le immagini acquisite da droni ad alta quota e la robotica.
- Rimozione di DFL: eliminando Distribution Focal Loss, il processo di esportazione del modello viene semplificato, migliorando ulteriormente la compatibilità con diversi acceleratori hardware.
Gli utenti interessati a esplorare altre architetture recenti nell'ecosistema Ultralytics possono anche confrontare modelli come YOLOv10 o RT-DETR.
L'API Python di Ultralytics è progettata per la compatibilità con le versioni precedenti e successive. Passare da YOLOv5 a YOLO26 è letteralmente semplice quanto modificare la stringa dei pesi del modello nel tuo codice!
Esempio di codice: addestramento e inferenza#
Per dimostrare la facilità d'uso senza pari dell'ecosistema Ultralytics, ecco come puoi addestrare ed eseguire l'inferenza utilizzando un moderno modello YOLO. Questo codice è eseguibile al 100% e gestisce automaticamente il download del dataset, i cicli di addestramento e la validazione.
from ultralytics import YOLO
# Load a modern model (Swap 'yolov5s.pt' for 'yolo26n.pt' to test the newest architecture!)
model = YOLO("yolov5s.pt")
# Train the model on the COCO8 example dataset for 20 epochs
results = model.train(data="coco8.yaml", epochs=20, imgsz=640)
# Run inference on an image from the web
inference_results = model("https://ultralytics.com/images/bus.jpg")
# Display the image with bounding boxes
inference_results[0].show()Dando priorità all'esperienza utente, mantenendo un ecosistema solido e ampliando continuamente i confini di ciò che è possibile grazie ad aggiornamenti come YOLO26, Ultralytics garantisce agli sviluppatori gli strumenti migliori sempre disponibili per affrontare le sfide dell'intelligenza visiva nel mondo reale.