Notes d'étude de la série d'algorithmes YOLO de détection de cible Chapitres 2, 3 et 4 - Idées et architecture d'algorithme YOLOv1, v2, v3

L'algorithme de réseau neuronal se concentre sur : la valeur de sortie de la structure du réseau + la fonction de perte.
insérez la description de l'image ici

Heure de publication, auteurs et articles de chaque version

YOLO(Vous ne regardez qu'une fois),2015.6.8,Joseph Redmon
YOLOv2(YOLO9000),2016.12.25,Joseph Redmon
YOLOv3,2018.4.8,Joseph Redmon
YOLOv4,2020.4.23,Alexey Bochkovskiy
YOLOv5 ,2020.6.10,Ultralytics
YOLOX, 2021.7.20,旷世
YOLOv6,2022.6.23,美团
YOLOv7,2022.7.7,Alexey Bochkovskiy
YOLOv8,2023.1,Ultralytics
参考:https://blog.csdn.net/qq_34451909 /article/détails/128779602

YOLOv1:2015,papier:https://arxiv.org/pdf/1506.02640.pdf
YOLOv2:2017,papier:https://arxiv.org/pdf/1612.08242.pdf
YOLOv3:2018,papier:https://arxiv. org/pdf/1804.02767.pdf
YOLOv4:2020,papier:https://arxiv.org/pdf/2004.10934.pdf
YOLOv5:2020,papier:https://arxiv.org/pdf/2108.11539.pdf
YOLOv6:2022,papier :https://arxiv.org/pdf/2209.02976.pdf
YOLOv7:2022,papier:https://arxiv.org/pdf/2207.02696.pdf

yolo-v1 (proposé en 2015)

réflexion globale

L' idée centrale est de traiter la détection d'objets comme une seule tâche de régression. Il divise d'abord l'image en grilles SxS, et sur quelle grille tombe le centre du cadre réel de l'objet, le cadre d'ancrage correspondant à la grille est responsable de la détection de l'objet.
La méthode classique en une étape convertit le problème de détection en un problème de régression. Un CNN peut le gérer et afficher x, y, h, w.
insérez la description de l'image ici

insérez la description de l'image ici
Divisez les données d'entrée en petites grilles de S * S ** (la sortie dans v1 est 7 × 7) **.
Déterminez dans quelle grille se trouve l'objet et regardez son point central.
Donnez d'abord le H et le W des deux cadres candidats en fonction de l'expérience, calculez l'IoU avec le cadre réel, utilisez celui qui est le plus élevé comme cadre de prédiction, puis effectuez un réglage fin (tâche de régression), générez un cadre de prédiction pour chaque grille , et enfin sortir x, y, h, w (boîte englobante, boîte englobante) et confiance (confiance), puis filtrer plusieurs des boîtes générées pour obtenir une boîte avec une confiance plus élevée, puis affiner la boîte avec un plus grande confiance.

Interprétation de l'architecture réseau

Pour la couche entièrement connectée, étant donné que la taille de son poids et de son biais est constante dans chaque régression, la taille de l'entité d'entrée doit être limitée, sinon il n'y a aucun moyen de le faire, donc la taille de l'image d'entrée est donnée dans YOLO-v1 comme 448 × 448 × 3.
insérez la description de l'image ici
La partie avant de la couche entièrement connectée peut être considérée comme un processus de convolution, car le réseau GoogLeNet est rarement utilisé maintenant, donc je n'entrerai pas dans les détails, et le modèle de réseau utilisé dans la v3 sera expliqué en détail.

Examinez principalement la signification de la sortie 7 × 7 × 30 plus tard:
7 × 7 signifie diviser l'image en grilles 7 × 7.
30=10+20 : Indique la position, la taille et la confiance de deux boîtes candidates (boîte englobante), plus 20 catégories.
insérez la description de l'image ici
La dimension du résultat final de la prédiction est S×S×(B*5+C)

fonction de perte

insérez la description de l'image ici

erreur de positionnement

i signifie que pour différentes grilles, il y a un total de S carrés, j signifie qu'il y a un total de B pour différentes boîtes candidates, sélectionnez la boîte avec la plus grande IoU et calculez la différence entre la valeur réelle et la valeur prédite.
insérez la description de l'image ici
L'ajout du signe racine à w et h permet de gérer les différentes tailles d'objets. Pour les petits objets, la taille du cadre peut changer d'une unité et le cadre peut ne pas pouvoir être encadré.
y=signe racine La fonction x est plus sensible lorsque la valeur est petite, et moins sensible lorsque la valeur est grande. Pour les petits objets, le décalage peut ne pas être sensible lorsque le décalage est relativement petit. Maintenant, rendez-le plus sensible.
Les coefficients précédents sont équivalents à des éléments de pondération.

erreur de confiance

Divisé en avant-plan (c'est-à-dire avec cible) et en arrière-plan (sans cible)

Lorsque l'IoU entre une certaine trame et la trame réelle est supérieure au seuil, tel que 0,5, plus la confiance de la trame actuelle est proche de l'IoU, plus elle est appropriée, mais il peut y avoir de nombreuses parties de la trame qui se chevauchent et la cadre réel, puis calculez le cadre avec le plus grand IoU .

Dans l'image réelle, la proportion du premier plan et de l'arrière-plan est quelque peu différente, il y a donc un terme de poids dans le calcul de l'arrière-plan, de sorte que l'influence de l'arrière-plan sur la perte est moindre.

erreur de classement

Calcule la perte d'entropie croisée.

NMS (suppression non maximale)

insérez la description de l'image ici
Lors de la prédiction, pour une trame avec un IoU relativement grand (prédisant le même objet), comparez leur confiance, conservez la valeur maximale et supprimez les autres.

Caractéristiques de yolo-v1

Rapide
et facile.

défaut

  1. Les choses qui se chevauchent sont difficiles à détecter.
  2. L'effet de détection des petits objets est moyen et le rapport d'aspect est facultatif mais unique.
  3. Il est difficile de résoudre le problème des étiquettes multiples pour le même objet.Par exemple, les étiquettes d'un objet sont des chiens et des huskies.

yolo-v2 (2017)

améliorer les détails

insérez la description de l'image ici
v2 n'a pas de couche entièrement connectée.

insérez la description de l'image ici
BN est beaucoup utilisé maintenant, et conv-bn peut être considéré comme standard.
insérez la description de l'image ici
Dans la v1, les performances de l'ordinateur peuvent être relativement médiocres et la formation d'images 448 × 448 × 3 sera relativement lente, de sorte que le nombre de pixels d'image utilisés pour la formation et les tests est différent.
En v2, le temps n'est pas pris en compte, et 10 réglages fins supplémentaires ont été effectués.

Interprétation de l'architecture réseau

insérez la description de l'image ici
Il emprunte à VGG (2014) et à la structure du réseau Resnet.

  • Il s'agit d'extraire des fonctionnalités, il n'y a donc pas de couche entièrement connectée .
    La couche entièrement connectée est facile à suradapter et, en raison du grand nombre de paramètres, la formation est relativement lente.
    La sortie à droite n'est qu'un exemple, la situation réelle n'est pas le cas.

  • 5 fois de sous-échantillonnage, chaque sous-échantillonnage est réduit à la moitié de l'original, et un point sur la carte des caractéristiques de sortie équivaut à 1/32 de l'image d'origine.
    L'entrée réelle est de 416 × 416 et la sortie de 13 × 13 (plus raffinée que la v2). Il s'agit de la structure réelle du réseau Darknet 19 , qui comporte 19 couches. Le nombre de couches peut être modifié en fonction de vos besoins. S'il y a y a plus de couches, le mAP peut être plus élevé et le FPS peut être plus élevé. La sortie est un nombre impair afin que la carte des entités ait un point central.

  • Il existe deux types de noyaux de convolution dans le réseau : 3 × 3 et 1 × 1. Le premier est basé sur l'idée du document de réseau VGG. Lors du choix d'un noyau de convolution plus petit, les paramètres sont relativement petits et le champ récepteur est relativement grand. La convolution 1 × 1 ne modifie que le nombre de cartes de caractéristiques (le nombre de canaux), et c'est un processus pour atteindre la concentration des caractéristiques. L'utilisation de 1 est inférieure à l'utilisation de 3 paramètres et le calcul est plus rapide.

Choisissez a priori la taille de la boîte en fonction du clustering

insérez la description de l'image ici

  • YOLOv1 utilise 2 types.
  • FasterRCNN utilise 9 types. 3 échelles, trois tailles différentes, chacune avec trois formes. Les ratios a priori sélectionnés par la série à rcnn plus rapide sont conventionnels, mais pas nécessairement tout à fait adaptés à l'ensemble de données.
    insérez la description de l'image ici
  • YOLOv2 : sélectionnez la taille de la boîte précédente en fonction du clustering K-means . À partir des exemples réels, 5 catégories (k = 5) sont regroupées et le centre de chaque catégorie est utilisé comme représentant pour retirer h et w en tant que boîte précédente, et chaque grille de la carte des caractéristiques a 5 boîtes précédentes. Si la distance euclidienne est utilisée, l'erreur du grand cadre peut être grande et l'erreur du petit cadre est petite. Une définition de la distance est proposée, en utilisant 1-IoU comme distance.
    insérez la description de l'image ici
    Ils ont fait une expérience et ont pris une valeur de compromis k=5. À ce moment, l'IoU moyen est relativement important et l'augmentation de la valeur k sera très lente (pente). Sélectionnez cinq cases précédentes (ancres).
    insérez la description de l'image ici
  • En conséquence,
    la mAP a légèrement diminué et le rappel a augmenté de manière significative.
    Il y a plus de boîtes de candidats, mais toutes les boîtes de candidats ne peuvent pas bien fonctionner, donc la valeur mAP est légèrement réduite (par exemple, j'ai trouvé deux bien appris et bien exécuté, mais si j'en ai trouvé cinq, je ne peux pas si bien), mais le taux de rappel s'est considérablement amélioré. Le taux de rappel signifie qu'il y a des cibles dans l'image et que davantage de cibles peuvent être détectées.
    insérez la description de l'image ici

Méthode de calcul du décalage, cartographie des coordonnées et restauration

  • Le décalage est directement prédit dans YOLOv1 .
  • Dans la version 2, une position relative est prédite pour empêcher la zone de délimitation de sortir de la grille après l'ajout du décalage.
    insérez la description de l'image ici

Coordonner la cartographie et la restauration
insérez la description de l'image ici

  • tx, ty est le décalage prévu, la fonction sigmoïde, la plage de valeurs est de 0 à 1, le décalage prévu est entré dans la fonction sigmoïde pour obtenir un nombre compris entre 0 et 1, et les coordonnées du coin supérieur gauche de la grille sont ajoutées pour obtenir bx ,by, les valeurs prédites finales bx,by,bw,bh sont mappées sur la carte des caractéristiques.
  • tw, th sont également des valeurs prédites, qui ont subi une transformation logarithmique, de sorte qu'elles reviennent à bw, bh. Les valeurs prédites finales bx,by,bw,bh sont les positions sur la carte des caractéristiques réelles.
  • pw, ph est la trame précédente obtenue par regroupement, qui est la taille de la trame dans la carte des caractéristiques, et l'image d'origine a été cartographiée (divisée par 32).

Le rôle du champ récepteur

Plus le champ récepteur est grand, plus il voit d'informations dans l'image d'origine, plus il est commode de reconnaître des objets plus grands.
insérez la description de l'image ici
La formule de calcul du champ récepteur :
insérez la description de l'image ici
S'il y a une convolution creuse :
insérez la description de l'image ici
insérez la description de l'image ici
le champ récepteur de la première couche de convolution est 3, le champ récepteur de la deuxième couche de convolution est 5, et la troisième couche : 5+(3-1 )×1=7
insérez la description de l'image ici

Améliorations de la fusion des fonctionnalités

Plus le champ de réception est grand et adapté à la capture d'objets volumineux, plus les petites caractéristiques peuvent être perdues.
insérez la description de l'image ici
Des champs récepteurs grands et petits sont nécessaires, de sorte que les deux couches se superposent.

Multi-échelle

insérez la description de l'image ici
La taille de l'image dans la v2 doit être divisible par 32.
Après plusieurs itérations, la taille de l'image est modifiée pour permettre au réseau d'avoir une adaptabilité, qui peut détecter à la fois les petites images et les grandes images, ce qui le rend plus complet.

yolo-v3 (2018)

Aperçu de l'amélioration

insérez la description de l'image ici
v3 est très pratique, il est utilisé dans les domaines militaires et de la vie privée. En 2020, l'auteur original de YOLO a publié un tweet disant qu'il quittait la recherche dans le domaine de la vision par ordinateur.

Les versions postérieures à la v3 ne sont pas développées par l'auteur original.
insérez la description de l'image ici
Taille de la grille de la carte des fonctionnalités :
v1 : 7 × 7
v2 : 13 × 13
v3 : 13 × 13, 26 × 26, 52 × 52.

Amélioration de méthodes multi-échelles et fusion de fonctionnalités

insérez la description de l'image ici

  • 3 échelles : 52×52 est bon pour prédire les petites cibles, 26×26 est bon pour prédire les cibles de taille moyenne et 13×13 est bon pour prédire les grandes cibles. Il ne s'agit pas de le laisser faire ce qu'il sait faire (ne pas faire son propre truc), ni d'intégrer directement les caractéristiques du recto et du verso.
  • Trois boîtes candidates sont générées sur chaque carte de caractéristiques.
  • Au lieu de laisser directement 52 × 52 prédire les petites cibles, 26 × 26 prédire les cibles de taille moyenne et 13 × 13 prédire les grandes cibles, une fusion de caractéristiques est effectuée. 13 × 13 connaît déjà les informations globales, utilisez donc 26 × 26 Le 13 L'expérience ×13 est également utilisée lors de la prédiction d'objets de taille moyenne. Pour prédire la cible, certaines idées sont empruntées à la carte des caractéristiques de prédiction de la grande cible, et pour les petites cibles, les caractéristiques de la cible dans la prévision sont utilisées à titre de référence.

Analyse comparative des méthodes classiques de transformation d'échelle

insérez la description de l'image ici
Image de gauche : pyramide d'images, redimensionnez l'image d'entrée, saisissez-la séparément dans le réseau et générez trois tailles de carte d'entités : 52×52 , 26×26 , 13×13 , mais cette vitesse est trop lente.
Image de droite : en fait, il s'agit de YOLOv1, un seul résultat de prédiction et un CNN pour une image.

insérez la description de l'image ici
L'image de gauche montre que chacun fait sa propre chose.
Dans la v3, utilisez la bonne image, utilisez le suréchantillonnage et utilisez l'interpolation linéaire pour le faire.
La carte d'entités 13 × 13 est suréchantillonnée en 26 × 26, puis fusionnée avec 26 × 26 pour prédire les cibles de taille moyenne. Après le suréchantillonnage, 26 × 26 est fusionnée avec 13 × 13 pour prédire les petites cibles. .

Interprétation de la méthode de connexion résiduelle

insérez la description de l'image ici
YOLOv3 intègre les idées de l'article resnet (2016).
En 2014, VGG n'a fait que 19 couches, car parfois le nombre de couches augmente, l'effet de prédiction n'est pas bon et le dégradé disparaît.
Resnet résout le problème de la disparition du gradient, car il existe un mappage équivalent x, de sorte que les performances du réseau peuvent atteindre au moins pas pire que l'original.
Dans le coin inférieur gauche se trouve un bloc résiduel.

Analyse globale de l'architecture du modèle de réseau

insérez la description de l'image ici
1x, 2x, 8x font référence au nombre de piles.
YOLO v3 appelle le modèle DarkNet 53 , qui peut en fait être considéré comme resnet.
La mise en commun compresse les fonctionnalités, ce qui peut ne pas être efficace. La convolution permet d'économiser du temps et des efforts et est rapide et efficace.

Amélioration a priori de la conception des boîtes

insérez la description de l'image ici
Valeur de sortie : 13 × 13 × 3 × 85 (13 numéros de grille × 3 types de rapports de trame précédents × 4 coordonnées de trame × 1 degré de confiance × 80 catégories)

insérez la description de l'image ici
Une fois le regroupement effectué, les spécifications communes des 9 sont affichées, mais toutes les grilles n'ont pas les 9 cases a priori, mais elles sont divisées en catégories, et différentes cases a priori sont attribuées à différentes cartes d'entités.
insérez la description de l'image ici

Améliorations de la couche Softmax

insérez la description de l'image ici
Chaque étiquette fait une classification binaire.
Je ne peux pas comprendre dans de nombreux endroits.

Je suppose que tu aimes

Origine blog.csdn.net/ThreeS_tones/article/details/129770230
conseillé
Classement