EfficientDet vs. YOLOv5: Un confronto tecnico dettagliato
Il panorama dell'object detection si è evoluto rapidamente, spinto dalla costante necessità di bilanciare l'accuratezza con l'efficienza computazionale. Due architetture che hanno influenzato significativamente questo campo sono EfficientDet, sviluppato dal team di Google Brain, e YOLOv5, creato da Ultralytics. Mentre entrambi i modelli mirano a detectare oggetti all'interno delle immagini in modo efficiente, affrontano il problema con filosofie di progettazione e strategie architetturali fondamentalmente diverse.
Questa guida fornisce un confronto tecnico approfondito per aiutare sviluppatori, ricercatori e ingegneri a scegliere lo strumento giusto per le loro specifiche applicazioni di computer vision.
EfficientDet: Scalabile ed Efficiente
Rilasciato alla fine del 2019, EfficientDet è nato dall'obiettivo di ricerca di ottimizzare simultaneamente sia la precisione che l'efficienza. Ha introdotto il concetto di "Compound Scaling" per l'object detection, un metodo che scala uniformemente la risoluzione, la profondità e la larghezza della rete backbone.
- Autori: Mingxing Tan, Ruoming Pang e Quoc V. Le
- Organizzazione:Google Brain
- Data: 20 novembre 2019
- Arxiv:EfficientDet: Scalable and Efficient Object Detection
Punti salienti dell'architettura
EfficientDet si basa sul backbone EfficientNet e introduce una nuova rete di fusione di feature chiamata BiFPN (Bidirectional Feature Pyramid Network). A differenza delle tradizionali Feature Pyramid Networks (FPN) che limitano il flusso di informazioni a una modalità top-down, BiFPN consente un flusso di informazioni complesso e bidirezionale tra diversi livelli di risoluzione.
Il modello utilizza anche il Compound Scaling, che consente agli utenti di scegliere tra una famiglia di modelli (da D0 a D7) a seconda dei vincoli di risorse. Ciò garantisce che, se si dispone di più risorse di calcolo disponibili, è possibile aumentare linearmente le dimensioni del modello per ottenere una migliore accuratezza.
Punti di forza e debolezze
Il punto di forza principale di EfficientDet risiede nella sua efficienza teorica. Raggiunge punteggi mAP elevati con FLOPs (Floating Point Operations) notevolmente bassi. Questo lo rende un candidato interessante per la ricerca accademica in cui l'efficienza dei parametri è una metrica chiave.
Tuttavia, EfficientDet soffre di un inconveniente pratico: la latenza di inferenza. Le complesse connessioni nel BiFPN e l'uso massiccio di convoluzioni separabili in profondità (sebbene matematicamente efficienti) spesso non sono completamente ottimizzati sull'hardware GPU rispetto alle convoluzioni standard. Di conseguenza, nonostante i FLOP inferiori, EfficientDet può funzionare più lentamente sulle GPU rispetto ai modelli con costi computazionali teorici più elevati.
Ultralytics YOLOv5: Prestazioni e usabilità nel mondo reale
Ultralytics YOLOv5 ha rappresentato un cambio di paradigma quando è stato rilasciato nel 2020. A differenza dei suoi predecessori, è stato il primo modello YOLO implementato nativamente in PyTorch, rendendolo accessibile a un vasto ecosistema di sviluppatori. Ha dato la priorità alla "facilità di implementazione" insieme alle prestazioni pure.
- Autore: Glenn Jocher
- Organizzazione:Ultralytics
- Data: 26 giugno 2020
- GitHub:ultralytics/yolov5
Punti salienti dell'architettura
YOLOv5 impiega un backbone CSPDarknet, che ottimizza il flusso del gradiente e riduce il calcolo. Ha introdotto l'uso di Mosaic Augmentation durante il training, una tecnica che unisce quattro immagini, migliorando la capacità del modello di rilevare piccoli oggetti e riducendo la necessità di grandi dimensioni dei mini-batch.
L'architettura è progettata per la velocità. Utilizzando convoluzioni standard e una struttura della testa semplificata, YOLOv5 massimizza le capacità di elaborazione parallela delle moderne GPU, ottenendo una latenza di inferenza eccezionalmente bassa.
Il vantaggio dell'ecosistema Ultralytics
Uno dei vantaggi più significativi di YOLOv5 è l'ecosistema circostante. Ultralytics fornisce un flusso di lavoro continuo che include la generazione di auto-anchor, l'evoluzione degli iperparametri e il supporto nativo per l'esportazione in ONNX, TensorRT, CoreML e TFLite. Questo approccio "batterie incluse" riduce drasticamente il tempo che intercorre tra l'ideazione e la produzione.
Punti di forza e debolezze
YOLOv5 eccelle nell'inferenza in tempo reale e nella facilità d'uso. La sua semplice API e la solida documentazione consentono agli sviluppatori di addestrare modelli personalizzati sui propri dati in pochi minuti. Bilancia velocità e precisione in un modo ottimale per l'edge AI e le implementazioni cloud. Sebbene modelli più recenti come YOLO11 l'abbiano superato in termini di precisione, YOLOv5 rimane un cavallo di battaglia affidabile e standard del settore.
Metriche di performance: velocità vs. accuratezza
La tabella seguente confronta le prestazioni di EfficientDet e YOLOv5 sul dataset COCO val2017. Il punto chiave è la distinzione tra il costo teorico (FLOPs) e la velocità effettiva (latenza).
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| 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 |
Come illustrato, YOLOv5 domina nella latenza della GPU. Per esempio, YOLOv5s (37.4 mAP) viene eseguito a 1.92 ms su una GPU T4, mentre EfficientDet-d0 (34.6 mAP) impiega 3.92 ms—rendendo YOLOv5 approssimativamente 2x più veloce pur offrendo una maggiore accuratezza. Questa disparità si amplia con modelli più grandi; YOLOv5l (49.0 mAP) è quasi 5x più veloce rispetto al modello comparabile EfficientDet-d4 (49.7 mAP).
Al contrario, EfficientDet eccelle negli ambienti solo CPU dove i bassi FLOP spesso si traducono meglio in prestazioni, come si vede nelle velocità della CPU ONNX per le varianti D0 più piccole.
Casi d'uso ideali
La scelta tra questi modelli dipende dai tuoi vincoli specifici:
Quando scegliere EfficientDet
- Benchmarking Accademico: Quando l'obiettivo primario è dimostrare l'efficienza dei parametri o le leggi di ridimensionamento architetturale.
- Rigidi vincoli della CPU: Se l'implementazione è strettamente limitata a hardware CPU più datato dove i FLOP sono il collo di bottiglia assoluto, le varianti EfficientDet più piccole (D0-D1) offrono prestazioni competitive.
- Ricerca: Per lo studio di variazioni della feature pyramid network come BiFPN.
Quando scegliere Ultralytics YOLOv5
- Applicazioni in tempo reale: Essenziale per veicoli autonomi, robotica e videosorveglianza, dove la bassa latenza è imprescindibile.
- Deployment in produzione: L'ecosistema ben mantenuto e la facile esportazione verso engine come TensorRT e OpenVINO rendono YOLOv5 superiore per i prodotti commerciali.
- Efficienza di addestramento: I modelli YOLOv5 in genere si addestrano più velocemente e richiedono meno memoria rispetto alle architetture complesse come EfficientDet o i modelli basati su Transformer, riducendo i costi di calcolo nel cloud.
- Versatilità: Oltre alle semplici bounding box, il framework Ultralytics consente una transizione senza interruzioni ai task di segmentation e classification.
Esempio di codice: Semplicità di Ultralytics
Una delle caratteristiche distintive dei modelli Ultralytics è la Facilità d'uso. Mentre l'implementazione di EfficientDet spesso richiede complesse configurazioni TensorFlow o cloni di repository specifici, YOLOv5 può essere caricato ed eseguito con poche righe di codice python tramite PyTorch Hub.
import torch
# Load the YOLOv5s model from the official Ultralytics repository
model = torch.hub.load("ultralytics/yolov5", "yolov5s", pretrained=True)
# Define an image (URL or local path)
img = "https://ultralytics.com/images/zidane.jpg"
# Perform inference
results = model(img)
# Display results
results.print() # Print predictions to console
results.show() # Show image with bounding boxes
Conclusione e prospettive future
Mentre EfficientDet ha segnato una pietra miliare significativa nella computer vision dimostrando il valore dello scaling composto e della fusione efficiente delle feature, YOLOv5 ha rivoluzionato il settore rendendo la object detection ad alte prestazioni accessibile, veloce e implementabile.
Per gli sviluppatori che iniziano un nuovo progetto oggi, consigliamo di esaminare gli ultimi progressi nella linea Ultralytics. YOLO11 si basa sulle solide fondamenta di YOLOv5, offrendo:
- Ancora più elevati Accuratezza e Velocità.
- Supporto nativo per Pose Estimation, Instance Segmentation e OBB.
- Un pacchetto python unificato
ultralyticsche semplifica l'intero ciclo di vita MLOps.
Per ulteriori informazioni su come i modelli Ultralytics si confrontano con altre architetture, esplora i nostri confronti con YOLOv8 e RT-DETR.