YOLOv7 vs YOLOX#
L'evoluzione della computer vision è stata caratterizzata da rapidi progressi nel rilevamento di oggetti in tempo reale. Due tappe fondamentali di questo percorso sono YOLOv7 e YOLOX. Entrambi i modelli hanno superato i limiti di velocità e accuratezza, ma hanno adottato filosofie architetturali diverse per raggiungere i propri risultati. Questa guida offre un confronto tecnico completo tra questi due potenti modelli, aiutandoti a scegliere l'architettura giusta per i tuoi progetti di computer vision.
Introduzione ai modelli#
Comprendere le origini e le principali scelte progettuali di questi modelli è fondamentale per distribuirli efficacemente nelle moderne operazioni di machine learning.
Dettagli su YOLOv7#
Sviluppato dai ricercatori che hanno mantenuto le architetture CSPNet e Scaled-YOLOv4, YOLOv7 ha introdotto un approccio basato su una "bag-of-freebies" addestrabile per massimizzare l'accuratezza senza aumentare il costo dell'inferenza.
- Autori: Chien-Yao Wang, Alexey Bochkovskiy e Hong-Yuan Mark Liao
- Organizzazione: Institute of Information Science, Academia Sinica, Taiwan
- Data: 2022-07-06
- Arxiv: https://arxiv.org/abs/2207.02696
- GitHub: https://github.com/WongKinYiu/yolov7
- Documentazione: Documentazione di Ultralytics YOLOv7
Dettagli su YOLOX#
YOLOX ha seguito un percorso diverso, riportando il paradigma al rilevamento senza anchor e semplificando notevolmente l'architettura della testa, pur mantenendo prestazioni solide.
- Autori: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li e Jian Sun
- Organizzazione: Megvii
- Data: 2021-07-18
- Arxiv: https://arxiv.org/abs/2107.08430
- GitHub: https://github.com/Megvii-BaseDetection/YOLOX
- Documentazione: documentazione ufficiale di YOLOX
Differenze architetturali e innovazioni#
Le differenze fondamentali tra YOLOv7 e YOLOX riguardano il modo in cui gestiscono l'estrazione delle caratteristiche, la predizione delle bounding box e l'assegnazione delle etichette.
YOLOX: il pioniere senza anchor#
YOLOX ha rivoluzionato la famiglia YOLO adottando un design senza anchor. I rilevatori tradizionali basati su anchor richiedono una complessa messa a punto euristica per il clustering delle anchor box, che può dipendere fortemente dal dataset. Eliminando le anchor box, YOLOX ha ridotto notevolmente il numero di parametri di progettazione. Inoltre, YOLOX utilizza una testa disaccoppiata, che separa i task di classificazione e localizzazione in rami distinti della rete. In questo modo risolve il conflitto intrinseco tra la classificazione di un oggetto e la regressione delle sue coordinate spaziali. YOLOX integra anche strategie avanzate di assegnazione delle etichette come SimOTA, che alloca dinamicamente i campioni positivi durante l'addestramento.
YOLOv7: aggregazione estesa ed efficiente dei layer#
YOLOv7 è tornato alle metodologie basate su anchor, introducendo però la rete di aggregazione dei layer estesa ed efficiente (E-ELAN). E-ELAN ottimizza la lunghezza dei percorsi del gradiente, assicurando che la rete apprenda efficacemente a diverse profondità. L'architettura si basa fortemente su tecniche di riparametrizzazione, che fondono i layer convoluzionali durante l'inferenza per aumentare la velocità senza sacrificare la precisione. La strategia "bag-of-freebies" di YOLOv7 comprende innovazioni come convoluzioni riparametrizzate pianificate e assegnazione guidata delle etichette lead da grossolana a fine, che portano la precisione media di YOLOv7 a livelli notevoli.
Sebbene YOLOX abbia semplificato le pipeline di distribuzione grazie alla configurazione senza anchor, le architetture Ultralytics moderne hanno ulteriormente perfezionato questo approccio, eliminando la necessità di box predefinite nelle generazioni più recenti.
Confronto delle prestazioni#
Quando valuti questi modelli per la produzione, è essenziale bilanciare accuratezza ed efficienza computazionale. La tabella seguente illustra i compromessi ed evidenzia in grassetto le metriche con le prestazioni migliori.
| 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 |
| YOLOXnano | 416 | 25.8 | - | - | 0.91 | 1.08 |
| YOLOXtiny | 416 | 32.8 | - | - | 5.06 | 6.45 |
| YOLOXs | 640 | 40.5 | - | 2.56 | 9.0 | 26.8 |
| YOLOXm | 640 | 46.9 | - | 5.43 | 25.3 | 73.8 |
| YOLOXl | 640 | 49.7 | - | 9.04 | 54.2 | 155.6 |
| YOLOXx | 640 | 51.1 | - | 16.1 | 99.1 | 281.9 |
Come mostrato sopra, YOLOv7x raggiunge il mAP più elevato, risultando particolarmente accurato sui dataset complessi. YOLOX-Nano, al contrario, è altamente ottimizzato per ambienti con risorse estremamente limitate. Tuttavia, rispetto alle architetture moderne, entrambi i modelli utilizzano una quantità relativamente elevata di memoria durante l'addestramento.
Metodologie di training ed ecosistema#
Un fattore cruciale per ricercatori e sviluppatori è la facilità di implementazione. In passato, le versioni meno recenti di YOLO richiedevano script C++ ampiamente personalizzati o una gestione complessa delle dipendenze.
I vantaggi dell’ecosistema Ultralytics#
YOLOv7 e YOLOX non sono supportati nativamente dal pacchetto Python Ultralytics; per i nuovi progetti, la strada più efficace è scegliere un modello Ultralytics YOLO nell'ecosistema Ultralytics, gestito in modo eccellente. Ultralytics offre un'API Python unificata e altamente intuitiva che semplifica notevolmente l'addestramento, la convalida e la distribuzione.
- Facilità d'uso: con poche righe di codice puoi avviare un ciclo di addestramento, riducendo la ripida curva di apprendimento associata alle implementazioni PyTorch pure.
- Efficienza di addestramento: i modelli Ultralytics YOLO utilizzano intrinsecamente meno memoria durante l'addestramento rispetto ai modelli Transformer pesanti come RT-DETR. Questo consente agli sviluppatori di massimizzare le dimensioni dei batch sull'hardware consumer.
- Versatilità: oltre alle semplici bounding box, l'ecosistema si estende senza difficoltà ad attività come la segmentazione di istanze e la stima della posa.
Ecco un esempio eseguibile al 100% che mostra come addestrare un modello utilizzando l'API Ultralytics:
from ultralytics import YOLO
# Carica un modello pretrained
model = YOLO("yolov8n.pt") # Pesi subito disponibili per un transfer learning rapido
# Addestra il modello in modo efficiente sui tuoi dati personalizzati
results = model.train(
data="coco8.yaml",
epochs=100,
imgsz=640,
batch=16,
device="0", # Utilizza una gestione ottimale della memoria CUDA
)
# Esporta facilmente in ONNX o TensorRT
model.export(format="onnx")Standardizzando la pipeline di esportazione, gli sviluppatori possono trasferire facilmente i pesi in formati come TensorRT o ONNX, garantendo un'inferenza ad alta velocità sull'hardware di destinazione.
Casi d'uso ideali e applicazioni nel mondo reale#
La scelta tra YOLOX e YOLOv7 dipende in larga misura dagli obiettivi di distribuzione:
- YOLOX per l'IA edge: Le varianti YOLOX-Nano e YOLOX-Tiny sono particolarmente adatte alla distribuzione su dispositivi a basso consumo. Se stai realizzando una telecamera di sicurezza intelligente con un Raspberry Pi, le semplici convoluzioni anchor-free di YOLOX si adattano facilmente agli acceleratori edge.
- YOLOv7 per analisi ad alta fedeltà: Se elabori immagini satellitari ad alta risoluzione o esegui complessi controlli di qualità nella produzione, l'elevato mAP di YOLOv7x, supportato da GPU NVIDIA di fascia alta, garantisce il rilevamento anche delle anomalie più piccole.
Il futuro: passare a Ultralytics YOLO26#
Sebbene YOLOv7 e YOLOX fossero rivoluzionari al momento della loro introduzione, il panorama della visione artificiale è progredito notevolmente. Per le nuove distribuzioni, gli sviluppatori dovrebbero puntare su Ultralytics YOLO26, rilasciato a gennaio 2026. Questo modello all'avanguardia riunisce le migliori teorie architetturali in un sistema definitivo, pronto per la produzione.
Ecco perché è fortemente consigliato eseguire l'aggiornamento:
- Design end-to-end senza NMS: La head one-to-one opzionale di YOLO26 (
nms=False) elimina la Soppressione non massima (NMS) durante la post-elaborazione. Introdotta inizialmente in YOLOv10, garantisce una latenza costantemente bassa e semplifica la distribuzione sui dispositivi privi di supporto hardware per NMS. - Rimozione di DFL: Rimuovendo la Distribution Focal Loss, YOLO26 offre una compatibilità nettamente migliore con i dispositivi edge a basso consumo e semplifica le esportazioni ONNX.
- Ottimizzatore MuSGD: Ispirato alle innovazioni nell'addestramento degli LLM, YOLO26 utilizza un ottimizzatore ibrido MuSGD, che garantisce una convergenza più rapida e dinamiche di addestramento estremamente stabili.
- Inferenza su CPU fino al 43% più veloce: YOLO26 è fortemente ottimizzato per l'hardware reale e offre prestazioni eccellenti sulle CPU standard senza richiedere costose infrastrutture GPU.
- ProgLoss + STAL: Progressive Loss e Small-Target-Aware Label Assignment migliorano notevolmente il riconoscimento degli oggetti piccoli, una caratteristica fondamentale per le ispezioni aeree con droni e le sofisticate reti IoT.
Per gli sviluppatori che cercano il miglior equilibrio tra prestazioni per rilevamento degli oggetti, segmentazione e altro ancora, distribuire i modelli tramite la Piattaforma Ultralytics offre un'esperienza senza attriti e senza paragoni.
Conclusione#
YOLOX e YOLOv7 hanno introdotto tecniche cruciali che hanno plasmato il percorso dell'IA open source per la visione artificiale. YOLOX ha dimostrato la validità delle head disaccoppiate anchor-free, mentre YOLOv7 ha evidenziato l'enorme potenziale della riparametrizzazione dei percorsi del gradiente. Oggi, l'ecosistema Ultralytics ti permette di sviluppare queste idee con i moderni modelli Ultralytics YOLO e di passare senza difficoltà all'avanguardia con YOLO26, per rendere la tua prossima applicazione di visione artificiale pronta per il futuro.