Masque R-CNN: architecture d'un réseau neuronal moderne pour la segmentation des objets en images



L'Ă©poque oĂč l'une des tĂąches les plus urgentes de la vision par ordinateur Ă©tait de pouvoir distinguer les photographies de chiens des photographies de chats, est dĂ©jĂ  rĂ©volue. À l'heure actuelle, les rĂ©seaux de neurones sont capables d'effectuer des tĂąches beaucoup plus complexes et intĂ©ressantes pour le traitement d'images. En particulier, le rĂ©seau avec l'architecture Mask R-CNN vous permet de sĂ©lectionner les contours («masques») de diffĂ©rents objets dans les photographies, mĂȘme s'il y en a plusieurs, ils ont des tailles diffĂ©rentes et se chevauchent partiellement. Le rĂ©seau est Ă©galement capable de reconnaĂźtre les poses de personnes dans l'image.

Au dĂ©but de cette annĂ©e, j'ai eu l'occasion de participer au concours Data Science Bowl 2018 Ă  Kaggle Ă  des fins Ă©ducatives. À des fins Ă©ducatives, j'ai utilisĂ© l'un de ces modĂšles que certains participants occupant des postes Ă©levĂ©s prĂ©sentent gĂ©nĂ©reusement. Il s'agissait d'un rĂ©seau neuronal Mask R-CNN rĂ©cemment dĂ©veloppĂ© par Facebook Research. (Il convient de noter que l'Ă©quipe gagnante utilisait toujours une architecture diffĂ©rente - U-Net. Apparemment, elle Ă©tait plus adaptĂ©e aux tĂąches biomĂ©dicales, dont le Data Science Bowl 2018).
Le but Ă©tant de se familiariser avec les tĂąches du Deep Learning et de ne pas occuper une place de choix, aprĂšs la fin de la compĂ©tition, il y avait un fort dĂ©sir de comprendre comment fonctionne le rĂ©seau neuronal utilisĂ© «sous le capot». Cet article est une compilation d'informations obtenues Ă  partir de documents originaux d'arXiv.org et de plusieurs articles sur Medium. Le matĂ©riel est de nature purement thĂ©orique (bien qu'Ă  la fin il y ait des liens sur l'application pratique), et il ne contient pas plus qu'il n'y en a dans les sources indiquĂ©es. Mais il y a peu d'informations sur le sujet en russe, donc l'article sera peut-ĂȘtre utile Ă  quelqu'un.

Toutes les illustrations proviennent de sources d'autres personnes et appartiennent à leurs propriétaires légitimes.

Types de tĂąches de vision par ordinateur


Habituellement, les tĂąches modernes de vision par ordinateur sont divisĂ©es en quatre types (il n'Ă©tait pas nĂ©cessaire de rĂ©pondre aux traductions de leurs noms mĂȘme dans les sources en russe, donc en anglais, afin de ne pas crĂ©er de confusion):

  • Classification - classification de l'image par le type d'objet qu'elle contient;
  • Segmentation sĂ©mantique - dĂ©finition de tous les pixels d'objets d'une certaine classe ou d'un arriĂšre-plan dans l'image. Si plusieurs objets de la mĂȘme classe se chevauchent, leurs pixels ne peuvent pas ĂȘtre sĂ©parĂ©s les uns des autres;
  • DĂ©tection d'objets - dĂ©tection de tous les objets des classes spĂ©cifiĂ©es et dĂ©termination du cadre englobant pour chacune d'elles;
  • Segmentation d'instance - dĂ©finition des pixels appartenant Ă  chaque objet de chaque classe sĂ©parĂ©ment;

En utilisant l'exemple d'une image avec des ballons de [9], cela peut ĂȘtre illustrĂ© comme suit:



Développement évolutif du masque R-CNN


Les concepts sous-jacents à Mask R-CNN ont connu un développement progressif à travers l'architecture de plusieurs réseaux de neurones intermédiaires qui ont résolu différentes tùches de la liste ci-dessus. La façon la plus simple de comprendre les principes de fonctionnement de ce réseau est probablement de considérer séquentiellement toutes ces étapes.

Sans s'attarder sur des choses de base comme la rétropropagation, la fonction d'activation non linéaire et ce qu'est un réseau neuronal multicouche en général, une brÚve explication du fonctionnement des couches de réseaux de neurones à convolution en vaut probablement la peine (R-CNN).

Convolution et MaxPooling


Une couche convolutionnelle vous permet de combiner les valeurs des pixels adjacents et de mettre en Ă©vidence des caractĂ©ristiques plus gĂ©nĂ©rales de l'image. Pour ce faire, l'image est sĂ©quentiellement glissĂ©e par une fenĂȘtre carrĂ©e de petite taille (3x3, 5x5, 7x7 pixels, etc.) appelĂ©e noyau (noyau). Chaque Ă©lĂ©ment central a son propre coefficient de poids multipliĂ© par la valeur de ce pixel de l'image sur laquelle l'Ă©lĂ©ment central est actuellement superposĂ©. Ensuite, les nombres obtenus pour toute la fenĂȘtre sont additionnĂ©s, et cette somme pondĂ©rĂ©e donne la valeur du signe suivant.

Pour obtenir une matrice («carte») d'attributs de l'image entiĂšre, le noyau est dĂ©calĂ© sĂ©quentiellement horizontalement et verticalement. Dans les couches suivantes, l'opĂ©ration de convolution est dĂ©jĂ  appliquĂ©e aux cartes caractĂ©ristiques obtenues Ă  partir des couches prĂ©cĂ©dentes. Graphiquement, le processus peut ĂȘtre illustrĂ© comme suit:



Une image ou des cartes de caractĂ©ristiques dans une couche peuvent ĂȘtre numĂ©risĂ©es non pas par un mais par plusieurs filtres indĂ©pendants, donnant ainsi non pas une carte, mais plusieurs (elles sont Ă©galement appelĂ©es «canaux»). L'ajustement des poids de chaque filtre s'effectue en utilisant la mĂȘme procĂ©dure de rĂ©tropropagation.

Évidemment, si le noyau du filtre pendant la numĂ©risation ne dĂ©passe pas l'image, la dimension de la carte d'entitĂ©s sera infĂ©rieure Ă  celle de l'image d'origine. Si vous souhaitez conserver la mĂȘme taille, appliquez les soi-disant rembourrages - valeurs qui complĂštent l'image sur les bords et qui sont ensuite capturĂ©es par le filtre avec les vrais pixels de l'image.


En plus des rembourrages, les changements dimensionnels sont Ă©galement affectĂ©s par les foulĂ©es - les valeurs de l'Ă©tape avec laquelle la fenĂȘtre se dĂ©place autour de l'image / de la carte.

La convolution n'est pas le seul moyen d'obtenir une caractéristique généralisée d'un groupe de pixels. La façon la plus simple de le faire est de sélectionner un pixel selon une rÚgle donnée, par exemple le maximum. C'est exactement ce que fait la couche MaxPooling.


Contrairement à la convolution, le maxpool est généralement appliqué aux groupes de pixels disjoints.

R-CNN


L'architecture du réseau R-CNN (Regions With CNNs) a été développée par une équipe de UC Berkley pour appliquer les réseaux de neurones à convolution à une tùche de détection d'objets. Les approches de résolution de ces problÚmes qui existaient à l'époque se rapprochaient au maximum de leurs capacités et leurs performances n'étaient pas significativement améliorées.

CNN a bien performĂ© dans la classification des images, et dans le rĂ©seau donnĂ©, elles ont Ă©tĂ© essentiellement appliquĂ©es pour la mĂȘme chose. Pour ce faire, non pas l'image entiĂšre a Ă©tĂ© envoyĂ©e Ă  l'entrĂ©e CNN, mais les rĂ©gions prĂ©alablement allouĂ©es d'une maniĂšre diffĂ©rente, sur lesquelles certains objets sont censĂ©s se trouver. À cette Ă©poque, il y avait plusieurs de ces approches, les auteurs ont choisi la recherche sĂ©lective , bien qu'ils indiquent qu'il n'y a pas de raisons particuliĂšres de prĂ©fĂ©rence.

Une architecture prĂȘte Ă  l'emploi a Ă©galement Ă©tĂ© utilisĂ©e comme rĂ©seau CNN - CaffeNet (AlexNet). Ces rĂ©seaux de neurones, comme d'autres pour l'ensemble d'images ImageNet, se classent en 1000 classes. R-CNN a Ă©tĂ© conçu pour dĂ©tecter des objets d'un plus petit nombre de classes (N = 20 ou 200), de sorte que la derniĂšre couche de classification de CaffeNet a Ă©tĂ© remplacĂ©e par une couche avec N + 1 sorties (avec une classe supplĂ©mentaire pour l'arriĂšre-plan).

La recherche sélective a renvoyé environ 2000 régions de tailles et de rapports d'aspect différents, mais CaffeNet accepte des images d'une taille fixe de 227x227 pixels en entrée, vous avez donc dû les modifier avant de soumettre des régions à l'entrée réseau. Pour cela, l'image de la région était enfermée dans le plus petit carré couvrant. Le long du cÎté (plus petit) le long duquel les champs ont été formés, plusieurs pixels «contextuels» (entourant la région) de l'image ont été ajoutés, le reste du champ n'était rempli de rien. Le carré résultant a été mis à l'échelle à une taille de 227x227 et alimenté à l'entrée de CaffeNet.


Malgré le fait que CNN s'est entraßné à reconnaßtre les classes N + 1, il n'a finalement été utilisé que pour extraire un vecteur caractéristique à 4096 dimensions fixes. N SVM linéaires ont été engagés dans la détermination directe de l'objet dans l'image, chacun d'eux a effectué une classification binaire en fonction de son type d'objets, déterminant s'il y avait une telle chose dans la région transférée ou non. Dans le document d'origine, l'ensemble de la procédure est illustré par le schéma suivant:


Les auteurs soutiennent que le processus de classification dans SVM est trÚs productif, étant essentiellement de simples opérations matricielles. Les vecteurs de caractéristiques obtenus à partir de CNN sont combinés sur toutes les régions dans une matrice 2000x4096, qui est ensuite multipliée par une matrice 4096xN avec des poids SVM.

Il convient de noter que les régions obtenues à l'aide de la recherche sélective ne peuvent contenir que certains objets, et non le fait qu'elles les contiennent dans leur intégralité. La prise en compte ou non d'une région contenant un objet a été déterminée par la métrique Intersection over Union (IoU) . Cette métrique est le rapport de la zone d'intersection d'une région candidate rectangulaire avec un rectangle qui englobe réellement l'objet à la zone d'union de ces rectangles. Si le rapport dépasse une valeur de seuil prédéterminée, la région candidate est considérée comme contenant l'objet souhaité.

IoU a Ă©galement Ă©tĂ© utilisĂ© pour filtrer un nombre excessif de rĂ©gions contenant un objet particulier (suppression non maximale). Si l'IoU d'une rĂ©gion avec une rĂ©gion qui a reçu le rĂ©sultat maximum pour le mĂȘme objet Ă©tait au-dessus d'un seuil, la premiĂšre rĂ©gion Ă©tait simplement jetĂ©e.

Au cours de la procĂ©dure d’analyse des erreurs, les auteurs ont Ă©galement dĂ©veloppĂ© une mĂ©thode qui permet de rĂ©duire l’erreur de sĂ©lection du cadre englobant de l’objet - rĂ©gression du cadre de dĂ©limitation. AprĂšs avoir classifiĂ© le contenu de la rĂ©gion candidate, quatre paramĂštres ont Ă©tĂ© dĂ©terminĂ©s en utilisant une rĂ©gression linĂ©aire basĂ©e sur les attributs de CNN - (dx, dy, dw, dh). Ils ont dĂ©crit Ă  quel point le centre du cadre de la rĂ©gion devait ĂȘtre dĂ©calĂ© de x et y, et Ă  quel point changer sa largeur et sa hauteur afin de couvrir plus prĂ©cisĂ©ment l’objet reconnu.

Ainsi, la procĂ©dure de dĂ©tection d'objets par le rĂ©seau R-CNN peut ĂȘtre divisĂ©e en les Ă©tapes suivantes:

  1. Mettez en surbrillance les régions candidates à l'aide de la recherche sélective.
  2. Conversion d'une région à la taille acceptée par CNN CaffeNet.
  3. Obtention à l'aide d'un vecteur d'entités CNN 4096.
  4. Réalisation de N classifications binaires de chaque vecteur caractéristique à l'aide de N SVM linéaires.
  5. Régression linéaire des paramÚtres de trame de région pour une couverture d'objet plus précise

Les auteurs ont noté que l'architecture qu'ils avaient développée fonctionnait également bien dans le problÚme de segmentation sémantique.

R-cnn rapide


Malgré les bons résultats, les performances de R-CNN étaient encore faibles, en particulier pour les réseaux plus profonds que CaffeNet (tels que VGG16). De plus, la formation pour le régresseur de boßte englobante et SVM a nécessité la sauvegarde d'un grand nombre d'attributs sur le disque, ce qui a coûté cher en termes de taille de stockage.

Les auteurs de Fast R-CNN ont proposé d'accélérer le processus en raison de quelques modifications:

  • Passer par CNN non pas chacune des 2000 rĂ©gions candidates sĂ©parĂ©ment, mais l'image entiĂšre. Les rĂ©gions proposĂ©es sont ensuite superposĂ©es sur la carte des caractĂ©ristiques communes rĂ©sultante;
  • Au lieu d'une formation indĂ©pendante de trois modĂšles (CNN, SVM, rĂ©gresseur bbox), combinez toutes les procĂ©dures de formation en une seule.

La conversion des signes qui sont tombĂ©s dans diffĂ©rentes rĂ©gions en une taille fixe a Ă©tĂ© effectuĂ©e en utilisant la procĂ©dure RoIPooling . Une fenĂȘtre de rĂ©gion de largeur w et de hauteur h a Ă©tĂ© divisĂ©e en une grille ayant des cellules H × W de taille h / H × w / W. (Les auteurs du document ont utilisĂ© W = H = 7). Pour chacune de ces cellules, Max Pooling a Ă©tĂ© effectuĂ© pour sĂ©lectionner une seule valeur, donnant ainsi la matrice de caractĂ©ristiques H × W rĂ©sultante.

Les SVM binaires n'ont pas été utilisés, mais les entités sélectionnées ont été transférées vers une couche entiÚrement connectée, puis vers deux couches parallÚles: softmax avec sorties K + 1 (une pour chaque classe + 1 pour l'arriÚre-plan) et régresseur de boßte englobante.

L'architecture générale du réseau ressemble à ceci:


Pour la formation conjointe du classificateur softmax et du régresseur bbox, la fonction de perte combinée a été utilisée:

L(p,u,tu,v)=Lcls(p,u)+ lambda[u ge1]Lloc(tu,v)


Ici:
u- la classe de l'objet effectivement représenté dans la région candidate;
Lcls(p,u)=− log(pu)- perte de log pour la classe u;
v=(vx,vy,vw,vh)- de réels changements dans le cadre de la région pour une couverture plus précise de l'objet;
tu=(txu,tyu,twu,thu)- changements prévus dans le cadre de la région;
Lloc- fonction de perte entre les changements de trame prévus et réels;
[u ge1]- fonction d'indicateur Ă©gale Ă  1 lorsque u ge1et 0 quand vice versa. Classe u=0l'arriĂšre-plan est indiquĂ© (c'est-Ă -dire l'absence d'objets dans la rĂ©gion).
 lambda- coefficient conçu pour Ă©quilibrer la contribution des deux fonctions de perte au rĂ©sultat global. Dans toutes les expĂ©riences des auteurs du document, cependant, il Ă©tait Ă©gal Ă  1.

Les auteurs mentionnent également qu'ils ont utilisé la décomposition SVD tronquée de la matrice de poids pour accélérer les calculs dans une couche entiÚrement connectée.

R-cnn plus rapide


AprĂšs les amĂ©liorations apportĂ©es Ă  Fast R-CNN, le goulot d'Ă©tranglement du rĂ©seau neuronal s'est avĂ©rĂ© ĂȘtre le mĂ©canisme pour gĂ©nĂ©rer des rĂ©gions candidates. En 2015, une Ă©quipe de Microsoft Research a pu accĂ©lĂ©rer considĂ©rablement cette Ă©tape. Ils ont suggĂ©rĂ© de calculer les rĂ©gions non pas Ă  partir de l'image d'origine, mais Ă  nouveau Ă  partir d'une carte de caractĂ©ristiques obtenue de CNN. Pour cela, un module appelĂ© Region Proposition Network (RPN) a Ă©tĂ© ajoutĂ©. L'architecture entiĂšre est la suivante:


Dans le cadre du RPN, selon le CNN extrait, ils glissent dans un «mini rĂ©seau neuronal» avec une petite fenĂȘtre (3x3). Les valeurs obtenues avec son aide sont transfĂ©rĂ©es vers deux couches parallĂšles entiĂšrement connectĂ©es: la couche de rĂ©gression de boĂźte (reg) et la couche de classification de boĂźte (cls). Les sorties de ces couches sont basĂ©es sur les soi-disant ancres: k cadres pour chaque position de la fenĂȘtre coulissante, qui ont des tailles et des rapports d'aspect diffĂ©rents. La couche Reg pour chacune de ces ancres produit 4 coordonnĂ©es, corrigeant la position du cadre englobant; La couche cls produit deux nombres chacun - la probabilitĂ© que la trame contienne au moins un objet ou non. Dans le document, cela est illustrĂ© par le schĂ©ma suivant:


Les couches reg et cls du processus d'apprentissage combinées; ils ont une fonction de perte en commun, qui est la somme des fonctions de perte de chacun d'eux, avec un coefficient d'équilibrage.

Les deux couches RPN ne proposent que des offres pour les régions candidates. Celles qui sont trÚs susceptibles de contenir un objet sont transmises au module de détection et de raffinement d'objet, qui est toujours implémenté en tant que Fast R-CNN.

Afin de partager les fonctionnalités obtenues dans CNN entre le RPN et le module de détection, le processus de formation de l'ensemble du réseau est construit de maniÚre itérative en plusieurs étapes:

  1. La partie RPN est initialisée et formée pour identifier les régions candidates.
  2. En utilisant les régions RPN proposées, la partie Fast R-CNN est recyclée.
  3. Un réseau de détection formé est utilisé pour initialiser les poids des RPN. Cependant, les couches de convolution générales sont fixes et seules les couches spécifiques au RPN sont réaccordées.
  4. Avec des couches de convolution fixes, Fast R-CNN est enfin réglé.

Le schĂ©ma proposĂ© n'est pas le seul, et mĂȘme dans sa forme actuelle, il peut ĂȘtre poursuivi par d'autres Ă©tapes itĂ©ratives, mais les auteurs de l'Ă©tude originale ont menĂ© des expĂ©riences prĂ©cisĂ©ment aprĂšs une telle formation.

Masque r-cnn


Mask R-CNN développe l'architecture Faster R-CNN en ajoutant une autre branche qui prédit la position du masque couvrant l'objet trouvé, et résout ainsi le problÚme de segmentation d'instance. Le masque est juste une matrice rectangulaire, dans laquelle 1 à une certaine position signifie que le pixel correspondant appartient à un objet d'une classe donnée, 0 - que le pixel n'appartient pas à l'objet.



La visualisation de masques multicolores sur les images source peut donner des images colorées:



Les auteurs du document divisent conditionnellement l'architecture dĂ©veloppĂ©e en un rĂ©seau CNN pour calculer les caractĂ©ristiques de l'image, appelĂ© l'Ă©pine dorsale, et la tĂȘte - l'union des parties chargĂ©es de prĂ©dire le cadre enveloppant, de classer l'objet et de dĂ©terminer son masque. La fonction de perte est courante pour eux et comprend trois composants:

L=Lcls+Lbox+Lmask


L'extraction des masques a lieu dans un style indépendant de la classe: les masques sont prédits séparément pour chaque classe, sans connaissance préalable de ce qui est représenté dans la région, puis le masque de la classe qui a remporté le classificateur indépendant est simplement sélectionné. On fait valoir qu'une telle approche est plus efficace que de s'appuyer sur une connaissance a priori de la classe.

L'une des principales modifications rĂ©sultant de la nĂ©cessitĂ© de prĂ©dire le masque est un changement de la procĂ©dure RoIPool (qui calcule la matrice de caractĂ©ristiques pour la rĂ©gion candidate) vers ce que l'on appelle RoIAlign . Le fait est que la carte d'entitĂ©s obtenue Ă  partir de CNN a une taille plus petite que l'image d'origine, et la rĂ©gion couvrant le nombre entier de pixels dans l'image ne peut pas ĂȘtre affichĂ©e dans une rĂ©gion proportionnelle de la carte avec le nombre d'entitĂ©s:




Dans RoIPool, le problÚme a été résolu simplement en arrondissant les valeurs fractionnaires aux nombres entiers. Cette approche fonctionne bien lors de la sélection du cadre englobant, mais le masque calculé sur la base de ces données est trop imprécis.

En revanche, RoIAlign n'utilise pas d'arrondi, tous les nombres restent valides et une interpolation bilinéaire sur les quatre points entiers les plus proches est utilisée pour calculer les valeurs d'attribut.

Dans le document d'origine, la différence est expliquée comme suit:


Ici, la carte hachurée dénote une carte d'entités, et continue - l'affichage sur la carte d'entités de la région candidate à partir de la photographie originale. Il devrait y avoir 4 groupes dans cette région pour la mise en commun maximale avec 4 attributs indiqués par des points sur la figure. Contrairement à la procédure RoIPool, qui, en raison de l'arrondi, alignerait simplement la région avec des coordonnées entiÚres, RoIAlign laisse les points à leur emplacement actuel, mais calcule les valeurs de chacun d'eux en utilisant une interpolation bilinéaire selon les quatre signes les plus proches.

Interpolation bilinéaire
L'interpolation bilinéaire de la fonction de deux variables est réalisée en appliquant une interpolation linéaire, d'abord dans le sens de l'une des coordonnées, puis dans l'autre.
Soit qu'il soit nécessaire d'interpoler la valeur de la fonction f(x,y)au point P avec des valeurs connues de la fonction aux points environnants Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1),Q22=(x2,y2)(voir photo ci-dessous). Pour ce faire, les valeurs des points auxiliaires R1 et R2 sont d'abord interpolées, puis la valeur au point P est interpolée en fonction d'eux.


R1=(x,y1)

R2=(x,y2)

f(R1)≈ frac(x2−x)(x2−x1)f(Q11)+ frac(x−x1)(x2−x1)f(Q21)

f(R2)≈ frac(x2−x)(x2−x1)f(Q12)+ frac(x−x1)(x2−x1)f(Q22)

f(P)≈(y2−y)(y2−y1)f(R1)+(y−y1)(y2−y1)f(R2)


( — , )

En plus des résultats élevés dans les tùches de segmentation d'instance et de détection d'objets, le masque R-CNN s'est révélé approprié pour déterminer la pose de personnes en photographie (estimation de la pose humaine). Le point clé ici est la sélection de points clés (points clés), tels que l'épaule gauche, le coude droit, le genou droit, etc., par lesquels vous pouvez dessiner un cadre de la position d'une personne:



Pour dĂ©terminer les points de rĂ©fĂ©rence, le rĂ©seau neuronal est entraĂźnĂ© de maniĂšre Ă  ce qu'il dĂ©livre des masques, en dont un seul pixel (le mĂȘme point) avait une valeur de 1, et le reste - 0 (masque un-chaud). Dans le mĂȘme temps, le rĂ©seau s'entraĂźne Ă  Ă©mettre K de tels masques Ă  pixel unique, un pour chaque type de point de rĂ©fĂ©rence.

Réseaux de pyramides


Dans des expĂ©riences sur le masque R-CNN, ainsi que l'habituel CNN ResNet-50/101 comme colonne vertĂ©brale, des Ă©tudes ont Ă©galement Ă©tĂ© menĂ©es sur la faisabilitĂ© de l'utilisation de Feature Pyramid Network (FPN). Ils ont montrĂ© que l'utilisation du FPN dans le squelette donne au Mask R-CNN une augmentation Ă  la fois de la prĂ©cision et des performances. Il est donc utile de dĂ©crire l'amĂ©lioration de la mĂȘme maniĂšre, malgrĂ© le fait qu'un document distinct lui soit dĂ©diĂ© et ait peu Ă  voir avec la sĂ©rie d'articles Ă  l'Ă©tude.
Les pyramides d'objets, comme les pyramides d'images, ont pour but d'améliorer la qualité de détection des objets, en tenant compte d'un large éventail de leurs tailles possibles.

Dans Feature Pyramid Network, les cartes d'entités extraites par des couches CNN successives avec des dimensions décroissantes sont considérées comme une sorte de "pyramide" hiérarchique appelée la voie ascendante. De plus, les cartes des signes des niveaux inférieur et supérieur de la pyramide ont leurs avantages et leurs inconvénients: les premiers ont une capacité de généralisation haute résolution mais faible sémantique; le second - au contraire:


L'architecture FPN vous permet de combiner les avantages des couches supérieures et inférieures en ajoutant un chemin descendant et des connexions latérales. Pour cela, la carte de chaque couche superposée est agrandie à la taille de la couche sous-jacente et leur contenu est ajouté élément par élément. Dans les prédictions finales, les cartes résultantes de tous les niveaux sont utilisées.

SchĂ©matiquement, cela peut ĂȘtre reprĂ©sentĂ© comme suit:


L'augmentation de la taille de la carte de niveau supérieur (suréchantillonnage) se fait par la méthode la plus simple - le plus proche voisin, c'est-à-dire approximativement comme ceci:


Liens utiles


Documents de recherche originaux sur arXiv.org:

1. R-CNN: https://arxiv.org/abs/1311.2524

2. R-CNN rapide: https://arxiv.org/abs/1504.08083

3. R-CNN plus rapide : https://arxiv.org/abs/1506.01497

4. Masque R-CNN: https://arxiv.org/abs/1703.06870

5. Feature Pyramid Network: https://arxiv.org/abs/1612.03144

Sur support moyen. com au sujet du Masque R-CNN il y a beaucoup d'articles, ils sont faciles à trouver. Comme références, je n'apporte que celles que j'ai lues:

6. Compréhension simple du masque RCNN - un bref résumé des principes de l'architecture résultante.

7. Une brĂšve histoire des CNN dans la segmentation d'image: du R-CNN au masque R-CNN- L'histoire du dĂ©veloppement du rĂ©seau dans le mĂȘme ordre chronologique que dans cet article.

8. Du R-CNN au masque R-CNN est une autre considération des stades de développement.

9. Splash of Color: Segmentation d'instance avec Mask R-CNN et TensorFlow - implémentation d'un réseau de neurones dans la bibliothÚque opensource de Matterport.

Le dernier article, en plus de décrire les principes du Masque R-CNN, offre la possibilité d'essayer le réseau en pratique: pour colorier des ballons de différentes couleurs sur des images en noir et blanc.

De plus, vous pouvez vous entraßner avec le réseau neuronal sur le modÚle que j'ai utilisé dans le concours de kaggle Data Science Bowl 2018 (mais pas seulement avec ce modÚle, bien sûr; vous pouvez trouver beaucoup de choses intéressantes dans les sections Kernels et Discussions):

10. Masque R- CNN dans PyTorch par Heng CherKeng. La mise en Ɠuvre implique une sĂ©rie d'Ă©tapes de dĂ©ploiement; l'auteur fournit des instructions. Le modĂšle nĂ©cessite PyTorch 0.4.0, la prise en charge de l'informatique GPU, NVIDIA CUDA. Si mon propre systĂšme ne rĂ©pond pas aux exigences, je peux recommander des images Deep Learning AMI pour les machines virtuelles Amazon (les instances sont payantes, avec une facturation horaire, la taille minimale appropriĂ©e, apparemment, est p2.xlarge).

Je suis également tombé sur le hub, un article sur l'utilisation du réseau de Matterport dans le traitement d'image avec des plats (bien que sans source). J'espÚre que l'auteur ne sera satisfait que de la mention supplémentaire:

11. ConvNets. Prototype d'un projet Ă  l'aide du masque R-CNN

Source: https://habr.com/ru/post/fr421299/


All Articles