YOLOv10 vs YOLOv7#
La rapida evoluzione della visione artificiale negli ultimi anni ha prodotto architetture sempre più efficienti per le applicazioni in tempo reale. Il confronto tra YOLOv10 e YOLOv7 mette in luce una fase di transizione cruciale di questa evoluzione. YOLOv7 ha introdotto strategie di training e scalabilità architetturale molto efficaci, mentre YOLOv10 ha rivoluzionato la distribuzione eliminando la dipendenza di lunga data dalla soppressione dei massimi non locali (NMS).
Al momento del loro rilascio, entrambi i modelli hanno ampliato i confini del rilevamento di oggetti, ma il moderno ecosistema Ultralytics e l'introduzione di modelli di nuova generazione come YOLO26 offrono flussi di lavoro di gran lunga superiori ai professionisti dell'IA di oggi.
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 bagaglio di tecniche gratuite addestrabili 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 è concentrato soprattutto sull'ottimizzazione dei percorsi del gradiente. Ha introdotto la Extended Efficient Layer Aggregation Network (E-ELAN), che ha consentito al modello di apprendere caratteristiche più diversificate senza compromettere il percorso del gradiente originale. Inoltre, gli autori hanno implementato una metodologia basata su un «bagaglio di tecniche gratuite addestrabile», usando tecniche di riparametrizzazione durante il training che potevano essere fuse durante l'inferenza per mantenere velocità di esecuzione elevate. Nonostante queste impressionanti ottimizzazioni, YOLOv7 continuava a dipendere molto dalla NMS per la post-elaborazione, causando una latenza variabile nell'analisi di scene dense.
La svolta di YOLOv10#
YOLOv10 ha affrontato direttamente il collo di bottiglia della NMS. Introducendo assegnazioni doppie coerenti durante il training, il team della Tsinghua University ha reso possibile il rilevamento end-to-end senza NMS. Questo approccio a doppia testa utilizza un ramo con assegnazioni uno-a-molti per fornire ricchi segnali di supervisione durante il training e un altro ramo con assegnazioni uno-a-uno per l'inferenza senza NMS. Questo cambiamento architetturale garantisce una latenza di inferenza costante e ultra bassa, adatta all'analisi video ad alta velocità. Inoltre, YOLOv10 adotta una progettazione olistica del modello, guidata dall'efficienza e dall'accuratezza, eliminando le ridondanze computazionali presenti nelle generazioni precedenti.
Rimuovere la post-elaborazione NMS non solo accelera l'inferenza, ma semplifica notevolmente anche la distribuzione su hardware edge per l'IA, come gli acceleratori IA e le NPU, sui quali le operazioni NMS personalizzate sono notoriamente difficili da compilare.
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 si vede sopra, YOLOv10x raggiunge una mAP superiore del 54,4% rispetto al 53,1% di YOLOv7x, utilizzando meno della metà dei parametri (29,5M contro 71,3M). Inoltre, i modelli leggeri YOLOv10 (Nano e Small) offrono velocità di distribuzione TensorRT eccezionali, che li rendono particolarmente interessanti per la distribuzione su dispositivi mobili.
I vantaggi dell’ecosistema Ultralytics#
Studiare gli articoli sull'architettura è utile, ma lo sviluppo moderno della visione artificiale si basa su framework solidi e ben mantenuti. Scegliere un modello supportato da Ultralytics offre un enorme vantaggio agli sviluppatori che vogliono passare rapidamente dal prototipo alla produzione.
Sviluppo semplificato#
YOLOv10 è supportato nativamente dal pacchetto Python standard di Ultralytics, mentre i checkpoint YOLOv7 addestrati a monte possono essere eseguiti in Ultralytics solo dopo l'esportazione in ONNX o TensorRT. Il supporto nativo offre una facilità d'uso senza pari, sostituendo migliaia di righe di codice standard con un'API semplice e intuitiva. Inoltre, durante il training i modelli Ultralytics YOLO richiedono molta meno memoria CUDA rispetto alle pesanti architetture Transformer, consentendo di utilizzare batch di dimensioni maggiori su hardware consumer.
Versatilità senza pari#
Mentre i repository più datati si concentrano spesso esclusivamente sul rilevamento dei riquadri di delimitazione, il framework integrato Ultralytics supporta senza problemi una vasta gamma di attività. Che tu ti occupi di segmentazione delle istanze, stima della posa o rilevamento con riquadri di delimitazione orientati (OBB), il flusso di lavoro rimane identico.
Esempio di codice: flussi di lavoro di training coerenti#
Il seguente frammento di codice mostra il processo di training, che gestisce automaticamente l'aumento dei dati 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 facilmente 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 con sola CPU: dispositivi senza accelerazione GPU dedicata, sui quali l'inferenza su CPU di YOLO26, fino al 43% più veloce, offre un vantaggio decisivo.
- Rilevamento di oggetti di piccole dimensioni: scenari complessi come le immagini aeree acquisite da droni o l'analisi dei sensori IoT, in cui ProgLoss e STAL migliorano notevolmente la precisione sugli oggetti molto piccoli.
Il nuovo standard: ecco YOLO26#
YOLOv10 ha rappresentato un enorme passo avanti nel 2024, ma il panorama della visione artificiale evolve a una velocità impressionante. Per ogni nuovo sviluppo, consigliamo vivamente il modello di ultima generazione: Ultralytics YOLO26. Rilasciato a gennaio 2026, rappresenta il vertice assoluto dell'IA per la visione in tempo reale e supera nettamente sia YOLOv7 sia YOLOv10.
YOLO26 introduce innovazioni senza precedenti, progettate appositamente per i moderni ambienti di distribuzione:
- Progettazione end-to-end senza NMS: basandosi sulle fondamenta gettate da YOLOv10, la testa opzionale uno-a-uno di YOLO26 (
nms=False) elimina la post-elaborazione NMS, semplificando le pipeline di distribuzione e garantendo un'inferenza ad alta velocità e costante. - Inferenza su CPU fino al 43% più veloce: ottimizzata in modo approfondito per l'edge computing e i dispositivi senza GPU dedicate, consente notevoli risparmi sui costi hardware.
- Rimozione di DFL: Distribution Focal Loss è stata rimossa del tutto, semplificando radicalmente la logica di esportazione e migliorando notevolmente la compatibilità con i dispositivi edge a basso consumo e i microcontrollori.
- Ottimizzatore MuSGD: ispirato a Kimi K2 di Moonshot AI, questo approccio ibrido tra SGD e Muon porta le innovazioni del training dei modelli linguistici di grandi dimensioni (LLM) direttamente nella visione artificiale, offrendo dinamiche di training incredibilmente stabili e una convergenza più rapida.
- ProgLoss + STAL: queste funzioni di perdita avanzate migliorano notevolmente il riconoscimento degli oggetti di piccole dimensioni, un ambito storicamente difficile e fondamentale per i droni, la robotica e il monitoraggio delle città intelligenti.
- Miglioramenti specifici per attività: YOLO26 non è solo un rilevatore. Include una funzione di perdita specializzata per la segmentazione semantica, la stima della log-verosimiglianza residua (RLE) per una stima della posa estremamente accurata e algoritmi specializzati per la perdita angolare che eliminano i problemi ai bordi degli OBB.
Per un'esperienza ottimale nella gestione dei dataset, nel training di YOLO26 e nella distribuzione dei modelli sul cloud, scopri la piattaforma Ultralytics. Offre un'interfaccia no-code che completa perfettamente l'SDK 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 rimane una scelta affidabile per mantenere pipeline legacy già profondamente integrate con le sue specifiche strutture tensoriali o per replicare benchmark accademici del 2022 e 2023. Offre prestazioni eccellenti sulle GPU server di fascia alta.
Quando usare YOLOv10#
YOLOv10 eccelle negli scenari che richiedono una latenza rigorosamente costante. Essendo privo di NMS, è ideale per il conteggio di folle ad alta densità o il rilevamento dei difetti di produzione, in cui il numero di oggetti varia notevolmente ma il tempo di elaborazione per fotogramma deve rimanere costante.
Quando usare YOLO26#
YOLO26 è la scelta definitiva per qualsiasi nuovo progetto. Dalla distribuzione di sofisticati sistemi di allarme di sicurezza su un semplice Raspberry Pi all'esecuzione di enormi sistemi di analisi video basati sul cloud, la sua velocità superiore su CPU e il rilevamento avanzato degli oggetti di piccole dimensioni lo rendono nettamente superiore alle generazioni precedenti.
Per gli sviluppatori interessati a esplorare architetture moderne alternative, offriamo anche un ampio supporto per rilevatori basati su Transformer come RT-DETR e modelli di riferimento delle generazioni precedenti come Ultralytics YOLO11.