Comment enseigner à un ordinateur la reconnaissance d’éléments dans une image ? Ce problème a fait l’objet de vastes recherches. L’apparition de R-CNN a constitué une étape majeure en la matière.
Doter un ordinateur de vision est une quête qui s’est étendue sur plusieurs décennies. Comment amener une machine à distinguer ce qui est quoi dans une scène captée par une caméra ? Les applications de reconnaissance d’image se sont acharnées à déterminer :
- les éléments présents dans une image, à partir de caractéristiques telles que leurs contours ;
- la classification des objets distinctifs : personnages, animaux, meubles, véhicules…
Diverses technologies ont été imaginées en vue de résoudre ces problèmes. CNN, puis R-CNN figurent parmi les réponses les plus efficaces apportées.
Pour mieux comprendre ce qu’elles ont apportées, il peut être bon de revenir sur l’approche mise en œuvre auparavant.
De SVM aux CNN
L’approche SVM (Support Vector Machine) reposait sur les valeurs des pixels individuels au sein d’une image. Elle pêchait à de nombreux niveaux, notamment celui-ci : le développeur devait lui-même sélectionner et identifier les caractéristiques des données utilisées pour l’entraînement de l’algorithme.
Il était nécessaire de pouvoir tôt ou tard automatiser cette tâche, sans la nécessité d’une intervention humaine. À cette fin, le chercheur français Yann Le Cun a présenté le concept des CNN en 1998.
Réseaux neuronaux convolutif (CNN)
Les CNN peuvent être considérés comme des extracteurs automatiques de caractéristiques au sein d’une image. Si NN signifie Neural Network (réseau de neurones), le C signifie convolutif.
La convolution est une technique qui utilise un filtre pour transformer une image en une autre, à l’aide d’opérations mathématiques.
AlexNet
Plus tard, en 2012, trois ingénieurs, Alex Krizhevsky, Ilya Sutskever et Geoffrey Hinton ont proposé un CNN élaboré, AlexNet, reposant sur plusieurs couches de convolution. AlexNet s’est distingué en remportant une importante compétition de reconnaissance d’image, ILSVRC (ImageNet Large Scale Visual Recognition Challenge). Dès lors, il est apparu que les CNN étaient en mesure de surpasser les techniques traditionnelles de reconnaissance d’image.
R-CNN ou les CNN basé sur des Régions
Les CNN étaient encore limités car leur classification ne pouvait être accomplie que sur un seul objet d’une image. De ce fait, en 2014, Ross Girshick a proposé un algorithme de détection d’objets plus poussé : R-CNN ou CNN basé sur les Régions. Ce modèle pionnier a fortement aidé à faire avancer le domaine de la détection d’objets. L’architecture R-CNN, à partir d’une image d’entrée, extrait des propositions de régions, calcule ensuite leurs caractéristiques CNN et s’évertue à les classifier.
Comment fonctionne R-CNN ?
Le fonctionnement de R-CNN se déroule ainsi.
Proposition de régions
R-CNN commence par diviser l’image d’entrée en plusieurs régions potentielles. Les caractéristiques où un objet peut être localisé sont déterminées au moyen de méthodes telles que le selective search (recherche sélective). Ce selective search fonctionne en fusionnant ou en divisant des segments de l’image selon divers indices : couleur, forme, texture…
Extraction de caractéristiques
Classification des objets
Les vecteurs de caractéristiques issus des propositions de régions sont alimentés dans un classificateur d’apprentissage automatique visant à déterminer si la proposition de région contient ou non une instance d’une classe prédéfinie.
Bounding Box Regression - Régression de la boîte englobante
R-CNN effectue une régression de la boîte englobante, afin d’affiner l’emplacement et la taille de la boîte englobante autour de l’objet détecté.
Non-Maximum Suppression (NMS)
Une fois qu’il a classé les boîtes englobantes et opéré une régression pour chaque région proposée, R-CNN applique un algorithme de « suppression non maximale » qui vise à éliminer les boîtes englobantes en double ou fortement superposées.
R-CNN : flexible et robuste
La publication de l’article de Ross Girshick sur R-CNN a été une étape majeure dans le domaine de la vision par ordinateur. Il a démontré qu’il était possible d’atteindre des performances élevées dans la détection d’objets dans une image et a permis de les localiser de façon précise grâce aux boîtes englobantes.
L’expérience a démontré que l’approche R-CNN était à la fois flexible – adaptable à des cas de figure très variés – mais aussi robuste. Elle a été mise à profit sur sur de nombreux scénarios du monde réel comme l’identification d’objets abandonnés dans des zones publiques ou encore la détection d’obstacles par des véhicules autonomes.
Le Fast R-CNN
Pourtant, R-CNN n’est pas le modèle le plus rapide qui soit. Dans la mesure où chaque image doit classifier 2000 propositions de région, il faut un certain temps pour entraîner le réseau et aussi un espace disque important pour stocker la carte de caractéristiques de la proposition de région.
Par la force des choses, R-CNN a donc ouvert la voie à des améliorations notables en terme de vitesse dans la détection des objets comme Fast R-CNN. Celui-ci traite l’image de façon intégrale plutôt que chaque proposition de région individuelle. Il identifie des régions d’intérêt (RoI) pouvant contenir des objets et extrait pour chacune les caractéristiques correspondantes. Une fois redimensionnées, ces caractéristiques sont soumises à des couches supplémentaires du réseau qui classent l’objet dans la région d’intérêt et affinent les coordonnées de la boîte englobante. Il résulte de cette approche un traitement plus véloce. D’autres tentatives similaires sont apparues comme Faster R-CNN.