YOLOX vs YOLOv8: avancées dans la détection d'objets haute performance
Dans le domaine en constante évolution de la vision par ordinateur, il est essentiel de choisir l'architecture adaptée à votre application spécifique. Ce guide fournit une comparaison technique détaillée entre YOLOX, un détecteur haute performance sans ancrage lancé en 2021, et Ultralytics YOLOv8, un modèle de pointe conçu pour offrir polyvalence, rapidité et facilité de déploiement. Si les deux modèles ont apporté une contribution significative dans ce domaine, comprendre leurs différences architecturales et leur prise en charge par l'écosystème aidera les développeurs à prendre des décisions éclairées pour leurs projets concrets.
Aperçu général
YOLOX a représenté un changement significatif dans la YOLO en passant à un mécanisme sans ancrage et en découplant la tête de prédiction. Cela a simplifié le processus de conception et amélioré les performances par rapport à ses contemporains tels que YOLOv3 et YOLOv5 v5.0). Cependant, YOLOv8 s'appuie sur des années de commentaires et de recherches de la communauté, intégrant des fonctionnalités avancées telles que la détection sans ancrage, un cadre unifié pour plusieurs tâches et une efficacité de formation supérieure, le tout soutenu par Ultralytics complet Ultralytics .
YOLOX
- Auteurs : Zheng Ge, Songtao Liu, Feng Wang, Zeming Li et Jian Sun
- Organisation :Megvii
- Date : 2021-07-18
- Arxiv:YOLOX : Dépasser la série YOLO en 2021
- GitHub :Megvii-BaseDetection/YOLOX
YOLOv8
- Auteurs : Glenn Jocher, Ayush Chaurasia et Jing Qiu
- Organisation :Ultralytics
- Date : 2023-01-10
- GitHub :ultralytics/ultralytics
Différences architecturales
La principale différence réside dans la manière dont ces modèles gèrent la prédiction d'objets et l'extraction de caractéristiques.
Architecture YOLOX
YOLOX a introduit une structure « découplée ». YOLO traditionnelles associaient les tâches de classification et de localisation (régression de boîte englobante) dans une seule branche. YOLOX les a séparées, arguant que le conflit entre les tâches de classification et de régression limitait les performances. Il est également passé à une conception sans ancrage, traitant la détection d'objets comme un problème de régression ponctuelle, ce qui a réduit la complexité du réglage heuristique des boîtes d'ancrage. Il utilise SimOTA pour l'attribution dynamique d'étiquettes, optimisant les prédictions qui correspondent aux objets de référence.
Architecture YOLOv8
Ultralytics YOLOv8 encoreYOLOv8 le concept sans ancrage. Il utilise un module C2f dans son backbone, qui combine le meilleur de C3 (de YOLOv5) et d'ELAN (de YOLOv7) pour améliorer le flux de gradient tout en conservant une empreinte légère. Comme YOLOX, il utilise une tête découplée, mais introduit un assignateur aligné sur les tâches pour l'attribution des étiquettes, qui équilibre plus efficacement les scores de classification et de localisation que SimOTA. Fondamentalement, YOLOv8 conçu comme un cadre unifié, prenant en charge de manière native la segmentation d'instances, l'estimation de pose, la détection d'objets orientés (OBB) et la classification.
Équilibre des performances
Ultralytics offrent un équilibre optimal entre vitesse et précision. Le backbone C2f de YOLOv8 une extraction plus riche des caractéristiques avec une charge de calcul réduite par rapport au CSPDarknet utilisé dans les architectures plus anciennes.
Comparaison des métriques de performance
Le tableau suivant compare les modèles de détection standard sur l'COCO . YOLOv8 offre YOLOv8 un mAPval plus élevé à des vitesses d'inférence comparables ou plus rapides, en particulier sur les matériels modernes utilisant TensorRT.
| Modèle | Taille (pixels) | mAPval 50-95 | Vitesse CPU ONNX (ms) | Vitesse T4 TensorRT10 (ms) | paramètres (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| 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 |
| 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 |
Remarque : les vitesses YOLOX sont généralement indiquées sur les GPU V100, tandis que YOLOv8 sont normalisées surONNX T4 TensorRT10 et CPU ONNX . « params » fait référence aux paramètres (en millions) et « FLOPs » aux opérations en virgule flottante (en milliards).
Entraînement et facilité d'utilisation
L'une des principales différences entre Ultralytics YOLOX et Ultralytics réside dans l'expérience développeur.
L'avantage de l'écosystème Ultralytics
YOLOv8 d'une Python et d'une interface de ligne de commande (CLI) très sophistiquées. Les développeurs peuvent passer de l'installation à la formation sur un ensemble de données personnalisé en quelques minutes. L'écosystème comprend une intégration transparente avec des outils tels que Weights & Biases pour la journalisation et Ultralytics pour la gestion des données. De plus, Ultralytics permet la formation et le déploiement de modèles basés sur le Web sans nécessiter de configurations locales complexes.
En revanche, YOLOX est un référentiel de recherche plus traditionnel. Bien que puissant, il nécessite souvent une configuration manuelle plus importante des scripts de formation et des dépendances environnementales, ce qui le rend plus difficile à utiliser pour les débutants ou les équipes qui ont besoin d'itérations rapides.
Exemple de code : Formation YOLOv8
La simplicité de Ultralytics permet d'écrire un code concis et facile à maintenir.
from ultralytics import YOLO
# Load a model (YOLOv8n)
model = YOLO("yolov8n.pt")
# Train on COCO8 dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Besoins en mémoire
L'efficacité est un principe fondamental de Ultralytics . YOLOv8 optimisé pour une utilisation moindre de la mémoire pendant l'entraînement par rapport à de nombreuses autres architectures, y compris les modèles basés sur des transformateurs tels que RT-DETR. Cela permet aux chercheurs de former des lots plus importants sur des GPU grand public (par exemple, NVIDIA 3060 ou 4070), démocratisant ainsi l'accès à la formation de modèles haute performance.
Cas d'utilisation concrets
Le choix du modèle approprié dépend souvent de l'environnement de déploiement et des exigences spécifiques de la tâche.
Où YOLOv8 excelle
- Applications multitâches : YOLOv8 prenant en charge YOLOv8 la segmentation et l'estimation de la pose, il est idéal pour les applications complexes telles que l'analyse sportive (suivi des mouvements et de la posture des joueurs) ou les véhicules autonomes (segmentation des voies et détection d'objets).
- Déploiement en périphérie : avec exportation en une seule commande vers des formats tels que ONNX, TensorRT, CoreML et TFLite, YOLOv8 fortement optimisé pour les appareils périphériques tels que le Raspberry Pi et les téléphones mobiles.
- Prototypage rapide : sa facilité d'utilisation et ses poids pré-entraînés en font le choix idéal pour les startups et les équipes agiles qui ont besoin de valider rapidement leurs idées.
Où YOLOX trouve sa place
- Références de recherche héritées : YOLOX reste une référence solide pour les articles universitaires comparant les architectures sans ancrage de l'année 2021.
- Implémentations personnalisées spécifiques : pour les utilisateurs qui ont beaucoup investi dans le framework MegEngine (bien que PyTorch également pris en charge), YOLOX offre une compatibilité native.
Perspectives : La puissance de YOLO26
Alors que YOLOv8 une norme robuste et largement utilisée, Ultralytics d'innover. Le tout nouveau YOLO26 représente une nouvelle avancée majeure.
Pour les développeurs à la recherche d'une performance optimale, YOLO26 offre plusieurs avantages décisifs par rapport à YOLOX et YOLOv8:
- NMS de bout en bout : YOLO26 est nativement de bout en bout, éliminant ainsi le besoin d'un post-traitement par suppression non maximale (NMS). Cela réduit la variabilité de la latence et simplifie les pipelines de déploiement.
- CPU plus rapide : optimisé pour l'informatique en périphérie, YOLO26 offre CPU jusqu'à 43 % plus rapide, ce qui le rend supérieur pour les appareils sans GPU dédiés.
- Optimiseur MuSGD : inspiré des innovations en matière de formation LLM, l'optimiseur MuSGD garantit une formation plus stable et une convergence plus rapide.
- Détection améliorée des petits objets : grâce aux fonctions ProgLoss + STAL, YOLO26 offre des améliorations notables dans la reconnaissance des petits objets, ce qui est crucial pour l'imagerie aérienne et les tâches d'inspection.
Conclusion
YOLOX et YOLOv8 tous deux joué un rôle central dans l'avancement de la détection d'objets. YOLOX a réussi à populariser les mécanismes de détection sans ancrage. Cependant, YOLOv8 offre une solution plus complète, conviviale et polyvalente pour le développement de l'IA moderne. Son intégration dans Ultralytics , sa prise en charge de multiples tâches de vision et ses options de déploiement transparentes en font aujourd'hui le choix privilégié pour la plupart des applications commerciales et de recherche.
Pour ceux qui sont prêts à adopter la toute dernière technologie d'IA visuelle, nous vous recommandons vivement d'explorer YOLO26 afin de pérenniser vos applications grâce à une vitesse et une efficacité NMS.