Region Proposal Network : RPN

Original article was published on Artificial Intelligence on Medium

Region Proposal Network : RPN

Résultat d’un algorithme de détection

Si vous êtes familiers de ce que l’on appelle les R-CNN (Region-based Convolutional Neural Networks), alors vous avez certainement entendu parler du RPN, pour Region Proposal Network.

Introduisons ce type bien particulier de réseau de neurones en posant la première et la plus importante des questions : à quoi ça sert ?

A quoi servent les RPN ?

Les RPN n’ont pas beaucoup d’intérêt pris séparément. Ils sont un composant d’un réseau plus grand. On les utilise notamment pour la détection d’objets dans les images.

Ils sont en charge de “proposer” des zones de l’image qui contiennent potentiellement un object intéressant, avant la classification finale qui dira si chaque zone contient effectivement un object digne d’être détecté et quel objet est-ce.

Comment fonctionnent-ils ?

Les RPN sont situés entre la couche finale densément connectée et le réseau convolutionnel (le plus souvent).

Schéma d’un réseau de détection d’objets

Notre RPN se situe entre les “feature maps” (en français cartes des caractéristiques) et ce qui sur le schéma s’appelle “proposals” (propositions), les zones potentiellement intéressantes, qui constituent la sortie du RPN.

Architecture

L’architecture du RPN est assez particulière. Le RPN fait glisser une fenêtre en long et en large de l’image, au centre de laquelle se trouve ce que les auteurs ont appelé l’ancre. L’ancre est simplement le pixel central d’une fenêtre.

Bien entendu, les régions qui contiennent un objet peuvent avoir différentes tailles et différents aspects (l’aspect est le ratio longueur / largeur). Dans le cas du RPN, au moment de l’entraînement du réseau, le développeur choisit K1 tailles et K2 aspects différents. Dans le RPN original K1 = K2 = 3. 3 x 3 = 9 types de zone pour chaque ancre. Autrement dit, chaque ancre pourra être le centre de 9 zones différentes potentielles, correspondantes aux tailles et aux aspects choisit par le développeur.

Si l’on note K1 le nombre de tailles et K2 le nombre d’aspects différents, il y aura donc en tout H x W x K1 x K2 ancres pour une image de longueur H et de largeur W.

Pour chacune de ces régions, le RPN dispose de deux mécanismes :

  • un système de classification
  • un système de régression

Le classifieur a pour objectif d’assigner une probabilité à une région de contenir un objet tandis que le système de régression adapte les coordonnées de la région. La probabilité d’une région de contenir un objet est notée p ou pi (probabilité de la zone i de contenir un objet). Les coordonnées (4 points) de chaque région sont notées t (ou ti pour la région i), t est donc un vecteur de taille 4.

Un RPN est un réseau qui est paramétré au fur et à mesure de l’apprentissage. Il a donc besoin d’une fonction de coût pour se paramétrer.

Voici à quoi ressemble cette fonction de coût :

Fonction de coût du RPN

Décomposons-la pour la rendre plus explicite :

Terme de la fonction de coût relatif à la classification
Terme de la fonction de coût relatif à la régression

Nclasses et Nregression sont utilisés pour normaliser chaque terme et lambda sert à équilibrer les deux termes (on utilise généralement lambda = 10), sinon la classification aurait un poids trop important et la fonction de coût ne tiendrait pas assez compte de la régression.

Finalement, Lclasses est en général une “log-loss”. La log-loss est souvent plus intéressante que la simple précision, parce qu’elle permet de nuancer à quel point notre prédiction est proche de la valeur réelle.

Voici son graphique :

Log Loss

Conclusion

Les RPN sont un composant indispensable de certains algorithme de détection, et sont utilisés pour les voitures autonomes notamment. Il est donc utile d’en connaitre le principe !