Skip to content

YOLOv7 : Un sac de gratuités formable

YOLOv7 est un détecteur d'objets en temps réel de pointe qui surpasse tous les détecteurs d'objets connus en termes de vitesse et de précision dans une plage allant de 5 FPS à 160 FPS. Il a la plus grande précision (56,8 % AP) parmi tous les détecteurs d'objets en temps réel connus avec 30 FPS ou plus sur GPU V100. De plus, YOLOv7 surpasse d'autres détecteurs d'objets tels que YOLOR, YOLOX, Scaled-YOLOv4, YOLOv5, et bien d'autres en termes de vitesse et de précision. Le modèle est entraîné sur l'ensemble de données MS COCO à partir de zéro, sans utiliser d'autres ensembles de données ou des poids pré-entraînés. Le code source de YOLOv7 est disponible sur GitHub.

Comparaison de YOLOv7 avec les détecteurs d'objets SOTA

Comparaison des détecteurs d'objets SOTA

D'après les résultats du tableau de comparaison YOLO , nous savons que la méthode proposée présente le meilleur compromis vitesse/précision de manière globale. Si nous comparons YOLOv7-tiny-SiLU avec YOLOv5-N (r6.1), notre méthode est 127 fps plus rapide et 10,7% plus précise sur AP. De plus, YOLOv7 a 51,4 % d'AP à une fréquence d'images de 161 fps, alors que PPYOLOE-L avec le même AP n'a qu'une fréquence d'images de 78 fps. En termes d'utilisation des paramètres, YOLOv7 est 41 % moins performant que PPYOLOE-L. Si nous comparons YOLOv7-X avec une vitesse d'inférence de 114 fps à YOLOv5-L (r6.1) avec une vitesse d'inférence de 99 fps, YOLOv7-X peut améliorer l'AP de 3,9 %. Si l'on compare YOLOv7-X à YOLOv5-X (r6.1) d'échelle similaire, la vitesse d'inférence de YOLOv7-X est plus rapide de 31 fps. En outre, en termes de quantité de paramètres et de calculs, YOLOv7-X réduit de 22% les paramètres et de 8% les calculs par rapport à YOLOv5-X (r6.1), mais améliore la PA de 2,2%(Source).

Modèle Params
(M)
FLOPs
(G)
Taille
(pixels)
FPS APtest/ val
50-95
APtest
50
APtest
75
APtest
S
APtest
M
APtest
L
YOLOX-S 9.0M 26.8G 640 102 40.5% / 40.5% - - - - -
YOLOX-M 25.3M 73.8G 640 81 47.2% / 46.9% - - - - -
YOLOX-L 54.2M 155.6G 640 69 50.1% / 49.7% - - - - -
YOLOX-X 99.1M 281.9G 640 58 51.5% / 51.1% - - - - -
PPYOLOE-S 7.9M 17.4G 640 208 43.1% / 42.7% 60.5% 46.6% 23.2% 46.4% 56.9%
PPYOLOE-M 23.4M 49.9G 640 123 48.9% / 48.6% 66.5% 53.0% 28.6% 52.9% 63.8%
PPYOLOE-L 52.2M 110.1G 640 78 51.4% / 50.9% 68.9% 55.6% 31.4% 55.3% 66.1%
PPYOLOE-X 98.4M 206.6G 640 45 52.2% / 51.9% 69.9% 56.5% 33.3% 56.3% 66.4%
YOLOv5-N (r6.1) 1.9M 4.5G 640 159 - / 28.0% - - - - -
YOLOv5-S (r6.1) 7.2M 16.5G 640 156 - / 37.4% - - - - -
YOLOv5-M (r6.1) 21.2M 49.0G 640 122 - / 45.4% - - - - -
YOLOv5-L (r6.1) 46.5M 109.1G 640 99 - / 49.0% - - - - -
YOLOv5-X (r6.1) 86.7M 205.7G 640 83 - / 50.7% - - - - -
YOLOR-CSP 52.9M 120.4G 640 106 51.1% / 50.8% 69.6% 55.7% 31.7% 55.3% 64.7%
YOLOR-CSP-X 96.9M 226.8G 640 87 53.0% / 52.7% 71.4% 57.9% 33.7% 57.1% 66.8%
YOLOv7-tiny-SiLU 6.2M 13.8G 640 286 38.7% / 38.7% 56.7% 41.7% 18.8% 42.4% 51.9%
YOLOv7 36.9M 104.7G 640 161 51.4% / 51.2% 69.7% 55.9% 31.8% 55.5% 65.0%
YOLOv7-X 71.3M 189.9G 640 114 53.1% / 52.9% 71.2% 57.8% 33.8% 57.1% 67.4%
YOLOv5-N6 (r6.1) 3.2M 18.4G 1280 123 - / 36.0% - - - - -
YOLOv5-S6 (r6.1) 12.6M 67.2G 1280 122 - / 44.8% - - - - -
YOLOv5-M6 (r6.1) 35.7M 200.0G 1280 90 - / 51.3% - - - - -
YOLOv5-L6 (r6.1) 76.8M 445.6G 1280 63 - / 53.7% - - - - -
YOLOv5-X6 (r6.1) 140.7M 839.2G 1280 38 - / 55.0% - - - - -
YOLOR-P6 37.2M 325.6G 1280 76 53.9% / 53.5% 71.4% 58.9% 36.1% 57.7% 65.6%
YOLOR-W6 79.8G 453.2G 1280 66 55.2% / 54.8% 72.7% 60.5% 37.7% 59.1% 67.1%
YOLOR-E6 115.8M 683.2G 1280 45 55.8% / 55.7% 73.4% 61.1% 38.4% 59.7% 67.7%
YOLOR-D6 151.7M 935.6G 1280 34 56.5% / 56.1% 74.1% 61.9% 38.9% 60.4% 68.7%
YOLOv7-W6 70.4M 360.0G 1280 84 54.9% / 54.6% 72.6% 60.1% 37.3% 58.7% 67.1%
YOLOv7-E6 97.2M 515.2G 1280 56 56.0% / 55.9% 73.5% 61.2% 38.0% 59.9% 68.4%
YOLOv7-D6 154.7M 806.8G 1280 44 56.6% / 56.3% 74.0% 61.8% 38.8% 60.1% 69.5%
YOLOv7-E6E 151.7M 843.2G 1280 36 56.8% / 56.8% 74.4% 62.1% 39.3% 60.5% 69.0%

Vue d'ensemble

La détection d'objets en temps réel est un élément important dans de nombreux systèmes de vision par ordinateur, notamment le suivi de plusieurs objets, la conduite autonome, la robotique et l'analyse d'images médicales. Ces dernières années, le développement de la détection d'objets en temps réel s'est concentré sur la conception d'architectures efficaces et l'amélioration de la vitesse d'inférence de divers CPU, GPU et unités de traitement neuronal (NPU). YOLOv7 prend en charge les appareils mobiles GPU et GPU , de la périphérie au nuage.

Contrairement aux détecteurs d'objets en temps réel traditionnels qui se concentrent sur l'optimisation de l'architecture, YOLOv7 introduit un accent sur l'optimisation du processus de formation. Cela inclut des modules et des méthodes d'optimisation conçus pour améliorer la précision de la détection d'objets sans augmenter le coût de l'inférence, un concept connu sous le nom de "trainable bag-of-freebies".

Caractéristiques principales

YOLOv7 présente plusieurs caractéristiques essentielles :

  1. Re-paramétrage du modèle: YOLOv7 propose un modèle re-paramétré planifié, qui est une stratégie applicable aux couches de différents réseaux avec le concept de chemin de propagation du gradient.

  2. Affectation dynamique des étiquettes: La formation du modèle avec plusieurs couches de sortie pose un nouveau problème : "Comment attribuer des cibles dynamiques aux sorties des différentes branches ?". Pour résoudre ce problème, YOLOv7 introduit une nouvelle méthode d'attribution d'étiquettes appelée attribution d'étiquettes guidée de la branche grossière à la branche fine.

  3. Mise à l'échelle étendue et composée: YOLOv7 propose des méthodes d'"extension" et de "mise à l'échelle composée" pour le détecteur d'objets en temps réel qui peuvent utiliser efficacement les paramètres et le calcul.

  4. Efficacité: La méthode proposée par YOLOv7 peut réduire efficacement environ 40 % des paramètres et 50 % des calculs du détecteur d'objets en temps réel le plus récent, et a une vitesse d'inférence plus rapide et une plus grande précision de détection.

Exemples d'utilisation

Au moment de la rédaction de cet article, Ultralytics ne prend actuellement pas en charge les modèles YOLOv7. Par conséquent, tout utilisateur intéressé par l'utilisation de YOLOv7 devra se référer directement au dépôt GitHub de YOLOv7 pour obtenir des instructions d'installation et d'utilisation.

Voici un bref aperçu des étapes typiques que tu pourrais suivre pour utiliser YOLOv7 :

  1. Visite le dépôt GitHub de YOLOv7 : https://github.com/WongKinYiu/yolov7.

  2. Suis les instructions fournies dans le fichier README pour l'installation. Il s'agit généralement de cloner le dépôt, d'installer les dépendances nécessaires et de configurer toutes les variables d'environnement nécessaires.

  3. Une fois l'installation terminée, tu peux entraîner et utiliser le modèle conformément aux instructions d'utilisation fournies dans le référentiel. Il s'agit généralement de préparer ton jeu de données, de configurer les paramètres du modèle, d'entraîner le modèle, puis d'utiliser le modèle entraîné pour effectuer la détection d'objets.

Note que les étapes spécifiques peuvent varier en fonction de ton cas d'utilisation particulier et de l'état actuel du dépôt YOLOv7. Par conséquent, il est fortement recommandé de se référer directement aux instructions fournies dans le dépôt GitHub de YOLOv7.

Nous regrettons les inconvénients que cela peut causer et nous nous efforcerons de mettre à jour ce document avec des exemples d'utilisation pour Ultralytics une fois que la prise en charge de YOLOv7 sera mise en œuvre.

Citations et remerciements

Nous tenons à remercier les auteurs de YOLOv7 pour leurs contributions significatives dans le domaine de la détection d'objets en temps réel :

@article{wang2022yolov7,
  title={{YOLOv7}: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors},
  author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
  journal={arXiv preprint arXiv:2207.02696},
  year={2022}
}

L'article original de YOLOv7 peut être consulté sur arXiv. Les auteurs ont mis leur travail à la disposition du public, et la base de code est accessible sur GitHub. Nous apprécions leurs efforts pour faire avancer le domaine et rendre leur travail accessible à la communauté élargie.

FAQ

Qu'est-ce que YOLOv7 et pourquoi est-il considéré comme une percée dans la détection d'objets en temps réel ?

YOLOv7 est un modèle de pointe de détection d'objets en temps réel qui atteint une vitesse et une précision inégalées. Il surpasse d'autres modèles, tels que YOLOX, YOLOv5 et PPYOLOE, à la fois en termes d'utilisation des paramètres et de vitesse d'inférence. Les caractéristiques distinctives de YOLOv7 comprennent le re-paramétrage du modèle et l'attribution dynamique d'étiquettes, qui optimisent ses performances sans augmenter les coûts d'inférence. Pour plus de détails techniques sur son architecture et les mesures de comparaison avec d'autres détecteurs d'objets de pointe, consulter l'article sur YOLOv7.

En quoi YOLOv7 est-il plus performant que les modèles précédents de YOLO comme YOLOv4 et YOLOv5?

YOLOv7 introduit plusieurs innovations, notamment le re-paramétrage du modèle et l'attribution dynamique d'étiquettes, qui améliorent le processus de formation et la précision de l'inférence. Par rapport à YOLOv5, YOLOv7 améliore considérablement la vitesse et la précision. Par exemple, YOLOv7-X améliore la précision de 2,2 % et réduit les paramètres de 22 % par rapport à YOLOv5-X. Des comparaisons détaillées peuvent être trouvées dans le tableau de performance YOLOv7 comparaison avec les détecteurs d'objets SOTA.

Puis-je utiliser YOLOv7 avec les outils et plateformes Ultralytics ?

Pour l'instant, Ultralytics ne prend pas directement en charge YOLOv7 dans ses outils et plateformes. Les utilisateurs intéressés par l'utilisation de YOLOv7 doivent suivre les instructions d'installation et d'utilisation fournies dans le dépôt GitHub de YOLOv7. Pour d'autres modèles de pointe, tu peux explorer et t'entraîner à l'aide d'outils Ultralytics comme Ultralytics HUB.

Comment installer et exécuter YOLOv7 pour un projet de détection d'objets personnalisé ?

Pour installer et faire fonctionner YOLOv7, suis les Ă©tapes suivantes :

  1. Clone le dépôt YOLOv7 :
    git clone https://github.com/WongKinYiu/yolov7
    
  2. Navigue vers le répertoire cloné et installe les dépendances :
    cd yolov7
    pip install -r requirements.txt
    
  3. Prépare ton jeu de données et configure les paramètres du modèle selon les instructions d'utilisation fournies dans le référentiel. Pour plus de conseils, visite le dépôt GitHub YOLOv7 pour obtenir les dernières informations et mises à jour.

Quelles sont les principales caractéristiques et optimisations introduites dans YOLOv7 ?

YOLOv7 offre plusieurs fonctionnalités clés qui révolutionnent la détection d'objets en temps réel :

  • Re-paramĂ©trage du modèle: AmĂ©liore les performances du modèle en optimisant les chemins de propagation du gradient.
  • Attribution dynamique d'Ă©tiquettes: Utilise une mĂ©thode guidĂ©e de plomb grossier Ă  fin pour attribuer des cibles dynamiques aux sorties de diffĂ©rentes branches, ce qui amĂ©liore la prĂ©cision.
  • Mise Ă  l'Ă©chelle Ă©tendue et composĂ©e: Utilise efficacement les paramètres et les calculs pour adapter le modèle Ă  diverses applications en temps rĂ©el.
  • EfficacitĂ©: RĂ©duit le nombre de paramètres de 40 % et les calculs de 50 % par rapport Ă  d'autres modèles de pointe tout en atteignant des vitesses d'infĂ©rence plus rapides. Pour plus de dĂ©tails sur ces caractĂ©ristiques, voir la section Vue d'ensemble de YOLOv7.


Créé le 2023-11-12, Mis à jour le 2024-07-04
Auteurs : glenn-jocher (8), sergiuwaxmann (1)

Commentaires