Passer au contenu

YOLOv7 vs YOLOv10 : Évolution architecturale et analyse des performances

L'évolution de la famille YOLO (You Only Look Once) représente une chronologie fascinante des avancées en vision par ordinateur, équilibrant l'éternel compromis entre la vitesse d'inférence et la précision de la détection. Cette comparaison se penche sur deux étapes importantes : YOLOv7, un modèle robuste qui a établi de nouvelles références en 2022, et YOLOv10, une version de 2024 qui introduit un changement de paradigme avec l'entraînement sans NMS.

Bien que les deux modèles soient d'excellents choix pour la détection d'objets, ils répondent à des philosophies architecturales différentes. YOLOv7 repousse les limites des "bag-of-freebies" entraînables et de l'optimisation du chemin de gradient, tandis que YOLOv10 se concentre sur l'élimination des goulots d'étranglement du post-traitement pour atteindre une efficacité de bout en bout en temps réel.

YOLOv7 : optimisation du chemin de gradient

Lancé en juillet 2022, YOLOv7 a introduit d'importants changements architecturaux axés sur l'optimisation du processus d'entraînement sans augmenter les coûts d'inférence. Il est rapidement devenu un favori pour les tâches de vision par ordinateur à usage général en raison de sa grande précision sur l'ensemble de données COCO.

Auteurs : Chien-Yao Wang, Alexey Bochkovskiy et Hong-Yuan Mark Liao
Organisation : Institute of Information Science, Academia Sinica, Taïwan
Date : 2022-07-06
ArXiv :YOLOv7 : Un ensemble d'astuces d'entraînement établit une nouvelle référence en matière de détecteurs d'objets en temps réel
GitHub :WongKinYiu/yolov7

Principales caractéristiques architecturales

YOLOv7 a introduit le Extended Efficient Layer Aggregation Network (E-ELAN). Cette architecture permet au modèle d'apprendre des caractéristiques plus diverses en contrôlant les chemins de gradient les plus courts et les plus longs, garantissant ainsi que le réseau converge efficacement pendant l'entraînement.

De plus, YOLOv7 utilise intensivement les "Bag-of-Freebies" - des méthodes qui améliorent la précision pendant l'apprentissage sans augmenter le coût d'inférence. Ceux-ci incluent la re-paramétrisation du modèle, où une structure d'apprentissage complexe est simplifiée en une structure d'inférence rationalisée, réduisant la latence tout en maintenant la performance apprise.

En savoir plus sur YOLOv7

YOLOv10 : La fin de la NMS

YOLOv10, publié en mai 2024 par des chercheurs de l'université de Tsinghua, s'attaque à un goulet d'étranglement de longue date dans la détection d'objets : la suppression non maximale (NMS). Les modèles YOLO traditionnels prédisent plusieurs boîtes englobantes pour un seul objet et s'appuient sur la NMS pour filtrer les doublons. Cette étape de post-traitement ajoute une latence qui varie en fonction du nombre d'objets dans la scène.

Auteurs: Ao Wang, Hui Chen, Lihao Liu, et al.
Organisation: Université Tsinghua
Date: 2024-05-23
ArXiv:YOLOv10 : Détection d’objets de bout en bout en temps réel
GitHub:THU-MIG/yolov10

Principales caractéristiques architecturales

YOLOv10 introduit une stratégie d'attribution double cohérente. Pendant l'entraînement, le modèle utilise à la fois une tête un-à-plusieurs (pour une supervision riche) et une tête un-à-un (pour une prédiction de bout en bout). Pendant l'inférence, seule la tête un-à-un est utilisée, ce qui élimine complètement le besoin de NMS. Il en résulte une inférence prévisible et à faible latence, ce qui le rend particulièrement adapté aux applications d'IA en périphérie où le temps de traitement doit être constant.

En savoir plus sur YOLOv10

Comparaison technique : Architecture et performance

La distinction principale entre ces modèles réside dans leur approche de l'efficacité de l'inférence. YOLOv7 s'appuie sur un backbone hautement optimisé (E-ELAN) pour extraire efficacement les caractéristiques, mais nécessite toujours un post-traitement traditionnel. YOLOv10 modifie la tête de détection fondamentale pour supprimer les étapes de post-traitement, atteignant une latence plus faible pour des niveaux de précision similaires.

Mesures de performance

Comme illustré dans le tableau ci-dessous, YOLOv10 démontre une efficacité supérieure. Par exemple, YOLOv10b atteint une mAP plus élevée (52,7 %) que YOLOv7l (51,4 %) tout en utilisant beaucoup moins de paramètres (24,4M contre 36,9M) et d'opérations en virgule flottante (FLOPs).

Comprendre la latence

Les mesures de « vitesse » mettent en évidence l'impact de la conception sans NMS de YOLOv10. En supprimant l'étape NMS, YOLOv10 réduit la surcharge de calcul pendant l'inférence, ce qui est particulièrement avantageux sur les accélérateurs matériels comme TensorRT où le post-traitement peut autrement devenir un goulot d'étranglement.

ModèleTaille
(pixels)
mAPval
50-95
Vitesse
CPU ONNX
(ms)
Vitesse
T4 TensorRT10
(ms)
paramètres
(M)
FLOPs
(B)
YOLOv7l64051.4-6.8436.9104.7
YOLOv7x64053.1-11.5771.3189.9
YOLOv10n64039.5-1.562.36.7
YOLOv10s64046.7-2.667.221.6
YOLOv10m64051.3-5.4815.459.1
YOLOv10b64052.7-6.5424.492.0
YOLOv10l64053.3-8.3329.5120.3
YOLOv10x64054.4-12.256.9160.4

Points forts et faiblesses

Points forts de YOLOv7 :

  • Robustesse éprouvée : Testé de manière approfondie dans divers contextes universitaires et industriels depuis 2022.
  • Prise en charge de la haute résolution : Excellentes performances sur les entrées de résolution plus élevée (par exemple, 1280 pixels) via des variantes W6/E6 spécifiques.
  • Ressources communautaires : Un grand nombre de tutoriels et d’implémentations tierces existent en raison de son ancienneté.

Points faibles de YOLOv7 :

  • Complexité : La structure de reparamétrisation et de tête auxiliaire peut compliquer le pipeline d’entraînement par rapport aux modèles Ultralytics modernes.
  • Dépendance au NMS : La vitesse d'inférence dépend partiellement de la densité de la scène en raison du NMS.

Points forts de YOLOv10 :

  • Latence la plus faible : L'architecture NMS permet une inférence extrêmement rapide, idéale pour l'inférence en temps réel.
  • Efficacité : Atteint une précision de pointe avec moins de paramètres et une utilisation de mémoire réduite.
  • Facilité de déploiement : La suppression de l'étape NMS simplifie le processus d'exportation vers des formats tels que ONNX et TensorRT.

Points faibles de YOLOv10 :

  • Spécificité de la tâche : principalement axé sur la détection d’objets, tandis que d’autres modèles de l’écosystème Ultralytics (comme YOLO11) prennent en charge nativement la segmentation, l’estimation de la pose et l’OBB dans un framework unifié.

Cas d'utilisation idéaux

Le choix entre YOLOv7 et YOLOv10 dépend souvent des contraintes spécifiques de l'environnement de déploiement.

  • Utiliser YOLOv7 si : Vous travaillez sur un projet existant qui intègre déjà l’architecture v7, ou si vous avez besoin de variantes spécifiques à haute résolution (comme YOLOv7-w6) pour la detect de petits objets dans de grandes images où la vitesse d’inférence est secondaire par rapport à la précision brute.
  • Utiliser YOLOv10 si : Vous effectuez un déploiement sur des appareils périphériques aux ressources limitées (Raspberry Pi, Jetson Nano, téléphones mobiles) ou si vous avez besoin d’une latence minimale absolue pour des applications telles que la conduite autonome ou la robotique à haute vitesse. L’empreinte mémoire plus faible rend également son exécution moins coûteuse dans les environnements cloud.

L'avantage Ultralytics

Qu'il s'agisse de choisir YOLOv7 ou YOLOv10, leur utilisation via l'API Python Ultralytics offre des avantages significatifs par rapport à l'utilisation du code brut du référentiel. Ultralytics a intégré ces modèles dans un écosystème unifié qui privilégie la facilité d'utilisation, l'efficacité de l'entraînement et la polyvalence.

Expérience utilisateur simplifiée

L'entraînement de modèles complexes d'apprentissage profond nécessitait historiquement la gestion de fichiers de configuration et de dépendances complexes. Le framework Ultralytics standardise ce processus. Les développeurs peuvent passer d'une architecture à l'autre (par exemple, de YOLOv10n à YOLOv10s ou même à YOLO11) en modifiant un seul argument de chaîne, sans réécrire les chargeurs de données ou les scripts de validation.

Exemple de code

L'exemple suivant montre comment charger et prédire avec ces modèles en utilisant le package Ultralytics. Notez que l'API reste cohérente quelle que soit l'architecture du modèle sous-jacent.

from ultralytics import YOLO

# Load a pre-trained YOLOv10 model (NMS-free)
model_v10 = YOLO("yolov10n.pt")

# Load a pre-trained YOLOv7 model
model_v7 = YOLO("yolov7.pt")

# Run inference on an image
# The API handles underlying differences automatically
results_v10 = model_v10("https://ultralytics.com/images/bus.jpg")
results_v7 = model_v7("https://ultralytics.com/images/bus.jpg")

# Print results
for result in results_v10:
    result.show()  # Display predictions

Écosystème et pérennité

Bien que YOLOv7 et YOLOv10 soient puissants, l'écosystème Ultralytics est en constante évolution. Le dernier modèle YOLO11 s'appuie sur les leçons tirées de v7 (agrégation de fonctionnalités) et de v10 (efficacité).

  • Bien maintenu : Des mises à jour fréquentes assurent la compatibilité avec les dernières versions de PyTorch, CUDA et les formats d’exportation (CoreML, ONNX, TensorRT).
  • Efficacité de la mémoire : Les modèles Ultralytics sont conçus pour minimiser l’utilisation de la VRAM GPU pendant l’entraînement, permettant des tailles de lots plus importantes sur du matériel grand public par rapport à de nombreuses alternatives basées sur transformateur (comme RT-DETR).
  • Efficacité de l'entraînement : Grâce aux hyperparamètres pré-réglés et à l'analyse « intelligente » des ensembles de données, la convergence de l'entraînement est souvent plus rapide, ce qui permet de réduire les coûts de calcul.

Pour les développeurs qui démarrent de nouveaux projets aujourd'hui, il est fortement recommandé d'explorer YOLO11, car il offre un équilibre raffiné de la vitesse observée dans YOLOv10 et de l'extraction robuste de caractéristiques des prédécesseurs, ainsi qu'une prise en charge native des tâches au-delà de la simple détection, telles que la segmentation d'instance et l'estimation de pose.

Explorer d'autres modèles

Si vous souhaitez d'autres comparaisons ou différentes architectures, considérez ces ressources :

  • YOLO11 vs YOLOv8 - Comparaison des derniers modèles à la pointe de la technologie.
  • RT-DETR vs YOLOv10 - Détection basée sur les transformateurs vs. efficacité basée sur les CNN.
  • YOLOv9 vs YOLOv10 - Examen des informations de gradient programmables (PGI) par rapport aux conceptions sans NMS.

Commentaires