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. En outre, 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 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 dans son ensemble. 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 pour 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 met l'accent sur l'optimisation du processus d'apprentissage. 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 "trainingable bag-of-freebies".
Caractéristiques principales
YOLOv7 présente plusieurs caractéristiques essentielles :
-
Re-paramétrage du modèle: YOLOv7 propose un modèle re-paramétré planifié, qui est une stratégie applicable aux couches dans différents réseaux avec le concept de chemin de propagation du gradient.
-
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 grossier à fin.
-
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 les calculs.
-
Efficacité: La méthode proposée par YOLOv7 permet de 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 offre une vitesse d'inférence plus rapide et une précision de détection plus élevée.
Exemples d'utilisation
Au moment de la rédaction de ce document, Ultralytics ne prend pas en charge les modèles YOLOv7. Par conséquent, les utilisateurs intéressés par YOLOv7 devront se référer directement au dépôt GitHub de YOLOv7 pour les instructions d'installation et d'utilisation.
Voici un bref aperçu des étapes typiques de l'utilisation de YOLOv7 :
-
Visitez le dépôt GitHub YOLOv7 : https://github.com/WongKinYiu/yolov7.
-
Suivez 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 les variables d'environnement requises.
-
Une fois l'installation terminée, vous pouvez entraîner et utiliser le modèle conformément aux instructions d'utilisation fournies dans le référentiel. Cela implique généralement de préparer votre 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.
Veuillez noter que les étapes spécifiques peuvent varier en fonction de votre cas d'utilisation 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 YOLOv7 GitHub.
Nous regrettons la gêne occasionnée et nous nous efforcerons de mettre à jour ce document avec des exemples d'utilisation de 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 :
L'article original sur YOLOv7 est disponible sur arXiv. Les auteurs ont rendu leur travail 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é au sens large.
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. YOLOv7 se distingue notamment par le re-paramétrage de son 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, veuillez vous référer à l'article sur YOLOv7.
En quoi YOLOv7 est-il plus performant que les modèles précédents de YOLO tels que 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 supporte pas directement 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, vous pouvez explorer et vous entraîner à l'aide d'outils Ultralytics tels que Ultralytics HUB.
Comment installer et exécuter YOLOv7 pour un projet de détection d'objets personnalisé ?
Pour installer et exécuter YOLOv7, suivez les étapes suivantes :
- Cloner le dépôt YOLOv7 :
- Naviguez vers le répertoire cloné et installez les dépendances :
- Préparez votre jeu de données et configurez les paramètres du modèle conformément aux instructions d'utilisation fournies dans le référentiel. Pour plus d'informations, visitez le dépôt GitHub YOLOv7 pour obtenir les dernières informations et mises à jour.
Quelles sont les principales fonctionnalités 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 par un fil conducteur allant de grossier à fin pour attribuer des cibles dynamiques aux sorties dans 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 élevées.
Pour plus de détails sur ces fonctionnalités, voir la section Vue d'ensemble de YOLOv7.