YOLOv7 vs YOLOv8#
La rapida evoluzione della computer vision ha prodotto molti strumenti efficaci per sviluppatori e ricercatori. Quando scegli un'architettura per una pipeline di rilevamento di oggetti, confrontare i modelli consolidati è essenziale. Questa guida esamina le architetture, le metriche di prestazione e i casi d'uso ideali di due modelli influenti: YOLOv7 e Ultralytics YOLOv8.
Introduzione alle architetture#
Entrambi i modelli hanno apportato miglioramenti significativi alle prestazioni, ma adottano approcci progettuali diversi per ottimizzare le reti neurali profonde.
YOLOv7: pioniere dei bag-of-freebies#
Introdotto a metà del 2022, YOLOv7 si è concentrato soprattutto sull'ottimizzazione dei percorsi del gradiente dell'architettura e sul concetto di "bag-of-freebies addestrabile" per spingere al limite il rilevamento in tempo reale su hardware di fascia alta.
- Autori: Chien-Yao Wang, Alexey Bochkovskiy e Hong-Yuan Mark Liao
- Organizzazione: Institute of Information Science, Academia Sinica, Taiwan
- Data: 2022-07-06
- arXiv: 2207.02696
- GitHub: WongKinYiu/yolov7
- Documentazione: Documentazione di Ultralytics YOLOv7
Caratteristiche architetturali: YOLOv7 utilizza principalmente una testa di rilevamento basata su anchor (pur avendo sperimentato diramazioni anchor-free) e introduce le Extended Efficient Layer Aggregation Networks (E-ELAN). Questo design migliora la capacità di apprendimento della rete senza compromettere il percorso originale del gradiente. Offre buone prestazioni sulle GPU di classe server, risultando adatto all'analisi video intensiva.
Punti di forza e debolezze: YOLOv7 raggiunge una bassa latenza sull'hardware dedicato, ma i suoi strumenti sono meno integrati. Per l'addestramento occorre clonare il repository, gestire manualmente le dipendenze di PyTorch e specificare numerosi argomenti da riga di comando. I requisiti di memoria durante l'addestramento possono inoltre essere elevati per l'hardware consumer.
Ultralytics YOLOv8: lo standard versatile#
Rilasciato all'inizio del 2023, YOLOv8 ha combinato un'elevata accuratezza con un framework unificato, pronto per la produzione, per l'addestramento, la convalida e la distribuzione.
- Autori: Glenn Jocher, Ayush Chaurasia e Jing Qiu
- Organizzazione: Ultralytics
- Data: 2023-01-10
- GitHub: ultralytics/ultralytics
- Piattaforma: Ultralytics YOLOv8
Caratteristiche architetturali: YOLOv8 ha introdotto una testa di rilevamento nativa anchor-free, eliminando la necessità di configurare manualmente le anchor box in base al dataset MS COCO o alle distribuzioni dei dati personalizzate. Integra il modulo C2f per migliorare il flusso del gradiente e usa una struttura a testa disaccoppiata che separa le attività di classificazione e regressione, accelerando la convergenza e migliorando l'accuratezza.
Punti di forza e debolezze: YOLOv8 è efficiente nell'uso della memoria: durante l'addestramento richiede in genere meno memoria CUDA di YOLOv7 o dei modelli Transformer più pesanti, consentendo di usare batch più grandi. Il suo principale punto di forza è la versatilità, con supporto nativo per la segmentazione delle istanze, la classificazione delle immagini, la stima della posa e il rilevamento di Oriented Bounding Boxes (OBB). Il principale svantaggio è che potrebbe essere necessario ristrutturare le pipeline legacy basate sui tensori di output di YOLOv7.
Ultralytics YOLOv8 fa parte di un ecosistema in continuo sviluppo. Rispetto ai repository di ricerca autonomi, la sua API Python, le release regolari e il supporto della community abbreviano il percorso dai test locali alla distribuzione in produzione.
Confronto dettagliato delle prestazioni#
La tabella seguente riporta le metriche di prestazione per le principali dimensioni dei modelli. YOLOv8 offre un'ampia gamma di compromessi tra velocità e accuratezza: dai modelli compatti per dispositivi edge ai modelli più grandi, che raggiungono l'accuratezza più elevata in questo confronto.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
| YOLOv8n | 640 | 37.3 | 80.4 | 1.47 | 3.2 | 8.7 |
| YOLOv8s | 640 | 44.9 | 128.4 | 2.66 | 11.2 | 28.6 |
| YOLOv8m | 640 | 50.2 | 234.7 | 5.86 | 25.9 | 78.9 |
| YOLOv8l | 640 | 52.9 | 375.2 | 9.06 | 43.7 | 165.1 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
Nota: YOLOv8x raggiunge il valore mAP più alto di questo gruppo, mentre YOLOv8n ha il minor numero di parametri e l'inferenza più rapida, risultando una scelta eccellente per distribuire la computer vision sui dispositivi edge AI.
Facilità d'uso ed efficienza dell'addestramento#
Ultralytics YOLOv8 è progettato per essere facile da usare. Le architetture più datate, come YOLOv7, richiedono di clonare repository specifici ed eseguire script da riga di comando prolissi per configurare i dataset e i percorsi.
Al contrario, il pacchetto ultralytics di YOLOv8 offre un flusso di lavoro semplificato con download automatico dei dataset, pesi preaddestrati pronti all'uso e supporto integrato per l'esportazione in formati come ONNX e TensorRT.
L'esempio seguente carica un modello, lo addestra ed esegue l'inferenza con l'API Python di Ultralytics:
from ultralytics import YOLO
# Carica un modello nano YOLOv8 preaddestrato
model = YOLO("yolov8n.pt")
# Addestra il modello in modo efficiente sul dataset COCO8
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)
# Esegui rapidamente l'inferenza su un'immagine di test
predictions = model("https://ultralytics.com/images/bus.jpg")
# Visualizza le previsioni
predictions[0].show()YOLOv8 si integra con strumenti MLOps diffusi come Weights & Biases e ClearML, così puoi monitorare in tempo reale l'ottimizzazione degli iperparametri e le metriche di addestramento.
Casi d'uso ideali#
La scelta tra queste architetture dipende spesso dai vincoli specifici dell'ambiente di distribuzione.
Quando scegliere YOLOv7#
- Benchmark legacy: adatto ai ricercatori che necessitano di una baseline fissa con cui confrontare gli standard architetturali del 2022.
- Infrastruttura pesante preesistente: ambienti basati su GPU NVIDIA V100 o A100, in cui i tensori di output di YOLOv7 sono integrati in una pipeline C++ legacy.
Quando scegliere YOLOv8#
- Produzione multipiattaforma: ideale per i team che devono distribuire su GPU cloud, dispositivi mobili e browser.
- Requisiti multi-task: se il tuo progetto necessita di maschere di segmentazione delle istanze o keypoint della posa oltre ai riquadri di delimitazione.
- Dispositivi edge con risorse limitate: YOLOv8 Nano (
yolov8n) offre un ottimo rapporto tra accuratezza e velocità per robotica, droni e dispositivi IoT.
Uno sguardo al futuro: il salto generazionale a YOLO26#
YOLOv8 resta una scelta affidabile, ma per i nuovi progetti sono disponibili modelli Ultralytics più recenti: YOLO11 e YOLO26, il modello attualmente consigliato.
Rilasciato a gennaio 2026, YOLO26 è progettato per una distribuzione efficiente sui dispositivi edge:
- Design end-to-end senza NMS: YOLO26 supporta nativamente l'inferenza end-to-end e salta la post-elaborazione Non-Maximum Suppression (NMS) grazie alla testa opzionale uno-a-uno (
nms=False). Questo semplifica le pipeline di distribuzione ed elimina la latenza di un passaggio NMS separato. - Rimozione di DFL: rimuovere Distribution Focal Loss semplifica la testa di rilevamento, amplia le opzioni di distribuzione del modello e migliora la compatibilità edge.
- Inferenza su CPU fino al 43% più veloce: nell'inferenza ONNX su CPU, YOLO26n è fino al 43% più veloce di YOLO11n, risultando adatto ai dispositivi con risorse limitate, come Raspberry Pi, e ad altri sistemi embedded.
- Ottimizzatore MuSGD: ispirato all'addestramento dei modelli linguistici di grandi dimensioni (LLM), YOLO26 usa una combinazione ibrida di SGD e Muon per un addestramento più stabile e una convergenza più rapida.
- ProgLoss + STAL: la perdita progressiva e l'assegnazione delle etichette consapevole degli oggetti piccoli (STAL) migliorano il rilevamento degli oggetti di piccole dimensioni, un aspetto importante per le immagini aeree, l'agricoltura e la robotica.
Che tu distribuisca YOLOv8 su grandi cluster per l'analisi video o YOLO26 su piccoli dispositivi edge, la Ultralytics Platform offre strumenti per annotare i dati, addestrare e distribuire modelli lungo l'intero ciclo di vita dell'AI.