Analyse approfondie du principe du modèle YOLOv3

Aperçu

(1) YOLOv3 est la première fois dans la série YOLO que des connexions résiduelles sont introduites pour résoudre le problème du gradient de disparition dans les réseaux profonds (si c'est la première fois, cela sera vérifié plus tard). L'épine dorsale réelle utilisée est DarkNet53.

(2) L'amélioration la plus significative est aussi la raison qui contribue le plus à vos points : la détection des cibles s'effectue de la même manière sur trois échelles. Ne vous inquiétez pas de la manière dont cet objectif est atteint, de toute façon, il présente un certain degré de robustesse face aux grands objectifs, aux petits objectifs et aux objectifs de taille moyenne.

(3) Modifier la fonction de perte du Softmax précédent en Logit, ce qui signifie découpler chaque catégorie

(4) Dans l'étape d'inférence finale, une NMS de suppression non maximale est effectuée sur les résultats de prédiction des trois couches de détection.

Le réseau rose dans le coin supérieur gauche de l'image ci-dessous montre « Présentation des connexions résiduelles »

Les trois photos de chiots au bas de l'image ci-dessous, composées de "petit", "moyen" et "grand", représentent "l'utilisation de la même méthode de détection de cible pour trois cibles de tailles différentes".

Grâce au diagramme schématique de la vitesse et de la précision du modèle ci-dessous, on peut voir que YOLOv3 est beaucoup plus rapide que les autres modèles de la même période. 

1. Utilisation de DarkNet53 sur Backbone 

Quel est l’effet après l’amélioration de Backbone ?

Le backnon de YOLOv3 est DarkNet53.
——En comparant DarkNet19, nous pouvons constater qu'il a moins de paramètres que VGG16 (la taille du fichier modèle de VGG16 est de 528 Mo et le poids de DarkNet19 est de 80 Mo), et il est plus rapide (VGG16 = 9,4 s ; DarkNet19 = 6,2 ms ), mais la précision a augmenté (VGG16=90,0 ; DarkNet19=91,2)'

        Le backbone utilisé par YOLOv2 est DarkNet19'

        Pourquoi le nombre de paramètres dans DarkNet19 a-t-il été autant réduit ? Car le dernier composant de VGG, la couche Fully Connected, reprend beaucoup de paramètres. DarkNet19 a remplacé la couche entièrement connectée par autre chose, de sorte que le nombre de paramètres a été réduit de manière significative.

——ResNet101 et DarkNet53 ont tous deux des structures résiduelles. Cependant, par rapport à ResNet101, DarkNet53 a une précision légèrement supérieure (ResNet101=93,7, DarkNet53=93,7) et une vitesse plus rapide (ResNet101=20 ms ; DarkNet53=13,7 ms) lorsque le nombre de paramètres est similaire (ResNet101=160 Mo, DarkNet53=159 Mo). .

Pourquoi ce changement serait-il efficace ? expliquer

 Pourquoi DarkNet19 peut-il garantir une grande précision tout en réduisant plus rapidement le nombre de paramètres et de packaging ?

       

La réduction du nombre de paramètres et la vitesse plus rapide sont dues à : Tout d'abord, vous pouvez voir que les derniers modules de VGG16 sont trois couches Fully Connect. DarkNet19 à droite abandonne complètement le composant Fully Connected, puis remplace la position de la couche FC à la fin du modèle par une convolution 1×1. La couche FC fonctionne ici comme une transition. Par exemple, vous pouvez voir que Dark19 a une convolution 1×1 tous les quelques paquets, qui est principalement utilisée pour connecter différents composants.

                Les numéros qui apparaissent plusieurs fois dans l'image VGG16, tels que 512 et 256, font référence au numéro de chaîne. Le nombre de canaux de DarkNet19 correspond à la colonne Filtres dans l'image.

        

Pourquoi avons-nous besoin de connexions résiduelles ?

Pourquoi est-ce qu'en 2006, lors de la sortie des séries VGG et DarkNet19, le réseau le plus profond à l'époque était de 19 couches ? Par exemple, la série VGG la plus profonde de cette année-là était VGG19 et ne pouvait pas aller plus loin ?

        La réponse donnée par He Kaiming dans son article ResNet. Plus le réseau est profond, plus l'erreur de formation et l'erreur de test sont importantes, et la précision diminuera par rapport au réseau peu profond. Parce qu'à mesure que le réseau s'approfondit, une dispersion de gradient (disparition de gradient) se produira et de nombreuses informations sur les caractéristiques disparaîtront dans les couches plus profondes du réseau, ce qui entraînera l'incapacité de présenter les meilleurs résultats. Bien entendu, dans l'article ResNet, l'auteur He Kaiming a proposé la structure de conception du bloc résiduel de connexion résiduelle, qui permet au réseau de franchir la frontière des 19 couches et de continuer à s'étendre plus profondément.

Qu'est-ce qu'une connexion résiduelle ?

        Les données de sortie après divers processus de convolution et les données d'entrée d'origine sans divers processus sont additionnées pour former la connexion résiduelle.

Quels sont les avantages de l’ajout de connexions résiduelles ?

        La raison pour laquelle les données d'origine sont ajoutées aux données de sortie est que certaines caractéristiques disparaîtront au cours du processus de passage par le groupe de convolutions (c'est-à-dire que le dégradé disparaît). En ajoutant les données d'origine, les caractéristiques perdues ou les caractéristiques perdues peuvent être récupéré. Sans connexion résiduelle, vous ne pouvez pas capturer ces informations ou fonctionnalités utiles, et le score naturel sera faible.

        Avant d'ajouter le modèle résiduel, l'erreur de la ligne bleu clair (réseau à 18 couches) est inférieure à celle de la ligne rouge (réseau à 34 couches). Mais une fois la connexion résiduelle ajoutée, la ligne rouge est inférieure à la ligne bleu clair et l'erreur du réseau profond est inférieure à celle du réseau peu profond.

Puisque ResNet est si bon, pourquoi l'auteur ne l'a-t-il pas directement « emprunté » dans YOLOv3 et n'a-t-il pas utilisé directement ResNet comme backbone, mais a insisté pour concevoir un nouveau backbone DarkNet53 ?

        Le modèle ResNet étant trop volumineux (trop de paramètres), cela réduira la vitesse d'inférence et affectera les performances en temps réel. 

Par rapport à ResNet, quelles améliorations ont été apportées à DarkNet-53 ?

         Même point :

                Les deux utilisent une convolution 3 × 3 avec Stride = 2 au lieu de l'opération de pooling maximum (les deux ont des effets similaires. Ils réduisent tous deux la dimension d'une zone 3 × 3 en un nombre, mais l'un prend le maximum de ces 9 nombres. , la première consiste à utiliser l'opération de convolution pour intégrer 9 nombres en un seul nombre)

                Ils utilisent tous la structure résiduelle

        différence:

                Le nombre de convolutions dans la suite de couches convolutives est plus petit. Dans l'avant-dernière couche 101 de la figure ci-dessous, vous pouvez voir que le nombre de piles de noyau de convolution est de 3 (voir la deuxième colonne sur le côté droit de la figure ResNet, il y a quatre lignes et quatre grilles, chaque grille comporte trois lignes, indiquant trois circonvolutions). Le DarkNet53 à droite n'empile que 2 convolutions par suite de convolutions.

                La couche finale comporte moins de canaux. Le nombre de canaux dans la dernière couche de DarkNet53 est de 1 024, tandis que le nombre de canaux dans la dernière couche de ResNet101 est de 2 048, soit le double de celui de DarkNet53.

                Le nombre de blocs résiduels (notez qu'il ne s'agit pas du nombre de noyaux de convolution, mais du nombre de fois qu'un bloc résiduel est répété en série). ResNet101 utilise (3, 4, 23, 3), tandis que DarkNet utilise (1,2 ,8,4). La conception du nombre de blocs résiduels par ce dernier est plus raisonnable, tandis que la conception des blocs résiduels par le premier présente un certain degré de redondance.

Comparaison des performances de ResNet101 et DarkNet53

        Lorsque les deux ont une précision similaire (Top5, l'un est de 93,7 et l'autre de 93,8), la vitesse est augmentée de 50 % (BFLOP/s, ResNet101 est de 1039 et DarkNet53 est de 1457)

2. L'ajout du Feature Pyramid Network (FPN)

Objectif de rejoindre FPN :

        Afin d'identifier des cibles de différentes échelles, telles que des grandes cibles, des petites cibles et des cibles de taille moyenne.

Les couches réseau de différentes profondeurs sur le backnone produiront des cartes de caractéristiques de différentes tailles et résolutions (différentes tailles). Il existe également des différences dans les informations sémantiques contenues dans différentes couches de profondeur. Par exemple, les images haute résolution (cartes de caractéristiques de réseaux moins profonds) ont les caractéristiques d'informations sémantiques de niveau inférieur mais ne possèdent pas d'informations sémantiques de haut niveau. , Ce n'est pas convivial, mais c'est plus utile pour les tâches de positionnement.

(a) Pyramide d'images sélectionnées : une fois l'image mise à l'échelle (à grande échelle, à moyenne échelle, à petite échelle), une caractéristique d'image est extraite pour chaque échelle de l'image et un objet est reconnu respectivement. Notez que la mise à l'échelle de l'image utilise ici des fonctionnalités conçues artificiellement et que CNN n'a pas encore été utilisé.

        (b), (c) et (d) et FPN utilisent tous les réseaux neuronaux convolutifs CNN pour extraire des fonctionnalités. En effet, (1) cela évite la conception manuelle des fonctionnalités et réduit la charge de travail (2) CNN peut apprendre des fonctionnalités de niveau supérieur. Information sémantique (3) CNN est plus robuste aux changements d'échelle (à différentes échelles, par exemple, le même CNN fonctionne de la même manière à grande, petite et moyenne échelle, mais il ne dit pas qu'il reconnaît une petite cible, et le les performances deviennent bien pires. Bien sûr, c'est relatif.)

(b) Carte de fonctionnalités unique et (c) Hiérarchie pyramidale des fonctionnalités par rapport à (a) La pyramide d'images de fonctionnalités utilise un réseau neuronal convolutif pour mettre en œuvre le sous-échantillonnage des fonctionnalités au lieu d'extraire manuellement les fonctionnalités.

        YOLOv1 et YOLOv2 utilisent (b) une seule carte de fonctionnalités

La différence entre (b) et (c) est que (b) effectue uniquement la tâche de détection de cible sur la dernière couche du réseau. Et (c) la reconnaissance sera effectuée à grande, moyenne et petite échelle.

SSD est un modèle de détection de cible lancé après YOLOv1 et YOLOv2. Cela équivaut à approfondir quelques couches supplémentaires sur la base de la figure (c), puis à sortir avec trois têtes de détection de cibles d'échelles différentes dans les couches plus profondes. Les auteurs de SSD l'ont conçu de cette façon pour éviter d'utiliser des fonctionnalités contenant des informations sémantiques de bas niveau. Mais c'est précisément à cause de cela qu'il manque des informations sémantiques de bas niveau (informations sémantiques de haute résolution). En même temps, parce que le réseau est trop profond, il est redondant à ce point, ce qui ralentit la vitesse de raisonnement et le réel. -La performance temporelle n'est pas forte.

Sur la base des lacunes suivantes de (a)(b)(c),

        (a) Pyramide d'images caractérisée, le problème avec la pyramide d'images caractérisée est qu'elle utilise des couches de caractéristiques conçues manuellement pour les extraire une par une, ce qui est très redondant. Parce que si vous utilisez la convolution, chaque canal partage les paramètres du même noyau de convolution. Les paramètres du noyau de convolution sont partagés, ce qui réduit considérablement le nombre de paramètres.

        (b) Carte de caractéristiques unique, échelle unique : amélioration : le réseau neuronal convolutif est utilisé pour extraire automatiquement des caractéristiques et extraire des caractéristiques avec un plus petit nombre de paramètres, remplaçant ainsi la conception manuelle des caractéristiques extraites. Inconvénients : Autrement dit, une seule tête est connectée à la couche la plus profonde pour la reconnaissance, donc la reconnaissance des grandes cibles peut être très bonne, mais la reconnaissance des petites cibles peut être médiocre, ce qui rend les performances de reconnaissance des cibles de différentes tailles peu robustes. (les performances sont instables) ).

        (c) Hiérarchie pyramidale des caractéristiques : amélioration : par rapport à (b), l'amélioration réside dans le fait qu'il n'y a pas seulement une tête de reconnaissance au niveau le plus profond, mais plusieurs têtes à différentes couches de profondeur. Inconvénients : Cependant, il n'y a pas de bonne corrélation entre les temps de couche sémantique à différentes profondeurs, et il n'y a pas de fusion d'informations entre les trois têtes de détection indépendantes.

Par conséquent, FPN, figure (d), a apporté les améliorations suivantes

        (1) Réduisez la quantité de paramètres/calculs, conservez la profondeur existante (sous-échantillonnage : 8 fois, 16 fois, 32 fois) et n'approfondissez pas le réseau de manière redondante comme le SSD. 

        (2) Fusion d'informations sémantiques de haut niveau plus profondes/basse résolution/riches (des informations sémantiques riches de haut niveau sont bénéfiques pour les tâches de classification) et d'informations sémantiques moins profondes/haute résolution/de couche inférieure/informations spatiales riches. 

                La méthode spécifique est la suivante : à gauche, utilisez d'abord la convolution pour sous-échantillonner plusieurs fois, puis suréchantillonnez le niveau d'information sémantique le plus profond, puis fusionnez-le avec une couche moins profonde, puis suréchantillonnez plusieurs fois et fusionnez pour obtenir des informations sémantiques à plusieurs niveaux, et puis effectuez une détection de cible sur la tête de connexion.

                La méthode de fusion doit être notée ici. La fusion ici n'utilise pas d'ajout point par point, en ajoutant des éléments un par un, mais utilise un épissage concaté. Parce que l’ajout élément par élément masquera certaines informations de dégradé, c’est-à-dire masquera certaines fonctionnalités plus importantes. Cependant, l’utilisation de la fusion concaténée ne change pas l’importance des deux caractéristiques fusionnées, c’est-à-dire que les deux caractéristiques sont traitées de la même manière comme des caractéristiques d’importance similaire.

3. Basé sur une ancre

YOLOv3 est une méthode basée sur Anchor.

Supposons que l’image d’entrée soit une image à trois canaux RVB 416 × 416. YOLOv3 générera trois échelles de cartes de fonctionnalités, à savoir grande taille, taille moyenne et petite taille. Le nombre de cellules de grille pour ces trois méthodes de taille correspondante est respectivement de 13 × 13, 26 × 26 et 52 × 52. La raison pour laquelle le nombre de cellules de grille est de trois est que la longueur et la largeur du carré d'une cellule de grille de chaque échelle sont respectivement de 32 pixels, 16 et 8 pixels.

Chaque cellule de grille correspondra à 3 boîtes d'ancrage. ( Je ne sais pas encore très clairement à quelles trois boîtes d'ancrage correspond chaque cellule de grille et comment les dessiner ). Il y a trois photos de chiens ci-dessous. La couleur jaune est une identification des chiens. Les trois cases bleues sont les trois cases d'ancrage dessinées pour la cellule de grille située au milieu de l'image.

        Ainsi sur la photo du chiot ci-dessous, nous avons généré un total de (13×13+26×26+52×52)×3=10647 frames de détection

        13×13 détecte les cibles de grande taille.

                13 en découle. En utilisant un sous-échantillonnage de 32 fois comme norme, calculez la taille de la carte de caractéristiques sous-échantillonnée 416/32 = 13. Chaque point de la carte de caractéristiques 13 × 13 correspond à la cellule de grille actuelle, tout comme la carte de caractéristiques. Il y en a 13. ×13 points sur la cellule de grille 13×13, qui sont en correspondance individuelle.

                (Parce que (1) la grille est grande et peut s'insérer dans cette grille ou que la zone rectangulaire formée en fusionnant cette grille avec d'autres grilles est plus grande, de grandes cibles peuvent donc y être encadrées. (2) Lorsque vous ciblez une grille, la grille est grand et par rapport à la grille. Dans le petit cas, il est plus probable de voir la vue globale de l'objet chien. S'il est 52 × 52 à droite, en supposant que la petite cloche sur le cou du chien est reconnue, en utilisant un une grande grille encadrera un grand nombre de cloches et n'aura rien à voir avec la zone de la cloche ; et en utilisant une grille 52×52, vous pouvez utiliser quelques petites grilles pour encadrer la cloche de manière très précise, de sorte que la zone sans rapport avec la cloche est inclus le moins possible)

        26×26 détecte les cibles de taille moyenne

        52×52 détecte les cibles de petite taille

Pour les cartes de caractéristiques à différentes échelles, des cellules de grille de différentes tailles doivent être utilisées, afin qu'elles puissent mieux s'adapter à cette carte de caractéristiques et détecter des cibles de différentes tailles.

Notez que la clarté et le flou de l'image dans l'exemple ci-dessus sont en réalité déraisonnables, mais par souci de simplicité, je ne recréerai pas d'image. Il vous suffit de comprendre cela. Les points spécifiques qui ne sont pas raisonnables sont les suivants : Les trois cartes caractéristiques à différentes échelles doivent montrer que la carte caractéristique de petite taille à droite a une résolution exceptionnellement élevée et que l'image est particulièrement claire. La carte de diagnostic spéciale de grande taille à droite la gauche a subi de multiples circonvolutions et devrait être particulièrement floue.

Nous terminons enfin la détection et devons calculer la perte du modèle. Cette perte est déterminée par (1) la catégorie à laquelle appartient l'objet (2) les coordonnées de la boîte englobante de l'objet (3) la boîte englobante contient l'objet. un niveau de confiance,

        Catégorie à laquelle appartient l'objet. Selon l'ensemble de données Microsoft COCO, il existe 80 catégories.

        Quant aux coordonnées de la boîte à rebondissements, seules 4 données sont nécessaires pour localiser la boîte d'identification. L'abscisse et l'ordonnée du point central de la bbox, la largeur et la hauteur de la bbox

        Le niveau de confiance est un nombre compris dans la plage [0,1]. Cette confiance évalue la possibilité qu'il puisse y avoir un objet dans cette boîte.

Par conséquent, un total de 80+4+1=85 nombres sont nécessaires pour préparer les données originales requises pour ce calcul de perte.

Pour la cellule de grille ci-dessus, chaque grille correspond à un tenseur de 85 dimensions.

Alors, quelle est la perte ? Pour chaque cellule de la grille, elle correspond à ce tenseur à 85 dimensions.

Vous pourriez être curieux de savoir combien de nombres y a-t-il dans la sortie finale de la tête de détection correspondant à un sous-échantillonnage 8x, un sous-échantillonnage 16x et un sous-échantillonnage 32x ? Calculons-le ensemble

Après 32 sous-échantillonnages, on obtient une carte de caractéristiques d'une taille de 13 × 13. Chaque cellule de la grille comporte 3 boîtes d'ancrage et chaque boîte d'ancrage est un tenseur composé de 85 éléments.

        Par conséquent, le numéro d’élément de la sortie sous-échantillonnée 32 fois est (13×13)×3×85,

        Le nombre d'éléments de sortie pour le sous-échantillonnage 16x est (26×26)×3×85

        Le nombre d'éléments de sortie pour le sous-échantillonnage 8x est (52×52)×3×85

4. Représentation des coordonnées bbox : coordonnées relatives

Afin de prédire la position absolue de la boîte à rebondissements de la cible, YOLOv3 localise d'abord à quelle cellule de grille ce point appartient, puis prédit la position relative de ce point par rapport au point dans le coin supérieur gauche de la cellule de grille, puis en fonction sur la boîte de bouding Les coordonnées relatives du point central par rapport au coin supérieur gauche de la cellule de grille sont ensuite calculées pour dériver la position absolue de la bbox. Plus précisément, il s'agit d'abord de prédire (tx, ty, tw, th, t0), puis de calculer la taille de la position et la confiance de la bbox via la formule de décalage de coordonnées suivante.

        Pour faire simple, ce qui est renvoyé ne sont pas les coordonnées absolues, mais les coordonnées relatives par rapport au point dans le coin supérieur gauche de la cellule de grille.

        Cela équivaut à donner à la cellule de grille une connaissance préalable. Cette connaissance préalable est la suivante : la cible se trouve dans une certaine cellule de grille. Il vous suffit de renvoyer une valeur de coordonnée relative à la cellule de grille.

        tx, ty, tw, th sont les premiers résultats de prédiction du modèle obtenus. Ensuite, ils ont obtenu le point central cible (bx, by) ainsi que la largeur bw et la hauteur bh de la boîte à rebondissements grâce à la série de processus suivante.

        cx et cy représentent l'abscisse et l'ordonnée du point dans le coin supérieur gauche de la cellule de la grille. Par exemple, en supposant que la taille de la carte des caractéristiques d'une certaine couche

        Pour obtenir les points centraux cibles bx et by, cette série de traitements consiste d'abord à faire passer tx et ty via une \sigmafonction (fonction sigmoïde), puis à ajouter les coordonnées cx et cy de la cellule de la grille pour obtenir les coordonnées du point central réel. et par.

                La fonction sigmoïde est utilisée ici car. [-\infty,+\infty]La fonction sigmoïde peut mettre à l'échelle et projeter n'importe quel ensemble de données dans l' intervalle d'entrée sur [0,1]cet intervalle, et le résultat de sortie est comme un pourcentage. Parce que cx est l'abscisse du point dans le coin supérieur gauche de la boîte d'ancrage, la longueur et la largeur maximales d'une boîte d'ancrage sont de 1 pixel, tout comme le nombre non supérieur à c_{x}1 ajouté à l'abscisse j du point du coin supérieur gauche. \sigma(t_{x}), qui est très bien décrit. , c_{x}les coordonnées horizontales et verticales de chaque point possible dans la boîte 1×1 jusqu'au coin inférieur droit.

        Pourquoi utiliser la position relative ?

                Car si vous prédisez la position absolue, il ne sera pas facile de converger pendant l'entraînement. Par conséquent, l’utilisation de positions relatives permet au réseau de converger plus facilement vers un meilleur résultat.

        Lors de la formation de ces valeurs de coordonnées, la somme des pertes des carrés est utilisée. La raison en est que l’erreur de cette manière peut être calculée rapidement. Cependant, cette perte de somme des carrés n’est plus utilisée.

        La confiance est calculée à l'aide de cette formule. Confiance = P (Objet) × IoU.

                Cette confiance fait référence à la certitude que l'objet est contenu dans la boîte à rebondissements, c'est-à-dire à la précision de la prédiction de la bbox.

                Ici, P (objet) vaut 0 ou 1. S'il y a un objet dans cette bbox, P(object)=1. S'il n'y a aucun objet dans la zone encadrée par cette bbox, c'est-à-dire que ce qui est encadré dans la bbox n'est pas le premier plan mais l'arrière-plan, alors P(Objet)=0.

                C'est-à-dire que lorsqu'il y a un objet dans la zone encadrée dans la bbox, la confiance est l'IoU entre la boîte prédite et la boîte réelle de l'objet. S'il n'y a aucun objet dans la zone encadrée dans la bbox, la confiance est 0.

5. Appariement des échantillons positifs et négatifs

        Utiliser trois nombres différents de cellules de grille dans les trois échelles de grande, moyenne et petite pour la même image s'appelle avoir trois ancres.

        Les petites cellules à l'intérieur de chaque ancre sont appelées cellules de grille.

        Les règles d'appariement des échantillons positifs et négatifs utilisées par YOLOv3 n'attribuent qu'un seul échantillon positif à chaque vérité terrain (remarque : le point clé ici est de n'attribuer qu'un seul échantillon positif, un seul, trop peu !). La prémisse pour l’établissement d’un échantillon positif est que l’IoU est supérieur au seuil que vous avez défini. Cet échantillon positif consiste à trouver la boîte de prédiction avec la plus grande zone de chevauchement avec GT (la plus grande valeur IoU) parmi toutes les boîtes de rebond prédites.

        Si un échantillon n'est pas un échantillon positif (il n'y a en fait aucun objet dans la boîte de rebond prédite sur la vérité terrain) et qu'il n'y a même pas d'objet, alors naturellement il n'y aura pas de position d'objet ni de catégorie d'objet, et naturellement il y aura aucune perte de positionnement ni perte de catégorie. Cependant, ces échantillons négatifs ont une perte de confiance, car l'évaluation de la perte de confiance consiste à savoir s'il y a un objet dans la bbox.

        Cependant, les règles de correspondance ci-dessus pour les échantillons positifs et négatifs conduisent à un résultat : la plupart des échantillons sont des échantillons négatifs (il n'y a en fait aucun objet dans un grand nombre de boîtes de rebond prédites), et les échantillons positifs ne représentent qu'une très petite partie de le total des échantillons. Comment gérer ce déséquilibre extrême de l’échantillon ? L'auteur de YOLOv3 a tenté d'introduire la perte focale pour atténuer ce problème. Mais l'effet n'est pas bon, car la valeur de l'échantillon négatif participe à la perte de confiance et a un très faible impact sur la perte (car la confiance de l'échantillon négatif est de 0. Une petite quantité affectera la perte de confiance. À cet égard, moi non plus, je ne comprends pas très bien ).

L'inconvénient de la conception du mécanisme d'appariement des échantillons positifs et négatifs ci-dessus est que le nombre d'échantillons positifs est trop petit, ce qui rend difficile la formation du réseau. (Puisque la plupart des cas sont des échantillons négatifs, c'est-à-dire que la boîte de rebond est mal saisie, alors par souci de précision, mon modèle déterminera la précision une fois que tous les échantillons auront été jugés comme des échantillons négatifs. La précision ne serait-elle pas élevée ? Les échantillons sont extrêmement déséquilibrés. Dans ce cas, le modèle n'a appris aucune information précieuse des échantillons positifs et négatifs et est devenu une machine qui juge l'échantillon comme un échantillon négatif lorsqu'il le voit. La formation du réseau a échoué.)

Ainsi, afin de résoudre ce problème, lors de la sélection des exemples positifs, les trois premiers avec le plus grand IoU de prédit et GT sont sélectionnés comme exemples positifs, ce qui augmente le nombre d'exemples positifs.

6. Fonction de perte

La perte de YOLOv3 est divisée en 3 parties

        (1) Erreur de coordonnée du cadre de délimitation, perte de bbox, utilise le point central de la bbox (x, y) et la largeur w et la hauteur h de la bbox.

                L'évaluation de la perte du point central de la bbox est la perte d'une erreur quadratique. La vraie valeur des coordonnées horizontales et verticales moins la valeur prédite est ensuite mise au carré et additionnée. Le résultat est que

                Pour la largeur et la hauteur de la bbox, prenez d'abord le signe racine, puis additionnez les carrés des différences entre prédit et GT.

                Les deux premières lignes de la fonction de perte sont \lambda_{coord}ensuite pour obtenir une moyenne pondérée

        (2) Erreur de confiance, perte d'objet, qui consiste à évaluer s'il y a un objet dans la boîte à rebondissements, quelle que soit la catégorie d'objet dont il s'agit. Les humains, les voitures, les bus et les motos ne sont pas importants. Ce qui est important, c'est s'il y a est un objet.

        (3) Erreur de classe, perte de classe, l'erreur appartenant à chaque catégorie parmi les 80 catégories.

                La perte de confiance et la perte de catégorie utilisent toutes deux la perte d'entropie croisée (logit). La perte de confiance utilise une perte à deux classes et la perte de catégorie utilise une perte multi-classes. 

                YOLO avant YOLOv3 utilisait softmax pour la multi-classification, et l'entropie croisée n'était utilisée que dans YOLOv3. La sortie softmax est constituée de plusieurs catégories. La raison de ce remplacement et de cette mise à niveau est que softmax a une suppression mutuelle entre les différentes catégories, qui est soit/ou. La catégorie de cet objet appartient soit à la catégorie A, soit à la catégorie B. La catégorie de cet objet ne peut pas être à la fois la catégorie A et la catégorie A. C'est aussi la catégorie B (bien entendu, le niveau de confiance de deux catégories AB doit être haut et bas). Mais softmax (logit) peut découpler ces catégories et résoudre le problème de conflit de cette catégorie.

                Notez ici que lorsque je calcule la perte de classe de perte de catégorie, nous calculons notre perte de classification uniquement si nous calculons que nous sommes un échantillon positif (je ne comprends pas du tout ici, l'échantillon positif signifie que la catégorie prédite est cohérente avec la catégorie réelle) . catégorie de GT Li) C'est l'échantillon positif le moment venu. Pourquoi ne pas utiliser les échantillons mal classés pour comptabiliser également les erreurs de classification ? )

                Pour la perte de confiance, qu'il y ait ou non une cible dans la bbox, qu'il s'agisse d'un échantillon positif ou négatif, nous devons calculer la perte de confiance. 

        La fonction de perte ci-dessus comporte certains paramètres, qui sont expliqués ci-dessous.

                S^2Il représente les trois ancres de 13 × 13 (sous-échantillonnage 32x), 26 × 26 (sous-échantillonnage 16x) et 52 × 52 (sous-échantillonnage 8x).

                B représente les B cases candidates générées par chaque grille

                \lambda_{coor}et \lambda_{noobj}est le poids de la moyenne pondérée de ces fonctions de perte

                Je_{i,j}^{obj}Indique qu'il y a une cible dans la case en i et j, s'il y a une cible, c'est 1, sinon, c'est 0

                Je ^{noobj}_{i,j}Indique qu'il n'y a pas de cible dans la case en i et j, s'il y en a, c'est 1, sinon, c'est 0

                

Je suppose que tu aimes

Origine blog.csdn.net/Albert233333/article/details/132963137
conseillé
Classement