YOLOv8 vs YOLOv7#
Il campo della computer vision è in continua evoluzione e nuove architetture ampliano le possibilità del rilevamento degli oggetti in tempo reale. Questa guida confronta due modelli influenti: Ultralytics YOLOv8 e YOLOv7. Entrambi hanno avuto un impatto significativo sulla community di sviluppatori e sulla ricerca accademica, offrendo approcci distinti per affrontare attività visive complesse.
Comprendere le differenze strutturali e metodologiche tra questi due modelli è fondamentale per gli ingegneri di machine learning che vogliono ottimizzare le pipeline di deployment. Mentre YOLOv7 ha introdotto un approccio "bag-of-freebies" orientato alla produttività grezza, Ultralytics YOLOv8 si è concentrato sulla creazione di un ecosistema completo e facile da usare, che bilancia elevata precisione, basso consumo di memoria e versatilità multi-attività.
Ultralytics YOLOv8: lo standard versatile dell’ecosistema#
Rilasciato da Ultralytics all’inizio del 2023, YOLOv8 rappresenta un importante cambiamento architetturale rispetto ai 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 senza anchor. Questo semplifica l'addestramento eliminando la necessità di configurare manualmente le anchor box in base alla distribuzione specifica del tuo dataset personalizzato, rendendo il modello più robusto e capace di generalizzarsi in ambienti diversi.
Inoltre, l'architettura include il modulo C2f (collo di bottiglia Cross-Stage Partial con due convoluzioni), un miglioramento strutturale che ottimizza il flusso del gradiente e consente alla rete neurale di apprendere rappresentazioni delle feature più ricche senza aumentare in modo significativo il costo computazionale. Questo rende il modello efficiente durante l'inferenza con framework di deep learning standard come PyTorch.
I modelli YOLO di Ultralytics sono progettati per un addestramento efficiente. In genere richiedono molta meno memoria CUDA durante l'addestramento rispetto alle architetture basate su Transformer o alle CNN più pesanti. Questo ti consente di addestrare con batch di dimensioni maggiori su hardware di fascia consumer, accelerando il ciclo di sviluppo.
YOLOv7: l’approccio «bag-of-freebies»#
YOLOv7 è stato introdotto a metà del 2022 ed è diventato rapidamente un riferimento diffuso negli ambienti accademici. Si è concentrato soprattutto sulla riparametrizzazione architetturale e sull’ottimizzazione dei percorsi dei gradienti per spingere al limite il rilevamento di oggetti in tempo reale sulle 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 estesa di aggregazione efficiente dei livelli (E-ELAN), che consente al modello di apprendere continuamente feature più diversificate. Si basa su un design con anchor e introduce un "bag-of-freebies" addestrabile: un insieme di metodi di ottimizzazione che migliorano la precisione senza aumentare il costo dell'inferenza.
YOLOv7 offre prestazioni eccellenti sui benchmark accademici standard, come il dataset MS COCO, ma la sua architettura è ottimizzata soprattutto per acceleratori di classe server. L’esportazione e la distribuzione di questi modelli sui dispositivi edge possono talvolta richiedere una configurazione manuale maggiore rispetto ai framework più moderni e snelli.
Confronto dettagliato delle prestazioni#
Nel valutare questi modelli, il compromesso tra velocità, accuratezza e dimensioni del modello è l’aspetto principale da considerare. La tabella seguente mette a confronto le metriche di entrambi i modelli.
| Modello | dimensione (pixel) | mAPval50-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.1 |
| 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 la precisione più elevata (53.9 mAP), mentre la variante nano (YOLOv8n) offre un'inferenza rapida e un ingombro ridotto. Questa gamma di dimensioni rende YOLOv8 più adattabile agli ambienti hardware con risorse limitate.
I vantaggi di Ultralytics: facilità d’uso ed ecosistema#
YOLOv7 offre metriche di rilevamento grezze elevate, ma Ultralytics YOLOv8 garantisce una migliore esperienza di sviluppo, una maggiore integrazione nell'ecosistema e il supporto multi-attività.
Versatilità#
YOLOv7 è principalmente un modello di rilevamento, con rami sperimentali per altre attività. YOLOv8, invece, supporta nativamente il rilevamento di oggetti, la segmentazione di istanze, la classificazione delle immagini, la stima della posa e le BBox orientate (OBB). Questo approccio unificato consente a un team di imparare una sola API e di usarla per soddisfare requisiti di progetto completamente diversi.
Distribuzione e integrazioni semplificate#
L’esportazione di un modello per la produzione può spesso diventare 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. In questo modo si evitano i problemi di supporto degli operatori che talvolta si verificano esportando grafi complessi basati su anchor.
YOLOv8 si integra anche 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ù impegnativo.
Esempio di codice: addestramento ed esportazione di YOLOv8#
Il codice seguente mostra quanto sia semplice usare l’API Python di Ultralytics. In meno di dieci righe di codice puoi passare dall’inizializzazione di un modello al suo addestramento ed esportazione per la distribuzione edge.
from ultralytics import YOLO
# Carica un modello YOLOv8 nano preaddestrato per un’inferenza rapida
model = YOLO("yolov8n.pt")
# Addestra il modello sul dataset COCO8
# L’API gestisce automaticamente il caricamento e l’aumento dei dati e la registrazione dei log
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Esegui l'inferenza su un'immagine di test
predictions = model("https://ultralytics.com/images/bus.jpg")
# Esporta il modello addestrato in formato ONNX per il deployment
model.export(format="onnx")La funzione model.export() offre un collegamento diretto ai motori di inferenza ad alte prestazioni, consentendoti di integrare 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 distribuzione più adatti a ciascuno.
Quando scegliere YOLOv8:
- IA edge e dispositivi IoT: i modelli Nano e Small, veloci, rendono YOLOv8 adatto all'hardware con capacità di calcolo limitate, come le videocamere intelligenti o i droni.
- Progetti multi-task: se la tua pipeline deve tracciare le articolazioni umane (stima della posa) e mappare contemporaneamente gli ostacoli (segmentazione), YOLOv8 gestisce entrambe le attività in modo nativo.
- Dalla prototipazione rapida alla produzione: l'ampia documentazione Ultralytics e la semplice API Python consentono ai team di portare i prodotti sul mercato più rapidamente.
Quando valutare YOLOv7:
- Benchmarking accademico: i ricercatori che studiano gli effetti delle tecniche di riparametrizzazione usano spesso YOLOv7 come riferimento standard, come dimostra la sua popolarità su Hugging Face Papers.
- Pipeline server legacy: se una pipeline esistente ad alto costo computazionale è già strettamente ottimizzata per gli output specifici delle anchor di YOLOv7, mantenerla potrebbe essere pratico nel breve termine.
Uno sguardo al futuro: la prossima generazione#
YOLOv8 resta versatile, ma il panorama dell'IA si evolve rapidamente. Per i team che avviano nuovi progetti, Ultralytics consiglia di valutare i modelli più recenti della propria gamma.
La generazione più recente, YOLO26, è attualmente il modello Ultralytics consigliato. Include l'opzione design end-to-end senza NMS (nms=False), che evita la post-elaborazione della soppressione non massima (NMS) per un deployment più semplice e rapido. Grazie alla rimozione della Distribution Focal Loss (DFL) e all'introduzione dell'ottimizzatore MuSGD, ispirato all'addestramento degli LLM, YOLO26 offre un addestramento più stabile e un'inferenza CPU fino al 43% più veloce (YOLO26n rispetto a YOLO11n). ProgLoss + STAL (Progressive Loss e assegnazione delle etichette consapevole degli oggetti piccoli) migliorano il rilevamento degli oggetti piccoli, rendendolo un'ottima scelta per l'edge computing moderno e le immagini aeree.
Per chi passa da sistemi meno recenti, anche YOLO11 e il classico YOLOv5 restano pienamente supportati nell'ecosistema Ultralytics unificato, così puoi scegliere il modello più adatto ai tuoi vincoli hardware.