Sauter au menu Sauter au contenu
PraedictIA

Comment la reconnaissance d’images fonctionne-t-elle ?

La reconnaissance d’images fonctionne grâce à des algorithmes qui permettent de localiser des motifs dans les images et de les associer à des objets. Le traitement se fait au niveau des pixels, les unités fondamentales de l’image numérique.

Les pixels d’une image

Une image numérique est divisée en minuscules carrés, les pixels, disposés en forme de grille. Chacun des pixels d’une image monochrome prend une valeur numérique indiquant sa luminosité, généralement de 0 (noir) à 255 (blanc). Ces valeurs numériques sont stockées dans le fichier en une liste que le programme de reconnaissance d’images devra traiter. Par exemple, pour une icône carrée de 20 pixels de côté, 400 valeurs numériques seront stockées.

Pour les images en couleurs, trois données numériques sont attribuées à chaque pixel, selon le système RGB (R : rouge; G : vert; B : bleu), offrant chacune une possibilité de 256 valeurs, donc plus de 16 millions de teintes distinctes. Par exemple, pour une icône carrée de 20 pixels de côté en couleurs, 1200 valeurs numériques seront stockées.

Une seule icône de 20 pixels de côté en couleurs représente un nombre immense de combinaisons pouvant représenter une multitude d’objets différents. La programmation manuelle d’un algorithme capable d’identifier l’objet représenté, même pour une toute petite image, est difficile à imaginer.

Profondeur de l’image : La couleur du pixel

Les réseaux neuronaux et la reconnaissance d’images

Qu’en est-il des appareils photo numériques qui offrent des résolutions de dizaines de millions de pixels?

Les réseaux neuronaux interviennent alors; il s’agit d’applications informatiques constituées de « neurones » organisés en différentes couches successives interreliées, un peu comme la façon dont les neurones sont organisés dans le système nerveux central. Le réseau neuronal reçoit un « stimulus » (une série de données numériques) dans sa couche d’entrée, constituée de neurones, dont le nombre est déterminé par la taille du stimulus.

Dans les faits, chaque neurone est une fonction mathématique qui utilise les valeurs entrantes (input) provenant du stimulus ou de la couche précédente, pour effectuer un calcul à l’aide d’un certain nombre de paramètres afin de produire une valeur sortante (output). La liste des valeurs sortantes de tous les neurones d’une même couche forme un « signal » qui est traité par chacune des couches de neurones successives en se propageant de l’une à l’autre. Le réseau neuronal produit ultimement une « réponse » à sa couche de sortie sous la forme d’une liste de données numériques.

Supposons que l’on traite l’icône carrée de 20 pixels de côté en version monochrome. La couche d’entrée du réseau neuronal compte alors 400 inputs. Chaque neurone de la première couche du réseau reçoit donc 400 valeurs, auxquelles tout autant de paramètres sont appliqués afin de produire une valeur de sortie. Si cette première couche compte un nombre très limité de neurones, 20 par exemple, il n’y aura pas moins de 8000 paramètres à ajuster. L’ajustement fin de tous ces paramètres pour chacune des couches du réseau permettra de produire à la toute fin une réponse intelligible. La programmation manuelle serait une tâche monumentale !

Les réseaux neuronaux sont conçus de manière à pouvoir être entraînés. En ayant la réponse désirée pour une entrée donnée, le réseau ajustera ses nombreux paramètres pour produire la réponse attendue. En effet, le réseau de neurones utilise des mécanismes d’ajustement automatisés via des données d’apprentissage, p. ex. dans le cas de la reconnaissance d’images, des images accompagnées d’annotations telles que : Image d’un chien + l’annotation associée « chien ». Ces données servent à entraîner l’algorithme afin de lui permettre d’effectuer les bons ajustements, donc les bonnes associations entre images et interprétations. Dans le cas de la reconnaissance d’images, la réponse est une prédiction de ce qui se trouve dans l’image, selon des catégories préétablies. Afin d’entraîner un réseau neuronal de reconnaissance d’images, il faut lui présenter un certain nombre d’images étiquetées manuellement (un nombre élevé de préférence) afin qu’il soit en mesure d’analyser de nouvelles images et de les associer aux catégories pertinentes.

Les meilleurs moteurs de reconnaissance d’images utilisent des réseaux neuronaux convolutifs. La construction de ces réseaux les rend à la fois plus rapides et plus précis puisqu’ils analysent tout d’abord de petites sections de l’image pour ensuite mettre les sections en relation les unes avec les autres.

Comprendre le DeepLearning et les Réseaux de neurones en 10 min !