Auteurs : Chu Yi, Kai Heng, etc.
Récemment, le département d'intelligence visuelle de Meituan a développé YOLOv6, un framework de détection de cibles dédié aux applications industrielles, qui peut se concentrer à la fois sur la précision de la détection et l'efficacité du raisonnement. Au cours du processus de recherche et développement, le département d’intelligence visuelle a continué à explorer et à optimiser, tout en s’appuyant sur certains développements de pointe et résultats de recherches scientifiques du monde universitaire et de l’industrie. Les résultats expérimentaux sur COCO, l'ensemble de données de détection de cibles faisant autorité, montrent que YOLOv6 surpasse les autres algorithmes de même taille en termes de précision et de vitesse de détection. Il prend également en charge le déploiement d'une variété de plates-formes différentes, simplifiant considérablement le travail d'adaptation lors du déploiement du projet. . Ceci est open source, dans l'espoir d'aider davantage d'étudiants.
YOLOv6 est un framework de détection de cibles développé par le département d'intelligence visuelle de Meituan et dédié aux applications industrielles. Ce cadre se concentre à la fois sur la précision de la détection et sur l'efficacité de l'inférence. Parmi les modèles de taille couramment utilisés dans l'industrie : YOLOv6-nano a une précision allant jusqu'à 35,0 % AP sur COCO et une vitesse d'inférence allant jusqu'à 1242 FPS sur. La précision de T4 ; YOLOv6-s peut atteindre 43,1 % AP sur COCO, et sa vitesse d'inférence peut atteindre 520 FPS sur T4. En termes de déploiement, YOLOv6 prend en charge le déploiement de différentes plateformes telles que GPU (TensorRT), CPU (OPENVINO), ARM (MNN, TNN, NCNN), ce qui simplifie grandement le travail d'adaptation lors du déploiement du projet. Actuellement, le projet est open source sur Github, portail : YOLOv6. Les amis qui en ont besoin sont les bienvenus chez Star pour le récupérer et y accéder à tout moment.
En tant que technologie de base dans le domaine de la vision par ordinateur, la détection de cibles a été largement utilisée dans l'industrie, parmi lesquelles les algorithmes de la série YOLO ont de meilleures performances globales, devenant progressivement le framework privilégié pour la plupart des applications industrielles. Jusqu'à présent, l'industrie a dérivé de nombreux cadres de détection YOLO, parmi lesquels YOLOv5[1], YOLOX[2] et PP-YOLOE[3] sont les plus représentatifs. Cependant, en utilisation réelle, nous avons constaté que. Avec les frameworks ci-dessus, il reste encore beaucoup à faire en termes de rapidité et de précision. Sur cette base, nous avons développé un nouveau cadre de détection de cibles - YOLOv6 en étudiant et en s'appuyant sur les technologies avancées existantes dans l'industrie. Le framework prend en charge la chaîne complète des exigences des applications industrielles telles que la formation de modèles, l'inférence et le déploiement multiplateforme, et a apporté un certain nombre d'améliorations et d'optimisations au niveau des algorithmes telles que la structure du réseau et les stratégies de formation sur l'ensemble de données COCO, YOLOv6. a à la fois précision et vitesse. Surpassant d'autres algorithmes de même taille, les résultats pertinents sont présentés dans la figure 1 ci-dessous :
Figure 1-1 Comparaison des performances des modèles YOLOv6 de différentes tailles et d'autres modèles
.Figure 1-2 YOLOv6 Comparaison des performances avec d'autres modèles à différentes résolutions Figure 1-1 montre la comparaison des performances de chaque algorithme de détection sous des réseaux de différentes tailles. Les points sur la courbe représentent respectivement le. performances de l'algorithme de détection sous des réseaux de différentes tailles (s /tiny/nano), comme le montre la figure, YOLOv6 surpasse les autres algorithmes de la série YOLO de même taille en termes de précision et de vitesse. La figure 1-2 montre la comparaison des performances de chaque modèle de réseau de détection lorsque la résolution d'entrée change. Les points sur la courbe de gauche à droite représentent le moment où la résolution de l'image augmente séquentiellement (384/448/512/576/640). pour les performances de ce modèle, il ressort de la figure que YOLOv6 conserve toujours un grand avantage en termes de performances sous différentes résolutions.
YOLOv6 a apporté de nombreuses améliorations principalement dans les stratégies de colonne vertébrale, de cou, de tête et d'entraînement :
Le Backbone et le Neck utilisés par YOLOv5/YOLOX sont tous deux construits sur CSPNet[5], en utilisant une approche multi-branches et une structure résiduelle. Pour le matériel tel que les GPU, cette structure augmentera la latence dans une certaine mesure et réduira l'utilisation de la bande passante mémoire. La figure 2 ci-dessous est une introduction au modèle Roofline[8] dans le domaine de l'architecture informatique, montrant la relation entre la puissance de calcul et la bande passante mémoire dans le matériel.
Figure 2 Diagramme d'introduction du modèle de ligne de toit
Nous avons donc repensé et optimisé Backbone et Neck sur la base de l'idée de conception de réseau neuronal sensible au matériel. Cette idée est basée sur les caractéristiques du matériel et les caractéristiques du cadre d'inférence/cadre de compilation. Elle prend le matériel et la structure conviviale comme principe de conception lors de la construction du réseau, elle prend en compte de manière globale la puissance de calcul du matériel et la bande passante mémoire. , caractéristiques d'optimisation de la compilation, capacités de représentation du réseau, etc., puis obtenez une structure de réseau rapide et bonne. Pour les deux composants de détection repensés ci-dessus, nous les appelons respectivement EfficientRep Backbone et Rep-PAN Neck dans YOLOv6. Leurs principales contributions sont :
RepVGG[4] La structure Style est une structure reparamétrable qui a une topologie multi-branches pendant la formation et peut être fusionnée de manière équivalente en une seule convolution 3x3 lors du déploiement réel (Fusion Le processus est illustré dans la figure 3 ci-dessous). Grâce à la structure de convolution fusionnée 3x3, la puissance de calcul du matériel informatique intensif (tel que le GPU) peut être utilisée efficacement, et l'aide des frameworks de compilation NVIDIA cuDNN et Intel MKL qui ont été hautement optimisés sur GPU/CPU peut également être obtenue. .
Les expériences montrent que grâce à la stratégie ci-dessus, YOLOv6 réduit les retards matériels et améliore considérablement la précision de l'algorithme, rendant le réseau de détection plus rapide et plus fort. En prenant le modèle nanométrique comme exemple, par rapport à la structure de réseau utilisée par YOLOv5-nano, cette méthode améliore la vitesse de 21 % et augmente la précision de 3,6 % AP.
Figure 3 Processus de fusion de l'opérateur Rep [4]
EfficientRep Backbone : En termes de conception du Backbone, nous avons conçu un Backbone efficace basé sur l'opérateur Rep ci-dessus. Comparé au CSP-Backbone utilisé dans YOLOv5, ce Backbone peut utiliser efficacement la puissance de calcul du matériel (tel que le GPU) et possède également de fortes capacités de représentation.
La figure 4 ci-dessous est le diagramme de structure de conception spécifique d'EfficientRep Backbone. Nous avons remplacé la couche Conv ordinaire par stride=2 dans Backbone par la couche RepConv avec stride=2. Dans le même temps, le CSP-Block d'origine est repensé en RepBlock, où le premier RepConv de RepBlock transformera et alignera la dimension du canal. De plus, nous optimisons le SPPF d'origine pour en faire un SimSPPF plus efficace.
Figure 4 Schéma de la structure EfficientRep Backbone
Rep-PAN : En termes de conception du cou, afin de rendre son raisonnement sur le matériel plus efficace pour obtenir un meilleur équilibre entre précision et vitesse, Nous sommes basés sur l'idée de conception de réseau neuronal sensible au matériel, une structure de réseau de fusion de fonctionnalités plus efficace est conçue pour YOLOv6.
Rep-PAN est basé sur la topologie PAN[6], utilisant RepBlock pour remplacer le CSP-Block utilisé dans YOLOv5, et en même temps ajustant les opérateurs dans le Neck global, afin d'obtenir un raisonnement efficace sur le le matériel maintient de bonnes capacités de fusion de fonctionnalités multi-échelles (Le diagramme de structure Rep-PAN est illustré dans la figure 5 ci-dessous).
Figure 5 Diagramme de structure Rep-PAN
Dans YOLOv6, nous adoptons la structure de la tête de détection découplée (Tête découplée) et la réalisons avec une conception simplifiée. La tête de détection du YOLOv5 d'origine est implémentée en fusionnant et partageant les branches de classification et de régression, tandis que la tête de détection de YOLOX découple les branches de classification et de régression et ajoute deux couches convolutives 3x3 supplémentaires, bien que la précision de détection soit améliorée, mais le réseau. le retard est augmenté dans une certaine mesure.
Par conséquent, nous avons rationalisé la conception de la tête de découplage, en tenant compte de l'équilibre entre les capacités de représentation des opérateurs associées et la surcharge informatique matérielle, et avons repensé une tête de découplage plus efficace en utilisant la stratégie des canaux hybrides. La structure réduit le délai tout en maintenant la précision. , et atténue la surcharge de retard supplémentaire causée par la convolution 3x3 dans la tête de découplage. En menant des expériences d'ablation sur des modèles nanométriques et en comparant les structures de tête de découplage avec le même nombre de canaux, la précision est augmentée de 0,2 % AP et la vitesse est augmentée de 6,8 %.
Figure 6 Schéma de structure efficace de la tête découplée
Afin d'améliorer encore la précision de la détection, nous avons absorbé et appris des progrès de la recherche avancée d'autres cadres de détection dans le monde universitaire et industrie : paradigme sans ancre et sans ancre, stratégie d'attribution d'étiquettes SimOTA et perte de régression du cadre de délimitation SIoU.
Paradigme sans ancre sans ancre
YOLOv6 adopte une méthode de détection sans ancre plus concise. Étant donné que les détecteurs basés sur Anchor doivent effectuer une analyse de cluster avant la formation pour déterminer l'ensemble d'ancrage optimal, cela augmentera la complexité du détecteur dans une certaine mesure, en même temps, dans certaines applications de pointe, un grand nombre de résultats de détection doivent être obtenus ; être transporté entre les étapes matérielles entraînera également des retards supplémentaires. Le paradigme sans ancre sans ancre a été largement utilisé ces dernières années en raison de sa forte capacité de généralisation et de sa logique de décodage plus simple. Après des recherches expérimentales sur Anchor-free, nous avons constaté que par rapport au retard supplémentaire causé par la complexité du détecteur basé sur Anchor, le détecteur Anchor-free présente une amélioration de 51 % en termes de vitesse.
Stratégie d'attribution d'étiquettes SimOTA
Afin d'obtenir davantage d'échantillons positifs de haute qualité, YOLOv6 introduit l'algorithme SimOTA [4] pour attribuer dynamiquement des échantillons positifs afin d'améliorer encore la précision de la détection. La stratégie d'allocation d'étiquettes de YOLOv5 est basée sur la correspondance de forme et augmente le nombre d'échantillons positifs grâce à la stratégie de correspondance entre grilles, faisant ainsi converger rapidement le réseau. Cependant, cette méthode est une méthode d'allocation statique et ne sera pas ajustée avec la. processus de formation du réseau.
Ces dernières années, de nombreuses méthodes basées sur l'attribution dynamique d'étiquettes ont vu le jour. De telles méthodes alloueront des échantillons positifs en fonction de la sortie du réseau pendant le processus de formation, générant ainsi davantage d'échantillons positifs de haute qualité, ce qui favorise la progression du réseau. optimisation. Par exemple, OTA[7] modélise l'appariement d'échantillons comme un problème de transmission optimal et obtient la meilleure stratégie d'appariement d'échantillons sous informations globales pour améliorer la précision. Cependant, OTA utilise l'algorithme Sinkhorn-Knopp, ce qui entraîne un temps de formation plus long. [4] L'algorithme utilise la stratégie d'approximation Top-K pour obtenir la meilleure correspondance de l'échantillon, ce qui accélère considérablement la formation. Par conséquent, YOLOv6 adopte la stratégie d'allocation dynamique SimOTA et la combine avec le paradigme sans ancre pour augmenter la précision de détection moyenne de 1,3 % AP sur le modèle nanométrique.
Perte de régression de la boîte englobante SIoU
Afin d'améliorer encore la précision de la régression, YOLOv6 utilise SIoU[9]fonction de perte de régression de la boîte englobante pour superviser l'apprentissage du réseau. La formation des réseaux de détection de cibles nécessite généralement la définition d'au moins deux fonctions de perte : la perte de classification et la perte de régression de la boîte englobante, et la définition de la fonction de perte a souvent un impact plus important sur la précision de la détection et la vitesse de formation.
Ces dernières années, les pertes de régression de boîte englobante couramment utilisées incluent la perte IoU, GIoU, CIoU, DIoU, etc. Ces fonctions de perte mesurent la boîte de prédiction et la boîte cible en tenant compte de facteurs tels que le degré de chevauchement, la distance du point central et rapport hauteur/largeur. L'écart entre eux peut guider le réseau pour minimiser la perte afin d'améliorer la précision de la régression, mais ces méthodes ne prennent pas en compte la correspondance de la direction entre la boîte de prédiction et la boîte cible. La fonction de perte SIoU redéfinit la perte de distance en introduisant l'angle vectoriel entre les régressions requises, réduisant ainsi efficacement le degré de liberté de régression, accélérant la convergence du réseau et améliorant encore la précision de la régression. En utilisant la perte SIoU pour les expériences sur les YOLOv6, par rapport à la perte CIoU, la précision de détection moyenne est augmentée de 0,3 % AP.
Après les stratégies d'optimisation et les améliorations ci-dessus, YOLOv6 a atteint d'excellentes performances dans plusieurs modèles de différentes tailles. Le tableau 1 ci-dessous montre les résultats expérimentaux d'ablation de YOLOv6-nano. D'après les résultats expérimentaux, nous pouvons voir que notre réseau de détection auto-conçu a apporté de grands gains en termes de précision et de rapidité.
Tableau 1 Résultats expérimentaux de YOLOv6-nano ablation Le tableau 2 ci-dessous montre les résultats expérimentaux de YOLOv6 par rapport à d'autres algorithmes de la série YOLO actuellement courants. Comme le montre le tableau :
Tableau 2 Comparaison des performances des modèles YOLOv6 de différentes tailles avec d'autres modèles
Cet article présente l'optimisation et l'expérience pratique du département d'intelligence visuelle de Meituan dans le cadre de détection de cibles, en termes de stratégie de formation, de réseau principal et. la fusion de fonctionnalités multi-échelles, la détection d'abord et d'autres aspects ont été pensés et optimisés, et un nouveau cadre de détection-YOLOv6 a été conçu. L'intention initiale est venue de résoudre des problèmes pratiques rencontrés lors de la mise en œuvre d'applications industrielles.
Lors de la construction du framework YOLOv6, nous avons exploré et optimisé de nouvelles méthodes, telles que EfficientRep Backbone, Rep-Neck et Efficient Decoupled Head, basées sur des idées de conception de réseaux neuronaux sensibles au matériel, et également absorbées et apprises du monde universitaire. . et quelques avancées et résultats de pointe dans l'industrie, tels que la perte de régression sans ancre, SimOTA et SIoU. Les résultats expérimentaux sur l'ensemble de données COCO montrent que YOLOv6 est parmi les meilleurs en termes de précision et de vitesse de détection.
À l'avenir, nous continuerons à construire et à améliorer l'écosystème YOLOv6. Le travail principal comprend les aspects suivants :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!