YOLOv5 vs EfficientDet#
Quando avvii un nuovo progetto di computer vision, scegliere l'architettura di rete neurale giusta è una delle decisioni più importanti che prenderai. Questa guida offre un confronto tecnico approfondito tra Ultralytics YOLOv5 ed EfficientDet di Google. Analizzandone le architetture, le metriche di prestazione e gli ecosistemi di addestramento, vogliamo aiutare sviluppatori e ricercatori a individuare il modello di rilevamento degli oggetti più adatto ai rispettivi ambienti di deployment.
EfficientDet ha introdotto concetti innovativi nel ridimensionamento composto e nella fusione delle caratteristiche, mentre YOLOv5 ha rivoluzionato il settore rendendo accessibile l'IA ad alte prestazioni grazie alla sua implementazione PyTorch estremamente intuitiva, all'esperienza utente fluida e all'ineguagliabile equilibrio tra velocità e accuratezza.
Ultralytics YOLOv5: lo standard di settore per l'accessibilità#
Rilasciato nell'estate del 2020, YOLOv5 ha segnato una svolta nella storia della famiglia 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.
- Autore: 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 del machine learning fluido. Utilizza un backbone CSPDarknet53 modificato abbinato a un neck Path Aggregation Network (PANet), che migliora notevolmente la propagazione delle caratteristiche tra più scale spaziali.
I principali progressi includono:
- Data augmentation Mosaic: Questa tecnica di addestramento combina quattro immagini distinte in un unico mosaico. In questo modo, il modello impara a identificare gli oggetti in contesti spaziali complessi e migliora notevolmente la capacità di rilevare oggetti piccoli.
- Apprendimento automatico delle anchor box: Prima dell'inizio dell'addestramento, YOLOv5 analizza i tuoi dati di addestramento personalizzati e calcola automaticamente le dimensioni ottimali delle anchor box usando il clustering k-means.
- Efficienza della memoria: Rispetto ai pesanti modelli basati su Transformer, YOLOv5 mantiene un consumo di memoria notevolmente inferiore sia durante l'addestramento sia durante l'inferenza, potendo così funzionare senza problemi su hardware di fascia consumer.
EfficientDet: rilevamento degli oggetti scalabile#
Introdotto da Google Research nel 2019, EfficientDet si proponeva di offrire una famiglia di rilevatori di oggetti scalabili. Si basa sul backbone EfficientNet per la classificazione delle immagini e introduce un nuovo 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 caratteristica centrale di EfficientDet è il suo approccio sistematico al ridimensionamento e all'aggregazione delle caratteristiche:
- BiFPN (rete piramidale di 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 su più scale, introducendo pesi apprendibili per determinare l'importanza delle diverse caratteristiche in ingresso.
- Ridimensionamento composto: EfficientDet ridimensiona congiuntamente risoluzione, profondità e larghezza del backbone, della rete delle caratteristiche e delle reti di previsione di riquadri e classi, ottenendo modelli che vanno dal leggero D0 al massiccio D7.
EfficientDet dipende fortemente dall'ecosistema TensorFlow e dalle librerie AutoML, mentre YOLOv5 opera nativamente in PyTorch e offre un flusso di lavoro che molti sviluppatori trovano più intuitivo, idiomatico per Python e facile da sottoporre a debug.
Confronto delle prestazioni e delle metriche#
Quando confronti questi modelli, è fondamentale valutarne le prestazioni su benchmark standard come il dataset COCO. La tabella seguente evidenzia i compromessi tra dimensioni, fabbisogno 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 | - | 1.12 | 1.9 | 4.5 |
| YOLOv5s | 640 | 37.4 | - | 1.92 | 7.2 | 16.5 |
| YOLOv5m | 640 | 45.4 | - | 4.03 | 21.2 | 49.0 |
| YOLOv5l | 640 | 49.0 | - | 6.61 | 46.5 | 109.1 |
| YOLOv5x | 640 | 50.7 | - | 11.89 | 86.7 | 205.7 |
| 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 si distingue per la flessibilità di deployment e la compatibilità con l'accelerazione hardware. Nota le velocità eccezionali di TensorRT sulla GPU T4. Questo rende YOLOv5 particolarmente adatto alle pipeline di analisi video ad alto throughput e di inferenza in tempo reale. Inoltre, l'ecosistema Ultralytics consente di esportare in formati come ONNX, CoreML e TensorRT con un solo comando.
EfficientDet offre un'eccellente efficienza in termini di parametri. A parità di numero di parametri, spesso raggiunge un'elevata precisione media (mAP). Tuttavia, questa efficienza teorica non sempre si traduce in tempi di inferenza reali più rapidi sulle GPU edge, a causa del complesso instradamento del livello BiFPN, che può essere limitato dalla larghezza di banda della memoria anziché dalla capacità di calcolo.
Ecosistema e facilità d’uso#
Il vantaggio decisivo di scegliere un modello Ultralytics risiede nell'ecosistema che lo circonda. YOLOv5 fa parte di un repository sottoposto a manutenzione intensiva, sviluppato attivamente e supportato da una vasta comunità.
Con l'introduzione della Piattaforma Ultralytics, gli utenti possono passare senza difficoltà dalla raccolta dei dati al deployment. La piattaforma supporta annotazione automatica, addestramento sul cloud e monitoraggio dei modelli fin da subito. Al contrario, l'addestramento di EfficientDet richiede spesso di affrontare le complessità delle vecchie API di TensorFlow per il rilevamento degli oggetti, con una curva di apprendimento che può essere ripida per chi vuole prototipare rapidamente.
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, offrendo un'API unificata per diverse attività di computer vision.
Casi d'uso ideali#
- Scegli YOLOv5 se: hai bisogno di prototipare rapidamente, di un'esperienza di addestramento senza complicazioni e di un deployment edge altamente ottimizzato. È ideale per i droni, l'analisi per il commercio al dettaglio e le applicazioni mobili in cui la bassa latenza è fondamentale.
- Scegli EfficientDet se: lavori esclusivamente in un ambiente Google Cloud/TensorFlow AutoML e hai bisogno della massima accuratezza per parametro, senza rigidi vincoli di latenza in tempo reale.
La nuova generazione: YOLO26#
YOLOv5 rimane un modello affidabile e collaudato, ma il panorama della computer vision è progredito. Per gli sviluppatori che nel 2026 puntano al massimo livello tecnologico, YOLO26 rappresenta il nuovo vertice della gamma Ultralytics.
Sulla scia dei suoi predecessori, come YOLOv8 e YOLO11, YOLO26 introduce innovazioni rivoluzionarie:
- Design end-to-end senza NMS: la testa opzionale one-to-one di YOLO26 (
nms=False) elimina la necessità della fase di post-elaborazione della soppressione dei massimi non locali. Questo riduce notevolmente la variabilità della latenza e semplifica l'architettura di deployment. - Inferenza CPU fino al 43% più veloce: ottimizzato a fondo per l'IA edge, offre velocità senza precedenti sui dispositivi edge a basso consumo e sulle CPU standard prive di GPU dedicata.
- Ottimizzatore MuSGD: ispirata alle tecniche di addestramento dei modelli linguistici di grandi dimensioni (LLM), questa combinazione di SGD e Muon garantisce un addestramento molto stabile e una convergenza rapida.
- Funzioni di perdita avanzate: l'integrazione di ProgLoss e STAL migliora notevolmente il riconoscimento degli oggetti piccoli, essenziale per le immagini riprese da droni ad alta quota e per la robotica.
- Rimozione di DFL: eliminando Distribution Focal Loss, il processo di esportazione del modello si semplifica e la compatibilità con diversi acceleratori hardware migliora ulteriormente.
Chi desidera esplorare altre architetture recenti dell'ecosistema Ultralytics può confrontare anche modelli come YOLOv10 o RT-DETR.
L'API Python di Ultralytics è progettata per garantire la compatibilità sia con le versioni precedenti sia con quelle future. Passare da YOLOv5 a YOLO26 è letteralmente semplice come cambiare la stringa dei pesi del modello nel codice!
Esempio di codice: addestramento e inferenza#
Per mostrare l'eccezionale facilità d'uso dell'ecosistema Ultralytics, ecco come addestrare un moderno modello YOLO ed eseguire inferenze. Questo codice è eseguibile al 100% e gestisce automaticamente il download del dataset, i cicli di addestramento e la convalida.
from ultralytics import YOLO
# Carica un modello moderno (sostituisci 'yolov5su.pt' con 'yolo26n.pt' per provare l'architettura più recente!)
model = YOLO("yolov5su.pt") # YOLOv5u: pesi YOLOv5 anchor-free per il pacchetto ultralytics
# Addestra il modello sul dataset di esempio COCO8 per 20 epoche
results = model.train(data="coco8.yaml", epochs=20, imgsz=640)
# Esegui l'inferenza su un'immagine dal web
inference_results = model("https://ultralytics.com/images/bus.jpg")
# Mostra l'immagine con i riquadri di delimitazione
inference_results[0].show()Dando priorità all'esperienza utente, mantenendo un ecosistema robusto e spingendo continuamente oltre i limiti del possibile con aggiornamenti come YOLO26, Ultralytics assicura agli sviluppatori gli strumenti migliori per affrontare le sfide concrete dell'intelligenza visiva.