YOLOv8 vs YOLOv7#
Il campo della visione artificiale è in continua evoluzione, con nuove architetture che ampliano costantemente i limiti di ciò che è possibile fare nel rilevamento degli oggetti in tempo reale. In questo approfondimento, confrontiamo due modelli altamente influenti: Ultralytics YOLOv8 e YOLOv7. Entrambi i modelli hanno avuto un impatto significativo sulla community degli sviluppatori e sulla ricerca accademica, offrendo approcci unici alla risoluzione di attività visive complesse.
Comprendere le differenze strutturali e metodologiche tra questi due modelli è fondamentale per gli ingegneri del machine learning che desiderano ottimizzare le proprie pipeline di deployment. Mentre YOLOv7 ha introdotto un potente approccio "bag-of-freebies" orientato al throughput puro, Ultralytics YOLOv8 si è concentrato sulla creazione di un ecosistema completo e facile da usare, che bilancia elevata accuratezza, basso consumo di memoria e versatilità multi-task.
Ultralytics YOLOv8: lo standard versatile dell'ecosistema#
Rilasciato da Ultralytics all'inizio del 2023, YOLOv8 rappresenta un importante cambiamento architetturale rispetto ai suoi predecessori. È stato progettato fin dall'inizio per essere più di un semplice rilevatore di oggetti in tempo reale; è un framework unificato in grado di gestire un'ampia gamma di attività di visione già pronto all'uso.
- Autori: Glenn Jocher, Ayush Chaurasia e Jing Qiu
- Organizzazione: Ultralytics
- Data: 2023-01-10
- GitHub: ultralytics/ultralytics
- Documentazione: Documentazione di YOLOv8
Innovazioni architetturali#
YOLOv8 ha introdotto una testa di rilevamento innovativa anchor-free. Questo semplifica fondamentalmente il processo di training eliminando la necessità di configurare manualmente le anchor box in base alla distribuzione specifica del tuo dataset personalizzato. Questa scelta progettuale rende il modello altamente robusto e più facile da generalizzare in ambienti diversi.
Inoltre, l'architettura include il modulo C2f (collo di bottiglia parziale tra fasi con due convoluzioni), un miglioramento strutturale che ottimizza il flusso dei gradienti e consente alla rete neurale di apprendere rappresentazioni delle caratteristiche più ricche senza aumentare drasticamente il costo computazionale. Questo rende il modello altamente efficiente durante l'inferenza tramite framework di deep learning standard come PyTorch.
I modelli YOLO di Ultralytics sono progettati per la massima efficienza durante il training. In genere richiedono molta meno memoria CUDA durante il training rispetto alle architetture basate su Transformer o alle CNN più pesanti. Questo ti consente di eseguire il training con batch size più grandi su hardware di livello consumer, accelerando il tuo ciclo di sviluppo.
YOLOv7: l'approccio "Bag-of-Freebies"#
YOLOv7 è stato introdotto a metà del 2022 ed è rapidamente diventato un baseline popolare negli ambienti accademici. Si è concentrato fortemente sulla riparametrizzazione dell'architettura e sull'ottimizzazione del percorso dei gradienti per spingere al massimo le prestazioni del rilevamento degli oggetti in tempo reale su GPU 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
Innovazioni architetturali#
YOLOv7 utilizza una rete di aggregazione dei livelli efficiente estesa (E-ELAN), che consente al modello di apprendere continuamente caratteristiche più diversificate. Si basa fortemente su un paradigma anchor-based e introduce un "bag-of-freebies" addestrabile, ovvero un insieme di metodi di ottimizzazione che migliorano l'accuratezza senza aumentare il costo dell'inferenza.
Sebbene YOLOv7 raggiunga prestazioni eccellenti su benchmark accademici standard come il dataset MS COCO, la sua architettura è fortemente ottimizzata per acceleratori di livello server. L'esportazione e il deployment di questi modelli su dispositivi edge possono talvolta richiedere una configurazione più manuale rispetto a framework più moderni e semplificati.
Confronto dettagliato delle prestazioni#
Nella valutazione di questi modelli, il compromesso tra velocità, accuratezza e dimensioni del modello è la considerazione principale. La tabella seguente evidenzia le metriche di entrambi i modelli.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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.2 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
Come mostrano i dati, YOLOv8x raggiunge l'accuratezza assoluta più elevata (53.9 mAP), mentre la variante nano (YOLOv8n) offre velocità di inferenza eccezionali e un ingombro estremamente ridotto. Questa varietà rende YOLOv8 molto più adattabile agli ambienti con hardware limitato.
Il vantaggio di Ultralytics: facilità d'uso ed ecosistema#
Sebbene YOLOv7 offra solide metriche di rilevamento puro, Ultralytics YOLOv8 lo supera nettamente in termini di esperienza degli sviluppatori, integrazione nell'ecosistema e funzionalità multi-task.
Versatilità senza pari#
YOLOv7 è principalmente un modello di rilevamento, con rami sperimentali per altre attività. Al contrario, YOLOv8 supporta nativamente rilevamento degli oggetti, segmentazione delle istanze, classificazione delle immagini, stima della posa e riquadri di delimitazione orientati (OBB). Questo approccio unificato significa che un team può imparare una sola API e utilizzarla per il deployment in progetti con requisiti completamente diversi.
Deployment e integrazioni semplificati#
L'esportazione di un modello per la produzione può spesso rappresentare un collo di bottiglia. Il pacchetto Ultralytics consente agli sviluppatori di esportare in formati come ONNX, TensorRT e CoreML con una sola riga di codice Python. Questo evita i problemi di supporto agli operatori che si incontrano talvolta durante l'esportazione di grafi complessi basati su anchor.
Inoltre, YOLOv8 si integra perfettamente con gli strumenti MLOps. Che tu stia monitorando gli esperimenti con Weights & Biases o testando i deployment su Hugging Face Spaces, l'ecosistema Ultralytics si occupa del lavoro più complesso.
Esempio di codice: training ed esportazione di YOLOv8#
Il codice seguente dimostra la semplicità dell'API Python di Ultralytics. Puoi passare dall'inizializzazione di un modello al training e alla sua esportazione per il deployment edge in meno di dieci righe di codice.
from ultralytics import YOLO
# Load a pretrained YOLOv8 nano model for fast inference
model = YOLO("yolov8n.pt")
# Train the model on the COCO8 dataset
# The API handles data loading, augmentation, and logging automatically
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference on a test image
predictions = model("https://ultralytics.com/images/bus.jpg")
# Export the trained model to ONNX format for deployment
model.export(format="onnx")L'utilizzo della funzione model.export() offre un collegamento immediato ai motori di inferenza ad alte prestazioni, consentendoti di integrare facilmente YOLOv8 in applicazioni mobili, sistemi embedded o server cloud ad alto throughput.
Casi d'uso nel mondo reale#
Le differenze architetturali tra i due modelli determinano gli scenari di deployment ideali per ciascuno.
Quando scegliere YOLOv8:
- Dispositivi Edge AI e IoT: la disponibilità di modelli Nano e Small ultraveloce rende YOLOv8 perfetto per hardware con capacità di calcolo limitate, come telecamere intelligenti o droni.
- Progetti multi-task: se la tua pipeline richiede il tracciamento delle articolazioni umane (stima della posa) mentre mappa contemporaneamente gli ostacoli (segmentazione), YOLOv8 gestisce tutto nativamente.
- Dalla prototipazione rapida alla produzione: l'ampia documentazione di Ultralytics e l'API Python senza frizioni consentono ai team di portare i prodotti sul mercato più rapidamente.
Quando prendere in considerazione YOLOv7:
- Benchmark accademici: i ricercatori che studiano gli effetti delle tecniche di riparametrizzazione utilizzano spesso YOLOv7 come baseline standard, come dimostra la sua popolarità su Papers With Code.
- Pipeline server legacy: se una pipeline esistente ad alto consumo computazionale è già strettamente ottimizzata attorno agli specifici output delle anchor di YOLOv7, mantenerla potrebbe essere pratico nel breve termine.
Uno sguardo al futuro: la prossima generazione#
Sebbene YOLOv8 rimanga una soluzione versatile e potente, il panorama dell'AI evolve rapidamente. Per i team che avviano nuovi progetti, consigliamo vivamente di esplorare gli ultimi progressi della linea di prodotti Ultralytics.
La generazione più recente, YOLO26, rappresenta il vertice attuale dell'AI per la visione. Include un design end-to-end senza NMS, che elimina il post-processing della soppressione non massima per un deployment più semplice e veloce. Con la rimozione della funzione di perdita focale della distribuzione (DFL) e l'introduzione dell'ottimizzatore MuSGD ispirato agli LLM, YOLO26 offre un training più stabile e un'inferenza su CPU fino al 43% più veloce. Le sue avanzate funzioni di perdita ProgLoss + STAL migliorano drasticamente il riconoscimento degli oggetti piccoli, rendendolo la scelta ideale per il moderno edge computing e le immagini aeree.
Per gli utenti che effettuano la transizione da sistemi meno recenti, anche il potente YOLO11 e il classico YOLOv5 continuano a essere pienamente supportati nell'ecosistema unificato di Ultralytics, garantendo che, qualunque siano i tuoi vincoli hardware, ci sia un modello semplificato e ad alte prestazioni pronto per il deployment.