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



La technologie de vision par ordinateur permet dans la réalité d'aujourd'hui de rendre la vie et les affaires plus faciles, moins chères et plus sûres. Selon de divers experts, ce marché se déplacera dans les années à venir que dans le sens de la croissance, ce qui permet le développement de technologies appropriées dans le sens de la productivité et de la qualité. L'une des sections les plus populaires est la détection d'objets (détection d'objets) - la définition d'un objet dans l'image ou dans le flux vidéo.

L'époque où la détection d'objets était résolue exclusivement par le biais de l'apprentissage automatique classique (cascades, SVM ...) est déjà révolue - des approches basées sur le Deep Learning règnent dans ce domaine. En 2014, une approche a été proposée qui a considérablement influencé la recherche et le développement ultérieurs dans ce domaine - le modèle R-CNN. Ses améliorations ultérieures (sous la forme de Fast R-CNN et Faster R-CNN) en ont fait l'une des plus précises, ce qui est devenu la raison de son utilisation à ce jour.

En plus de R-CNN, il existe de nombreuses autres approches qui recherchent des objets: la famille Yolo, SSD, RetinaNet, CenterNet ... Certaines proposent une approche alternative, tandis que d'autres développent l'actuelle dans le sens d'augmenter l'indicateur de performance. Une discussion sur presque chacun d'entre eux peut être présentée dans un article séparé, en raison de l'abondance de jetons et de trucs :)

Pour étudier, je propose un ensemble d'articles avec l'analyse de modèles de détection d'objets en deux étapes. La capacité de comprendre leur appareil apporte une compréhension des idées de base utilisées dans d'autres implémentations. Dans cet article, nous examinerons le plus élémentaire et, par conséquent, le premier d'entre eux - R-CNN.

Terminologie


Le cadre de sélection - les coordonnées qui délimitent une zone spécifique d'une image - le plus souvent sous la forme d'un rectangle. Il peut être représenté par 4 coordonnées dans deux formats: centré (cx,cy,w,h) et régulier (xmin,ymin,xmax,ymax)

Hypothèse (proposition), P - une certaine région de l'image (spécifiée à l'aide du cadre de sélection) dans laquelle l'objet est censé se trouver.

Formation de bout en bout - formation dans laquelle des images brutes arrivent à l'entrée du réseau et des réponses toutes faites sortent.

IoU (Intersection-over-Union) - mesure du degré d'intersection entre deux boîtes englobantes.

R-CNN


L'une des premières approches applicables pour déterminer l'emplacement d'un objet dans une image est le R-CNN (Region Convolution Neural Network). Son architecture se compose de plusieurs étapes successives et est illustrée à la figure 1:

  1. Définir un ensemble d'hypothèses.
  2. Extraire des caractéristiques de régions potentielles à l'aide d'un réseau de neurones convolutionnels et les coder en un vecteur.
  3. La classification d'un objet dans une hypothèse basée sur le vecteur de l'étape 2.
  4. Amélioration (ajustement) des coordonnées de l'hypothèse.
  5. Tout se répète à partir de l'étape 2 jusqu'à ce que toutes les hypothèses de l'étape 1 soient traitées.

Examinez chaque étape plus en détail.



Recherche d'hypothèse


Ayant une image spécifique à l'entrée, la première chose se décompose en petites hypothèses de tailles différentes. Les auteurs de cet article utilisent la recherche sélective - de niveau supérieur, elle vous permet de compiler un ensemble d'hypothèses (la classe de l'objet n'a pas encore d'importance), basée sur la segmentation pour déterminer les limites des objets par intensité de pixel, différence de couleur, contraste et texture. Dans le même temps, les auteurs notent que tout algorithme similaire peut être utilisé. Ainsi, environ 2 000 régions différentes se distinguent, qui se chevauchent partiellement. Pour un traitement ultérieur plus précis, chaque hypothèse est encore développée de 16 pixels dans les 4 directions - comme pour ajouter du contexte .

Total:

  • Entrée: image originale.
  • Sortie: un ensemble d'hypothèses de différentes tailles et proportions.

Encodage d'image


Chaque hypothèse de l'étape précédente, indépendamment et séparément les unes des autres, entre dans l'entrée du réseau neuronal convolutionnel. Il utilise l'architecture d'AlexNet sans la dernière couche softmax. La tâche principale du réseau est de coder l'image entrante dans une représentation vectorielle qui est extraite de la dernière couche FC7 entièrement connectée . La sortie est donc une représentation vectorielle à 4096 dimensions.

Vous pouvez remarquer que l'entrée d'AlexNet a une dimension de 3 × 227 × 227, et la taille de l'hypothèse peut être presque n'importe quel rapport d'aspect et taille. Ce problème est ignoré en compressant ou en étirant simplement l'entrée à la taille souhaitée.

Total:

  • Entrée: chaque hypothèse proposée à l'étape précédente.
  • Sortie: représentation vectorielle pour chaque hypothèse.

Classification


Après avoir obtenu le vecteur caractérisant l'hypothèse, son traitement ultérieur devient possible. Pour déterminer quel objet se trouve dans la région souhaitée, les auteurs utilisent la méthode classique de classification des plans de séparation basée sur SVM (Support Vector Machine - une machine à vecteur de support, peut être modélisée à l'aide de la perte de charnière ). Et ça devrait êtreNc+1 individuel (ici, Ncindique le nombre de classes d'objets définies, et une unité est ajoutée pour déterminer séparément l'arrière-plan) des modèles formés selon le principe OvR (Un contre le repos - un contre tous, l'une des méthodes de classification multiclasse). En fait, le problème de classification binaire est en cours de résolution - existe-t-il ou non une classe concrète d'un objet à l'intérieur de la région proposée? Donc, la sortie estNc+1- vecteur dimensionnel représentant la confiance dans une classe particulière de l'objet contenu dans l'hypothèse (l'arrière-plan est historiquement désigné par la classe zéro,Ci=0)

Total:

  • Input: le vecteur de chacune des hypothèses proposées de l'avant-dernière couche du réseau (dans le cas d'AlexNet, c'est FC7).
  • Sortie: après lancement séquentiel de chaque hypothèse, on obtient une matrice de dimension 2000×Ncreprésentant la classe de l'objet pour chaque hypothèse.

Spécification des coordonnées des hypothèses


Les hypothèses obtenues à l'étape 1 ne contiennent pas toujours les coordonnées correctes (par exemple, un objet peut être «recadré» sans succès), il est donc logique de les corriger en plus. Selon les auteurs, cela apporte 3-4% supplémentaires aux mesures. Ainsi, les hypothèses contenant un objet (la présence d'un objet est déterminée à l'étape de classification) sont en outre traitées par régression linéaire. Autrement dit, les hypothèses avec la classe «background» n'ont pas besoin de traitement supplémentaire des régions, car en fait il n'y a pas d'objet là ...

Chaque objet, spécifique à sa classe, a certaines tailles et proportions, donc, ce qui est logique, il est recommandé d'utiliser votre propre régresseur pour chaque classe .

Contrairement à l'étape précédente, les auteurs utilisent un non-vecteur de la couche FC7 pour que l'entrée fonctionne le mieuxet des cartes d'entités extraites de la dernière couche MaxPooling (dans AlexNet, MaxPool5, dimension 256 × 6 × 6). L'explication est la suivante - le vecteur stocke des informations sur la présence d'un objet avec quelques détails caractéristiques, et la carte d'entités stocke le mieux les informations sur l'emplacement des objets.

Total:

  • Entrée: une carte des attributs de la dernière couche MaxPooling pour chaque hypothèse qui contient n'importe quel objet à l'exception de l'arrière-plan.
  • Sortie: corrections des coordonnées de la boîte englobante de l'hypothèse.

Astuces d'aide


Avant de passer aux détails de la formation du modèle, nous considérerons deux astuces nécessaires dont nous aurons besoin plus tard.

Désignation d'hypothèses positives et négatives


Lorsque vous enseignez avec un professeur, un certain équilibre entre les cours est toujours nécessaire. L'inverse peut conduire à une mauvaise précision de classification. Par exemple, si dans un échantillon avec deux classes, la première ne se produit que dans quelques pour cent des cas, il est difficile pour le réseau d'apprendre à la déterminer, car elle peut être interprétée comme une valeur aberrante. Dans le cas des tâches de détection d'objets, un tel problème est présent - dans l'image avec un seul objet, seules quelques hypothèses (de ~ 2000) contiennent cet objet même (Ci>0), et tout le monde est l'arrière-plan (Ci=0)

Nous prenons la notation nécessaire: les hypothèses contenant des objets seront appelées positives (positives), et sans objets (ne contenant que l'arrière-plan ou une partie insignifiante de l'objet) - négatives (négatives).

Afin de déterminer ultérieurement l'intersection entre les deux régions de l'image, la métrique Intersection over Union sera utilisée . Il est considéré comme assez simple: la zone d'intersection de deux régions est divisée par la superficie totale des régions. Dans l'image ci-dessous, vous pouvez voir des illustrations d'exemples de comptage métrique.



Avec des hypothèses positives, tout est clair - si la classe est définie incorrectement, vous devez être condamné à une amende. Mais qu'en est-il du négatif? Il y en a beaucoup plus que des positifs ... Pour commencer, nous constatons que toutes les hypothèses négatives ne sont pas aussi difficiles à reconnaître. Par exemple, les cas ne contenant que l'arrière-plan ( négatif facile ) sont beaucoup plus faciles à classer que de contenir un autre objet ou une petite partie du désiré ( négatif dur ).

En pratique, le négatif facile et le négatif dur sont déterminés par l'intersection du cadre de sélection (juste utilisé Intersection sur Union) avec la position correcte de l'objet dans l'image. Par exemple, s'il n'y a pas d'intersection, ou si elle est extrêmement petite, c'est facilement négatif (Ci=0) si grand est dur négatif ou positif.

L'approche de l' extraction négative dure suggère d'utiliser uniquement des négatifs durs pour la formation, car en apprenant à les reconnaître, nous obtenons automatiquement le meilleur travail avec des hypothèses négatives faciles. Mais une telle idéologie ne sera appliquée que dans les implémentations ultérieures (à commencer par Fast R-CNN).

Suppression non maximale


Très souvent, il s'avère que le modèle identifie plusieurs hypothèses avec une grande confiance pointant vers le même objet. En utilisant la suppression non maximale (NMS), vous pouvez gérer de tels cas et ne laisser qu'une seule, meilleure boîte englobante. Mais en même temps, n'oubliez pas le cas où l'image peut avoir deux objets différents de la même classe. La figure 3 illustre l'effet de l'opération avant (gauche) et après (droite) l'opération de l'algorithme.



Considérez l'algorithme pour travailler sur une classe (en réalité, il est appliqué à chaque classe séparément):

  1. En entrée, la fonction prend un ensemble d'hypothèses pour une classe et un seuil qui définit l'intersection maximale entre les hypothèses.
  2. Les hypothèses sont triées selon leur «confiance».
  3. Dans le cycle, la première hypothèse est sélectionnée (elle a la valeur de confiance la plus élevée) et est ajoutée au jeu de résultats.
  4. Dans le cycle, la deuxième hypothèse suivante est sélectionnée (parmi celles qui restent après l'étape 3).
  5. Si l'intersection entre les hypothèses sélectionnées est supérieure au seuil sélectionné (l'intersection est calculée sur la base de l'intersection de l'union), alors la deuxième hypothèse est rejetée et n'est plus présente dans l'ensemble de résultats.
  6. Tout se répète de l'étape 3 jusqu'à ce que les hypothèses soient complètement énumérées.

Le pseudocode ressemble à ceci:

function nms(hypotheses, threshold):
    sorted = sort(hypotheses.values, key=hypotheses.scores)
    result = []
    for first in sorted:
        result.join(first)
        without_first = sorted / first
        for second in without_first:
            if IoU(first, second) > threshold:
                 sorted.remove(second)
    return result


Entraînement


Le bloc d'isolement d'hypothèse n'est pas apprenant.

Le réseau étant divisé en plusieurs blocs distincts les uns des autres, il ne peut pas être formé de bout en bout. Ainsi, l'apprentissage est un processus séquentiel.

Formation en vue vectorielle


Le réseau pré-formé sur ImageNet est pris comme base - ces réseaux peuvent déjà bien extraire des fonctionnalités importantes des images entrantes - il reste à les former à travailler avec les classes nécessaires. Pour ce faire, changez la dimension du calque de sortie enNcet former une version déjà modifiée. Les premières couches peuvent être bloquées, car elles extraient les caractéristiques principales (presque identiques pour toutes les images), et les suivantes lors de la formation s'adaptent aux caractéristiques des classes souhaitées. La convergence sera donc beaucoup plus rapide. Mais si la formation se déroule toujours mal, vous pouvez déverrouiller les couches primaires. Puisqu'il est nécessaire d'ajuster précisément les poids existants. Il n'est pas recommandé d'utiliser un taux d'apprentissage élevé (taux d'apprentissage) - vous pouvez effacer très rapidement les poids existants.

Lorsque le réseau a appris à bien classer les objets, la dernière couche avec activation SoftMax est ignorée et la couche FC7 devient la sortie, dont la sortie peut à son tour être interprétée comme une représentation vectorielle de l'hypothèse.

À cette étape, les hypothèses positives croisent la position correcte de l'objet (IoU) de plus de 0,5. Tous les autres sont considérés comme négatifs. Pour mettre à jour les échelles, un mini-lot de 128 est utilisé, composé de 32 hypothèses positives et 96 hypothèses négatives.

Formation de classificateur


Je vous rappelle, car la classification de chaque hypothèse est utilisée Nc+1Les modèles SVM qui reçoivent l'entrée de la représentation vectorielle de l'hypothèse, et basés sur le principe de l' un contre l'autre (One-vs-Rest) déterminent la classe de l'objet. Ils sont formés comme des modèles SVM ordinaires à une exception près - à cette étape, la définition des positifs et des négatifs est légèrement différente. Ici, les hypothèses sont considérées comme négatives, dont l'intersection avec la position correcte est inférieure à 0,3.

Régression de la formation


Dénoter:

  • G=(gx,gy,gw,gh)- les coordonnées correctes de l'objet;
  • G^=(gx^,gy^,gw^,gh^)- position corrigée des coordonnées des hypothèses (doit coïncider avec G);
  • T=(tx,ty,tw,ty)- corrections correctes des coordonnées;
  • P=(px,py,pw,ph)- coordonnées de l'hypothèse;

Les régresseurs (un pour chaque classe) représentent donc quatre fonctions:

  • dx(P), dy(P)- déterminer les corrections des coordonnées du centre (x,y) Pour obtenir l'effet de l'indépendance par rapport à la taille d'origine, la correction doit être normalisée.
  • dw(P)et dh(P)- déterminer les corrections de la largeur et de la hauteur dans l'espace logarithmique (l'espace logarithmique est utilisé pour la stabilité numérique et la division - pour déterminer la direction de la correction).

Désigner par φ5(P)carte des entités obtenue de MaxPool5couche réseau (rappel, elle a une dimension de 256 × 6 × 6, puis elle est simplement étirée), quand une hypothèse est limitée aux coordonnées en appliquant au réseau P. Nous chercherons une transformationP à Gcomme:

\ begin {align} De plus
gx^=pwdx(P)+pxgy^=phdy(P)+pygw^=pwedw(P)gh^=phedh(P)

d(P)=wTφ5(P)(ici (x,y,w,h)) est une fonction linéaire et le vecteur west recherché en utilisant le problème d'optimisation (régression de crête):

w=argmaxw^iN(Tid(P))2+λwx^2


Pour déterminer les corrections aux coordonnées, nous collectons des paires entre la position correcte des hypothèses Get leur état actuel Pet définissez les valeurs Tcomme:

\ begin {align} La notation dans les formules à l'intérieur de cet article peut différer de la notation de l'article d'origine pour une meilleure compréhension. Puisqu'il y a environ 2000 hypothèses sur la sortie du réseau, elles sont combinées en utilisant la suppression non maximale. Les auteurs de l'article indiquent également que si au lieu de SVM vous utilisez la couche SoftMax (qui a été dépliée lors de la deuxième étape), la précision diminue de ~ 4-4,5% (ensemble de données VOC 2007), mais ils notent que le meilleur ajustement des échelles aidera probablement à se débarrasser d'un tel problème.
Tx=gxpxpwTy=gypyphTw=loggwpwTh=logghph





En conclusion, nous soulignons les principaux inconvénients de cette approche:


  1. Les hypothèses proposées à l'étape 1 peuvent se dupliquer partiellement - différentes hypothèses peuvent être constituées de parties identiques, et chacune de ces hypothèses a été traitée séparément par un réseau de neurones. Il s'avère que la plupart des réseaux se lancent plus ou moins en double inutilement.
  2. Il ne peut pas être utilisé pour un fonctionnement en temps réel, car environ 53 secondes sont consacrées au passage d'une image (image) (GPU NVIDIA Titan Black).
  3. L'algorithme d'extraction d'hypothèse n'est enseigné en aucune façon, et donc une amélioration supplémentaire de la qualité est presque impossible (personne n'a annulé de mauvaises hypothèses).

Cela analyse le tout premier modèle R-CNN. Des implémentations plus avancées (sous la forme de Fast R-CNN et Faster R-CNN) sont discutées dans un article séparé .

Bibliographie


1. R. Girshick, J. Donahue, T. Darrell et J. Malik. «Hiérarchies de fonctionnalités riches pour une détection précise des objets et une segmentation sémantique.» Dans CVPR, 2014. arXiv: 1311.2524

2. R. Girshick, J. Donahue, T. Darrell et J. Malik. «Réseaux convolutionnels régionaux pour une détection et une segmentation précises des objets.» TPAMI, 2015

Publié par: Sergey Mikhaylin, spécialiste en apprentissage automatique, Jet Infosystems

All Articles