YOLOv10 vs YOLOv7#
I rapidi progressi della computer vision negli ultimi anni hanno prodotto architetture sempre più efficienti per le applicazioni in tempo reale. Il confronto tra YOLOv10 e YOLOv7 evidenzia una fase cruciale di questa evoluzione. YOLOv7 ha introdotto strategie di addestramento molto efficaci e il ridimensionamento architetturale, mentre YOLOv10 ha semplificato il deployment eliminando la consolidata dipendenza dalla soppressione dei massimi non locali (NMS).
Al momento del loro rilascio, entrambi i modelli hanno ampliato i limiti del rilevamento degli oggetti, mentre oggi l'ecosistema Ultralytics e i modelli più recenti come YOLO26 offrono flussi di lavoro di addestramento e deployment più semplici.
Profili e origini dei modelli#
Comprendere le origini di questi modelli fornisce un contesto prezioso sulle scelte di progettazione architetturale e sulla ricerca accademica che li ha guidati.
Dettagli su YOLOv10#
- Autori: Ao Wang, Hui Chen, Lihao Liu, et al.
- Organizzazione: Università Tsinghua
- Data: 2024-05-23
- arXiv: YOLOv10: rilevamento di oggetti end-to-end in tempo reale
- GitHub: THU-MIG/yolov10
- Documentazione: Documentazione di Ultralytics YOLOv10
Dettagli su YOLOv7#
- Autori: Chien-Yao Wang, Alexey Bochkovskiy e Hong-Yuan Mark Liao
- Organizzazione: Institute of Information Science, Academia Sinica, Taiwan
- Data: 2022-07-06
- arXiv: YOLOv7: il bag-of-freebies addestrabile stabilisce un nuovo stato dell'arte
- GitHub: WongKinYiu/yolov7
- Documentazione: Documentazione di Ultralytics YOLOv7
Innovazioni architetturali#
L'approccio di YOLOv7#
Rilasciato nel 2022, YOLOv7 si concentrava soprattutto sull'ottimizzazione dei percorsi del gradiente. Ha introdotto Extended Efficient Layer Aggregation Network (E-ELAN), che consentiva al modello di apprendere caratteristiche più diverse senza compromettere il percorso originale del gradiente. Gli autori hanno inoltre adottato una metodologia del "bag-of-freebies addestrabile", che usa tecniche di riparametrizzazione durante l'addestramento, eliminabili durante l'inferenza per mantenere velocità di esecuzione elevate. Nonostante queste ottimizzazioni, YOLOv7 si affidava ancora a NMS per il post-processing, causando una latenza variabile nell'analisi di scene dense.
L'approccio di YOLOv10#
YOLOv10 ha affrontato direttamente il collo di bottiglia di NMS. Introducendo assegnazioni duali coerenti durante l'addestramento, il team della Tsinghua University ha reso possibile il rilevamento end-to-end senza NMS. Questo approccio a doppia testa usa un ramo con assegnazioni uno-a-molti per fornire segnali di supervisione ricchi durante l'addestramento e un altro ramo con assegnazioni uno-a-uno per l'inferenza senza NMS. Questo cambiamento architetturale offre una latenza d'inferenza costante e ridotta, adatta all'analisi video ad alta velocità. Inoltre, YOLOv10 adotta un design olistico del modello, guidato da efficienza e precisione, eliminando la ridondanza computazionale delle generazioni precedenti.
Eliminare il post-processing NMS accelera l'inferenza e semplifica il deployment su hardware edge per l'IA, come gli acceleratori IA e le NPU, sui quali può essere difficile compilare operazioni NMS personalizzate.
Confronto delle prestazioni#
Confrontando le metriche grezze sul dataset MS COCO, il divario generazionale diventa evidente. YOLOv10 offre un compromesso molto più favorevole tra parametri, requisiti computazionali e accuratezza.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv10n | 640 | 38.5 | - | 1.84 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.3 | - | 2.49 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.1 | - | 4.74 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.5 | - | 5.74 | 19.1 | 92.0 |
| YOLOv10l | 640 | 53.2 | - | 7.28 | 24.4 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 10.70 | 29.5 | 160.4 |
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
Come mostrato sopra, YOLOv10x raggiunge un mAP superiore a YOLOv7x (54,4% contro 53,1%) usando meno della metà dei parametri (29,5M contro 71,3M). Anche i modelli leggeri YOLOv10 Nano e Small offrono velocità di deployment TensorRT elevate (1,84 ms e 2,49 ms su T4), risultando interessanti per il deployment edge.
I vantaggi dell’ecosistema Ultralytics#
Studiare gli articoli sulle architetture è utile, ma lo sviluppo moderno della computer vision si affida a framework ben mantenuti. Scegliere un modello supportato da Ultralytics è un grande vantaggio per gli sviluppatori che vogliono passare rapidamente dal prototipo alla produzione.
Sviluppo semplificato#
YOLOv10 è supportato nativamente dal pacchetto Python standard di Ultralytics, mentre i checkpoint di YOLOv7 addestrati a monte possono essere eseguiti in Ultralytics solo dopo l'esportazione in ONNX o TensorRT. Il supporto nativo garantisce facilità d'uso, sostituendo il codice boilerplate con un'API semplice e intuitiva. Durante l'addestramento, i modelli Ultralytics YOLO richiedono anche meno memoria CUDA rispetto alle pesanti architetture Transformer, consentendo batch più grandi su hardware di fascia consumer.
Versatilità#
Mentre i repository più datati si concentrano spesso esclusivamente sul rilevamento delle bounding box, il framework Ultralytics supporta un'ampia gamma di attività con modelli come YOLO26 e YOLO11. Che tu esegua il rilevamento di segmentazione di istanze, la stima della posa o il rilevamento di bounding box orientate (OBB), il flusso di lavoro rimane invariato.
Esempio di codice: flussi di lavoro di training coerenti#
Il frammento di codice seguente mostra il processo di addestramento, che gestisce automaticamente la data augmentation e la pianificazione del tasso di apprendimento:
from ultralytics import YOLO
# Carica il modello desiderato (ad es. YOLOv10 o YOLO26, consigliato)
model = YOLO("yolo26n.pt")
# Addestra il modello sul tuo dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, batch=16, device=0)
# Esporta in formato ONNX per una distribuzione rapida
model.export(format="onnx")Casi d'uso e consigli#
La scelta tra YOLOv10 e YOLOv7 dipende dai requisiti specifici del progetto, dai vincoli di distribuzione e dalle preferenze relative all'ecosistema.
Quando scegliere YOLOv10#
YOLOv10 è una scelta valida per:
- Rilevamento in tempo reale senza NMS: applicazioni che traggono vantaggio dal rilevamento end-to-end senza soppressione non massima, riducendo la complessità della distribuzione.
- Compromesso equilibrato tra velocità e precisione: progetti che richiedono un buon equilibrio tra velocità di inferenza e precisione di rilevamento con modelli di diverse dimensioni.
- Applicazioni con latenza costante: scenari di distribuzione in cui i tempi di inferenza prevedibili sono fondamentali, ad esempio nella robotica o nei sistemi autonomi.
Quando scegliere YOLOv7#
YOLOv7 è consigliato per:
- Benchmark accademici: riprodurre i risultati dello stato dell'arte del 2022 o studiare gli effetti di E-ELAN e delle tecniche del bagaglio di tecniche gratuite addestrabile.
- Ricerca sulla riparametrizzazione: esaminare convoluzioni riparametrizzate pianificate e strategie di scalabilità composta dei modelli.
- Pipeline personalizzate esistenti: progetti con pipeline ampiamente personalizzate e basate sull'architettura specifica di YOLOv7, difficili da ristrutturare.
Quando scegliere Ultralytics (YOLO26)#
Per la maggior parte dei nuovi progetti, Ultralytics YOLO26 offre la combinazione migliore di prestazioni ed esperienza per gli sviluppatori:
- Distribuzione edge senza NMS: applicazioni che richiedono inferenza costante a bassa latenza senza la complessità della post-elaborazione con soppressione non massima.
- Ambienti solo CPU: dispositivi senza accelerazione GPU dedicata, sui quali YOLO26n è fino al 43% più veloce di YOLO11n su CPU.
- Rilevamento di oggetti piccoli: scenari impegnativi come le immagini aeree da droni o l'analisi dei sensori IoT, in cui ProgLoss e STAL migliorano la precisione sugli oggetti minuscoli.
Il nuovo standard: ecco YOLO26#
YOLOv10 ha rappresentato un grande passo avanti nel 2024, ma il settore evolve rapidamente. Per i nuovi sviluppi, Ultralytics consiglia il modello di ultima generazione, Ultralytics YOLO26. Rilasciato a gennaio 2026, supera YOLOv7 e YOLOv10 per l'IA visiva in tempo reale.
YOLO26 offre diversi miglioramenti pensati per gli ambienti di deployment moderni:
- Design end-to-end senza NMS: basandosi sulle fondamenta gettate da YOLOv10, la testa uno-a-uno opzionale di YOLO26 (
nms=False) salta il post-processing NMS, semplificando le pipeline di deployment e rendendo costante la velocità d'inferenza. - Inferenza CPU fino al 43% più veloce: YOLO26n è fino al 43% più veloce di YOLO11n su CPU, risultando adatto all'edge computing e ai dispositivi senza GPU dedicate; può inoltre ridurre i costi hardware.
- Rimozione di DFL: eliminare Distribution Focal Loss (DFL) semplifica la logica di esportazione e migliora la compatibilità con i dispositivi edge a basso consumo.
- Ottimizzatore MuSGD: ispirato a Kimi K2 di Moonshot AI, questo ibrido di SGD e Muon porta nella computer vision le tecniche di addestramento dei modelli linguistici di grandi dimensioni (LLM), favorendo un addestramento più stabile e una convergenza più rapida.
- ProgLoss + STAL: una loss progressiva e una strategia di assegnazione delle etichette consapevole degli oggetti piccoli migliorano il riconoscimento degli oggetti di piccole dimensioni, un ambito storicamente impegnativo e fondamentale per droni, robotica e monitoraggio delle smart city.
- Miglioramenti specifici per attività: YOLO26 non è solo un rilevatore. Integra una loss di segmentazione semantica che migliora la convergenza della segmentazione di istanze, la stima del log-verosimiglianza residuo (RLE) per una stima della posa più accurata e una loss angolare specializzata che risolve i problemi ai bordi delle OBB.
Per gestire i dataset, addestrare YOLO26 e distribuire i modelli nel cloud, esplora Ultralytics Platform. La sua interfaccia no-code completa il pacchetto Python.
Casi d’uso nel mondo reale#
La scelta dell'architettura giusta dipende in larga misura dai vincoli dell'hardware e dell'applicazione.
Quando usare YOLOv7#
YOLOv7 resta una scelta affidabile per mantenere pipeline legacy già integrate a fondo con le sue specifiche strutture tensoriali o per replicare benchmark accademici del 2022 e 2023. Offre buone prestazioni sulle GPU server di fascia alta.
Quando usare YOLOv10#
YOLOv10 è adatto agli scenari che richiedono una latenza costante. Poiché la sua testa senza NMS evita il post-processing che aumenta con il numero di rilevamenti, funziona bene nel conteggio di folle dense o nel rilevamento dei difetti di produzione, dove il numero di oggetti varia ma il tempo di elaborazione per fotogramma deve restare stabile.
Quando usare YOLO26#
YOLO26 è la scelta consigliata per i nuovi progetti. Dall'installazione di sistemi di allarme di sicurezza su un Raspberry Pi all'analisi video su larga scala basata sul cloud, la maggiore velocità d'inferenza su CPU e il rilevamento migliorato degli oggetti piccoli gli conferiscono un chiaro vantaggio rispetto alle generazioni precedenti.
Per gli sviluppatori interessati ad architetture alternative, Ultralytics supporta anche rilevatori basati su Transformer come RT-DETR e modelli precedenti come Ultralytics YOLO11.