Détection d'objets Reconnaissez et régnez. Partie 2


Dans un article précédent, j'ai commencé à comprendre les modèles de détection d'objets en deux étapes et j'ai parlé des plus élémentaires et, en conséquence, du premier d'entre eux - R-CNN . Aujourd'hui, nous examinons d'autres modèles de cette famille: Fast R-CNN et Faster R-CNN . Aller!

R-cnn rapide


Le R-CNN étant un réseau lent et peu efficace, les mêmes auteurs ont proposé assez rapidement une amélioration sous la forme d'un réseau Fast R-CNN .

Le processus de traitement d'image a changé et ressemble à ceci:

  1. Extraire une carte des attributs de l'image (pas pour chaque hypothèse séparément, mais pour l'image entière);
  2. Recherche d'hypothèse (similaire au R-CNN basé sur la recherche sélective);
  3. – .. ( );
  4. ( , SVM-).

RoI layer


Dans le concept original de R-CNN, chaque hypothèse proposée est traitée individuellement à l'aide de CNN - cette approche est devenue une sorte de goulot d'étranglement. Pour résoudre ce problème, une couche Région d'intérêt (RoI) a été développée . Cette couche vous permet de traiter une fois l'image entière à l'aide du réseau neuronal, en recevant en sortie une carte des caractéristiques, qui est ensuite utilisée pour traiter chaque hypothèse.

La tâche principale de la couche RoI est de comparer les coordonnées d'hypothèses (coordonnées du cadre de délimitation) avec les coordonnées correspondantes de la carte d'entités. En faisant une «tranche» de la carte d'entités, la couche RoI l'introduit dans l'entrée de la couche entièrement connectée pour la détermination de classe ultérieure et les corrections des coordonnées (voir les sections suivantes).

Une question logique se pose: comment appliquer des hypothèses de tailles et de rapports d'aspect différents à l'entrée d'une couche entièrement connectée? Pour cela, une couche RoI est nécessaire, qui convertit l'image avec les dimensionsIh×Iw en taille Oh×Ow. Pour ce faire, vous devez diviser l'image originale en une grille de tailleOh×Ow (taille des cellules environ IhOh×IwOw) et dans chaque cellule, sélectionnez le nombre maximum.

Supposons qu'il existe une carte d'entités 5 × 5 et que l'hypothèse souhaitée sur cette carte ait des coordonnées (1,1,4,5) (les deux premières coordonnées sont le coin supérieur gauche, les deux dernières sont le coin inférieur droit). La couche suivante entièrement connectée attend une dimension 4 × 1 (c'est-à-dire une matrice allongée 2 × 2). Ensuite, nous divisons l'hypothèse en blocs inégaux de différentes dimensions (l'étape de mise en commun) et prenons le nombre maximal dans chacune d'elles (l'étape de mise en commun et, par conséquent, l'étape de sortie).


Ainsi, il devient possible de traiter l'image entière, puis de travailler avec chaque hypothèse sur la base d'une carte des caractéristiques.

Total:

  • Entrée: coordonnées de l'hypothèse et une carte des caractéristiques de l'image originale;
  • Sortie: représentation vectorielle de l'hypothèse.

Couche entièrement connectée et ses sorties


Dans la version précédente de R-CNN, des classificateurs SVM distincts étaient utilisés, dans la même implémentation, ils étaient remplacés par une sortie de dimension SoftMax Nc+1. Il est à noter que la perte de précision est inférieure à 1%.

La sortie des régresseurs est traitée à l'aide de NMS (Non-Maximum Suppression).

Total:

  • Entrée: représentation vectorielle de l'hypothèse;
  • Sortie: probabilités d'hypothèse appartenant aux classes et corrections aux coordonnées du cadre de délimitation.

Perte multi-tâches


Dans la formation simultanée du réseau, une fonction de perte spéciale est utilisée pour les tâches de régression de la boîte englobante et de la classification:

L(P,u,tu,v)=Lcls(P,u)+λ[u1]Lloc(tu,v)


Ici:

  • λnécessaire d'ajuster l'équilibre entre les deux fonctions (les auteurs ont utilisé λ= 1);
  • u- la bonne classe;
  • Lclsreprésente les fonctions d'erreur pour la classification Lcls(P,u)=logPu;
  • Llocest une fonction SmoothL1 et mesure la différence entre v=(vx,vy,vw,vh)et tu=(txu,tyu,twu,thu)valeurs:

    SmoothL1={12x2,if|x|<1|x|12,otherwise


    Ici, xdénote la différence entre la valeur cible et la prédiction tiuvi. Une telle fonction combine les avantages des fonctions L1 et L2, car elle est stable à de grandes valeursx et pas beaucoup d'amendes pour les petites valeurs.


Entraînement


Pour une meilleure convergence, les auteurs ont utilisé l'approche suivante pour la formation du lot:

  1. Le nombre d'hypothèses du lot est sélectionné R.
  2. Sélectionné aléatoirement Nimages.
  3. Pour chacun Nimages prises RNhypothèses (c'est-à-dire uniformément sur chaque image).

Dans le même temps, les hypothèses positives (25% du lot entier) et négatives (75% du lot entier) sont incluses dans R. Les hypothèses qui chevauchent la position correcte de l'objet de plus de 0,5 (IoU) sont considérées comme positives. Les valeurs négatives sont prises conformément à la règle de l'extraction négative dure - les instances les plus erronées (celles dont l'IoU se situe dans la plage [0,1,0,5).

De plus, les auteurs font valoir qu'avec les paramètresN=2 et R=128le réseau apprend beaucoup plus rapidement qu'avec N=128et R=128(c'est-à-dire une hypothèse de chaque image).

R-cnn plus rapide


Une autre amélioration logique est un moyen d'éliminer la dépendance à l'algorithme de recherche sélective. Pour ce faire, nous allons représenter l'ensemble du système comme une composition de deux modules - la définition des hypothèses et leur traitement. Le premier module sera mis en œuvre à l'aide du réseau de propositions de régions (RPN) , et le second est similaire à Fast R-CNN (en commençant par la couche RoI).

Par conséquent, cette fois, le processus de travail avec l'image a changé et se passe maintenant de cette façon:

  1. Suppression d'une carte des caractéristiques de l'image à l'aide d'un réseau de neurones;
  2. Génération basée sur la carte obtenue des signes d'hypothèses - détermination des coordonnées approximatives et présence d'un objet de n'importe quelle classe;
  3. Comparaison des coordonnées d'hypothèses en utilisant RoI avec une carte de caractéristiques obtenue à la première étape;
  4. Classification des hypothèses (déjà pour la définition d'une classe particulière) et raffinement supplémentaire des coordonnées (en fait, cela peut ne pas s'appliquer).

La principale amélioration s'est produite précisément à l'endroit où les hypothèses ont été générées - maintenant, pour cela, il existe un petit réseau de neurones distinct, qui s'appelait Region Proposition Network .


Réseau de propositions de régions


Le but ultime de ce module est de remplacer complètement l'algorithme de recherche sélective. Pour un fonctionnement plus rapide, des poids communs sont nécessaires avec un réseau qui extrait les attributs nécessaires. Par conséquent, l'entrée RPN est une carte d'entités obtenue après ce réseau. Les auteurs de l'article original utilisent le réseau VGG16 pour extraire des entités, dont la sortie est considérée comme la dernière couche convolutionnelle - conv5_3. Un tel réseau présente les caractéristiques suivantes du champ récepteur :

  • Compression efficace (foulées efficaces, S0): seize
  • Taille du champ réceptif r0): 196

Cela signifie que la carte des entités sera 16 fois plus petite que la taille de l'image d'origine (le nombre de canaux est de 512), et chaque valeur dans ses cellules est affectée par les pixels de l'image d'origine se trouvant dans un rectangle de 196 × 196. Ainsi, il s'avère que si vous utilisez l'entrée standard VGG16 224 × 224, la quasi-totalité de l'image affectera la formation de la valeur de la cellule centrale de la carte d'entités (14.14)! Sur la base de la carte d'entités reçue, le RPN pour chaque cellule produitk hypothèses (dans l'implémentation d'origine k=9) différentes tailles et proportions. Donc, pour la taille standard, c'est 14 × 14 × 9 = 1764 hypothèses!

Sur la base de l'image ci-dessous, nous considérons plus en détail l'algorithme du module RPN (image cliquable):


  1. c×H16×W16.
  2. 3×3 ( – ). , (P0=106, r0=228).

  • (i,j) c( 512).

  1. 1×1 c^( cc^):
    1. (cls) c^=2k– - ( 2 ).
    2. (reg) c^=4k– .

    Notez que les vecteurs obtenus peuvent être transformés en matrices k×2et k×4. Ainsi, nous obtenons les matrices, oùi la ligne correspond aux valeurs d'une hypothèse particulière.

Une question logique se pose: comment déterminer les coordonnées absolues des hypothèses à partir du vecteur qui entre dans la couche reg? La réponse est simple - aucun moyen. Pour la détermination correcte des coordonnées, il est nécessaire d'utiliser les soi-disant ancres et les corrections de leurs coordonnées.

Une ancre est un quadrilatère de différents formats (1: 1, 2: 1, 1: 2) et de tailles (128 × 128, 256 × 256, 512 × 512). Le centre de l'ancre est le centre de la cellule (i,j) signes de carte. Ainsi, par exemple, prenons la cellule (7,7), dont le centre est les valeurs (7,5,7,5), ce qui correspond aux coordonnées (120,120) de l'image originale (16 × 7,5). Comparez avec ces coordonnées les rectangles de trois proportions et de trois tailles (un total de 3 × 3 = 9). À l'avenir, la couche reg produira des modifications appropriées par rapport à ces coordonnées, ajustant ainsi l'emplacement et la forme du cadre de sélection.

Total:

  • Entrée: carte des caractéristiques de l'image originale;
  • Sortie: hypothèses contenant un objet.

Fonction de perte


Pour la formation RPN, la notation de classe suivante est utilisée:

  • Toutes les ancres ont une intersection (IoU) supérieure à 0,7 ou la plus grande intersection parmi toutes les ancres (s'applique s'il n'y a pas d'intersection supérieure à 0,7).
  • Négatives sont toutes les ancres ayant une intersection inférieure à 0,3.
  • Toutes les autres ancres ne participent pas à la formation (en fait, elles sont neutres).

Donc la classe piles ancres sont attribuées selon la règle suivante:

pi={1ifIoU>0.70ifIoU<0.3nothingotherwise


Avec une telle notation, la fonction suivante est minimisée:

L({pi},{ti})=1NclsiLcls(pi,pi)+λ1NlocipiLreg(ti,ti)


Ici:

  • i- numéro d'ancrage;
  • pi- la probabilité de trouver l'objet dans iancre;
  • pi- le numéro de classe correct (indiqué ci-dessus);
  • ti- 4 corrections prévues aux coordonnées;
  • ti- corrections attendues (vérité au sol) des coordonnées;
  • Lcls(pi,pi)- perte de journal binaire;
  • Lreg(ti,ti)- Perte SmoothL1. Activé uniquement sipi=1, c'est à dire. si l'hypothèse contient au moins un objet;
  • {pi}et {ti}- sorties des modèles de classification et de régression, respectivement;
  • λ- coefficient d'ajustement de l'équilibre entre classification et régression.

Les deux parties de la perte combinée se normalisent pour Nclset Nlocrespectivement. Les auteurs ont utiliséNcls égal à la taille du mini-lot (256), et Nlocégal au nombre d'ancres.

Pour régresser les corrections apportées au cadre de sélection, les valeurs sont initialisées et calculées comme suit:

tx=(xxa)wa,tx=(xxa)wty=(yya)ha,ty=(yya)hatw=logwwa,tw=logwwath=loghha,th=loghha


Ici x, y, wet hindiquer le centre, la largeur et la hauteur du cadre de sélection. Variablesx, xet xadésignent la prédiction, la vérité sur le terrain et la signification des ancres (par y, wet hDe même).

La formation sur la liste complète des ancres aura un biais vers la classe négative (il y a beaucoup plus d'hypothèses avec cette classe). À cet égard, le mini-lot est formé dans un rapport 1: 1 d'ancrages positifs sur négatifs. S'il n'est pas possible de trouver le nombre approprié d'ancres positives, le mini-lot est complété à l'aide de classes négatives.

Formation générale au réseau


L'objectif principal est l'utilisation conjointe d'échelles entre les deux modules - cela augmentera la vitesse de travail. Puisqu'il est impossible (ou plutôt difficile) de former deux modules indépendants à la fois, les auteurs de l'article utilisent une approche itérative:

  1. Formation du réseau RPN. Les couches convolutives sont initialisées avec des poids précédemment obtenus lors de la formation sur ImageNet. Nous allons nous recycler pour définir des régions avec n'importe quelle classe (la spécification de la classe fait partie de Fast R-CNN).
  2. Formation Réseau R-CNN rapide. Comme à l'étape 1, nous initialisons Fast R-CNN avec les poids précédemment obtenus lors de la formation sur ImageNet. Nous nous recyclons en utilisant des hypothèses sur les objets en utilisant le réseau RPN formé au point 1. Cette fois, la tâche de la formation est de clarifier les coordonnées et de déterminer la classe spécifique de l'objet.
  3. En utilisant les poids de la page 2, nous formons uniquement la partie RPN (les couches allant aux réseaux RPN appartenant à l'extracteur de fonctionnalités sont figées et ne changent pas du tout).
  4. En utilisant les poids de la page 3 (c'est-à-dire le RPN plus fin), nous formons les couches pour Fast R-CNN (les poids restants - ceux qui vont plus tôt ou liés au RPN - sont gelés).

Avec l'aide d'une telle formation itérative, il s'avère que l'ensemble du réseau est construit sur les mêmes échelles. Vous pouvez continuer à former le réseau sur ce principe, mais les auteurs notent qu'il n'y a pas de changements majeurs dans les métriques.

Processus de prédiction


Lors de l'utilisation de réseaux de neurones pour les prévisions, la propagation de l'image ressemble à ceci:

  1. L'image entre dans l'entrée du réseau neuronal, générant une carte des caractéristiques.
  2. Chaque cellule de la carte d'entités est traitée à l'aide de RPN, donnant comme résultat de la correction de la position des ancres et de la probabilité de la présence d'un objet de n'importe quelle classe.
  3. Les trames prédites correspondantes sont ensuite basées sur la carte des caractéristiques et la couche RoI pour un traitement ultérieur de la partie Fast R-CNN.
  4. À la sortie, nous obtenons une classe spécifique d'objets et leur position exacte dans l'image.

Résumé des différences


Voici un bref résumé des modèles entre eux (les idées de base sont héritées des plus jeunes aux plus âgées):

R-CNN:

  • Utilisation de la recherche sélective comme générateur d'hypothèses.
  • Utilisation de SVM + Ridge pour la classification et la régression d'hypothèses (de plus, leur fonctionnement parallèle n'est pas possible).
  • Exécution d'un réseau de neurones pour traiter chaque hypothèse individuellement.
  • Faible vitesse.

R-CNN rapide:

  • Un réseau de neurones n'est lancé qu'une seule fois par image - toutes les hypothèses sont testées sur la base d'une seule carte de caractéristiques.
  • Traitement intelligent d'hypothèses de tailles différentes grâce à la couche RoI.
  • Remplacement de SVN par une couche SoftMax.
  • La possibilité d'une classification et d'une régression de travail parallèles.

R-CNN plus rapide:

  • Génération d'hypothèses à l'aide d'un module spécial différenciable séparément.
  • Changements dans le traitement d'image associés à l'avènement du module RPN.
  • Le plus rapide de ces trois modèles.
  • C'est l'un des plus précis à ce jour.

Conclusion


En conclusion, nous pouvons dire que le développement du R-CNN est passé d'algorithmes disparates qui résolvent un problème à une solution unique de bout en bout. Cette combinaison vous permet de rendre presque n'importe quelle approche plus précise et plus productive, la détection d'objets n'a pas fait exception.

Bibliographie


  1. R. Girshick, J. Donahue, T. Darrell, and J. Malik. «Rich feature hierarchies for accurate object detection and semantic segmentation.» In CVPR, 2014. arXiv:1311.2524
  2. R. Girshick, J. Donahue, T. Darrell, and J. Malik. «Region-based convolutional networks for accurate object detection and segmentation.» TPAMI, 2015
  3. R. Girshick, «Fast R-CNN,» in IEEE International Conference on Computer Vision (ICCV), 2015.
  4. S. Ren, K. He, R. Girshick, and J. Sun, «Faster R-CNN: Towards real-time object detection with region proposal networks,» in Neural Information Processing Systems (NIPS), 2015.

All Articles