YOLOv10 vs. YOLOX : Une comparaison technique
Dans le paysage en rapide évolution de la vision par ordinateur, le choix du bon modèle de détection d'objets est crucial pour équilibrer les performances, l'efficacité et la facilité de déploiement. Cette comparaison technique explore les différences entre YOLOv10, le dernier détecteur temps réel de bout en bout de l'université de Tsinghua, et YOLOX, un modèle sans ancrage très apprécié de Megvii.
Bien que YOLOX ait introduit des innovations significatives en 2021 concernant les mécanismes de détection sans ancrage, YOLOv10 représente le summum de 2024, offrant une inférence sans NMS et une intégration plus étroite avec l'écosystème Ultralytics.
YOLOv10 : Détection de bout en bout en temps réel
YOLOv10 vise à combler le fossé entre l'efficacité du post-traitement et l'architecture du modèle. En introduisant une stratégie d'affectation double cohérente pour l'entraînement sans NMS, il élimine le besoin de suppression non maximale (NMS) pendant l'inférence, ce qui réduit considérablement la latence.
Détails techniques :
- Auteurs : Ao Wang, Hui Chen, Lihao Liu, et al.
- Organisation :Tsinghua University
- Date : 2024-05-23
- Arxiv :arXiv:2405.14458
- GitHub :THU-MIG/yolov10
Architecture et points forts
YOLOv10 s'appuie sur les points forts des générations YOLO précédentes, mais optimise l'architecture à la fois pour l'efficacité et la précision. Il utilise une conception de modèle holistique qui comprend des têtes de classification légères et un sous-échantillonnage spatial-canal découplé.
- Inférence sans NMS : La suppression du NMS change la donne pour les applications d'inférence en temps réel, garantissant une latence prévisible et une surcharge CPU réduite sur les appareils périphériques.
- Équilibre efficacité-précision : YOLOv10 atteint des performances de pointe avec des nombres de paramètres et des FLOPs inférieurs à ceux de ses prédécesseurs et concurrents.
- Intégration Ultralytics : Étant entièrement pris en charge par le
ultralyticspackage signifie que les utilisateurs bénéficient d'un API Python, une exportation transparente vers des formats tels que TensorRT et OpenVINO, et une documentation complète.
Avantage de l'écosystème
L’intégration de YOLOv10 dans l’écosystème Ultralytics offre un accès immédiat à des fonctionnalités avancées comme l’auto-annotation, la formation en nuage et une communauté robuste pour le soutien.
Faiblesses
- Architecture plus récente : En tant que version 2024, l'écosystème de tutoriels tiers se développe rapidement, mais peut ne pas encore égaler le volume des anciens modèles existants.
YOLOX : Le pionnier sans ancrage
Lancé en 2021, YOLOX est passé à un mécanisme sans ancres et à des têtes découplées, s'éloignant des approches basées sur des ancres de YOLOv4 et YOLOv5. Il utilise SimOTA (Simplified Optimal Transport Assignment) pour l'attribution des étiquettes, ce qui a constitué une avancée significative dans les stratégies d'attribution dynamique des étiquettes.
Détails techniques :
- Auteurs : Zheng Ge, Songtao Liu, Feng Wang, Zeming Li et Jian Sun
- Organisation :Megvii
- Date : 2021-07-18
- Arxiv :arXiv:2107.08430
- GitHub :Megvii-BaseDetection/YOLOX
Architecture et points forts
YOLOX reste une base de référence solide dans la communauté de la recherche en raison de sa conception propre sans ancres.
- Mécanisme sans ancres : En supprimant les boîtes d'ancrage prédéfinies, YOLOX réduit la complexité de la conception et le nombre d'hyperparamètres nécessitant un réglage.
- Tête découplée : La séparation des tâches de classification et de localisation a amélioré la vitesse de convergence et la précision par rapport aux anciennes conceptions de tête couplée.
- Base de référence solide : Il sert de référence fiable pour la recherche académique sur les têtes de détection et les stratégies d’affectation.
Faiblesses
- Vitesse d'inférence : Bien qu'efficace pour son époque, YOLOX est généralement à la traîne par rapport aux modèles plus récents comme YOLOv10 et YOLO11 en termes de vitesse d'inférence brute, en particulier lorsque le temps de NMS est pris en compte.
- Flux de travail fragmenté : Contrairement aux modèles Ultralytics, YOLOX nécessite souvent sa propre base de code et sa propre configuration d’environnement, sans l’interface unifiée pour l’entraînement, la validation et le déploiement que l’on retrouve dans les frameworks modernes.
- Intensité des ressources : Nombre de FLOPs et de paramètres plus élevés pour des niveaux de précision similaires par rapport aux architectures efficaces modernes.
Analyse des performances
La comparaison ci-dessous met en évidence les progrès significatifs réalisés en termes d'efficacité et de précision au cours des trois années qui séparent ces modèles. Les mesures se concentrent sur la taille du modèle (paramètres), le coût de calcul (FLOPs) et la précision (mAP) sur le jeu de données COCO.
| Modèle | Taille (pixels) | mAPval 50-95 | Vitesse CPU ONNX (ms) | Vitesse T4 TensorRT10 (ms) | paramètres (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv10n | 640 | 39.5 | - | 1.56 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.7 | - | 2.66 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.3 | - | 5.48 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.7 | - | 6.54 | 24.4 | 92.0 |
| YOLOv10l | 640 | 53.3 | - | 8.33 | 29.5 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 12.2 | 56.9 | 160.4 |
| 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 |
Observations critiques
- Précision vs. Taille : YOLOv10 offre systématiquement un mAP plus élevé avec moins de paramètres. Par exemple, YOLOv10s atteint 46,7 mAP avec seulement 7,2 M de paramètres, tandis que YOLOXs atteint 40,5 mAP avec 9,0 M de paramètres. Cela démontre l’efficacité architecturale supérieure de YOLOv10.
- Efficacité de calcul : Le nombre de FLOPs pour les modèles YOLOv10 est considérablement plus faible. YOLOv10x fonctionne à 160,4 milliards de FLOPs comparativement aux 281,9 milliards de FLOPs massifs de YOLOXx, tout en le surpassant en termes de précision (54,4 contre 51,1 mAP).
- Vitesse d'inférence : La suppression de la NMS et l'architecture optimisée permettent à YOLOv10 d'atteindre une latence plus faible. Les benchmarks T4 TensorRT montrent que YOLOv10x fonctionne à 12,2 ms, ce qui est nettement plus rapide que YOLOXx à 16,1 ms.
Cas d'utilisation idéaux
YOLOv10 : La norme moderne
YOLOv10 est le choix préféré pour la plupart des nouveaux projets de développement, en particulier ceux qui nécessitent :
- Déploiement de l’IA en périphérie : Son faible encombrement mémoire et sa haute efficacité le rendent parfait pour les appareils tels que le Raspberry Pi ou NVIDIA Jetson.
- Applications en temps réel : Les systèmes nécessitant une rétroaction immédiate, tels que la conduite autonome, la robotique et l’analyse vidéo, bénéficient de la faible latence sans NMS.
- Développement rapide : L'écosystème Ultralytics permet une transition rapide gestion des ensembles de données, la formation et le déploiement via le
ultralyticspackage.
YOLOX : Héritage et recherche
YOLOX reste pertinent pour :
- Recherche académique : Les chercheurs qui étudient l’évolution des détecteurs sans ancrage ou des stratégies d’attribution d’étiquettes spécifiques comme SimOTA utilisent souvent YOLOX comme base de référence.
- Systèmes existants : Les pipelines de production existants déjà optimisés pour YOLOX peuvent continuer à l’utiliser lorsque les coûts de mise à niveau dépassent les gains de performance.
Utilisation de YOLOv10 avec Ultralytics
L'un des avantages les plus importants de YOLOv10 est sa facilité d'utilisation. L'API Python Ultralytics simplifie l'ensemble du flux de travail, du chargement des poids pré-entraînés à l'entraînement sur des données personnalisées.
Voici un exemple de la façon d'exécuter des prédictions et d'entraîner un modèle YOLOv10 :
from ultralytics import YOLO
# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
# Run inference on an image
results = model.predict("path/to/image.jpg")
# Train the model on a custom dataset (COCO format)
model.train(data="coco8.yaml", epochs=100, imgsz=640)
Efficacité de l'entraînement
Les modèles Ultralytics YOLO sont reconnus pour leur efficacité d'entraînement, nécessitant souvent moins de mémoire CUDA que les architectures plus anciennes ou les modèles basés sur des transformeurs. Cela permet d'entraîner des lots plus importants sur des GPU grand public standard.
Conclusion
Bien que YOLOX ait joué un rôle essentiel dans la popularisation de la détection sans ancrage, YOLOv10 représente la prochaine avancée technologique en matière de vision par ordinateur. Avec son architecture sans NMS, son rapport précision/calcul supérieur et son intégration transparente dans l'écosystème Ultralytics robuste, YOLOv10 offre un ensemble convaincant pour les développeurs et les chercheurs.
Pour ceux qui cherchent à déployer une détection d'objets à la pointe de la technologie, YOLOv10 offre la vitesse et la précision nécessaires. Les développeurs intéressés par des capacités encore plus larges, telles que l'estimation de pose ou les boîtes englobantes orientées, pourraient également envisager d'explorer le polyvalent YOLO11 ou le très répandu YOLOv8.