Le Machine Learning Blog

Comment former une machine pour reconnaître des nombres manuscrits dans une image (ou n'importe quoi d'autre d'ailleurs)

handwritten numbers

Reconnaître les numéros écrits à la main

Dans cet article, je vais vous expliquer comment utiliser le machine learning pour créer un logiciel capable de reconnaître des nombres manuscrits. J'expliquerai également quelles autres applications cela pourrait avoir pour vous et votre entreprise. Cependant, je ne vais pas entrer dans les détails de mise en œuvre, ni dans les mathématiques ou la façon comme cela fonctionne, le poste va juste expliquer l'idée générale derrière ce principe.

 

Pour une machine, reconnaître quelque chose dans une image n'est pas une tâche facile.
Les machines sont assez stupides et ne peuvent pas comprendre les images. Elles peuvent seulement comprendre l'existence ou l'absence de pixels. Nous devons donc tout traduire en termes compréhensibles si nous voulons qu'ils fassent une tâche aussi simple ...

 

excuse me robot

Analyse d'images pixel par pixel

Si nous utilisons des images 20x20 pixels, chacune aura un total de 400 pixels ... Et si elles sont en noir et blanc, chaque pixel aura un niveau de gris, allant de 0 (complètement blanc) à 100 (complètement noir) .
Chacune des images de mon dataset d'entraînement peut être représentée par une série de 400 nombres, chacun avec des valeurs allant de 0 à 100.

pixel reading

Si nous remplaçons l'image avec toutes les valeurs numériques de ses pixels, nous serons en mesure de les donner à la machine et d'appliquer des mathématiques pour former notre réseau de neurones.

 

Il faut 400 entrées pour donner 1 sortie

Nous utiliserons l'apprentissage supervisé avec un réseau de neurones qui pourra classer n'importe quelle image. Si vous n'avez pas lu mon blog sur ce que sont les réseaux neuronaux, lisez-le ici.
L'idée est de créer un modèle mathématique qui prendra 400 entrées (valeurs de pixels) et de calculer l'influence (poids) de chaque valeur sur le résultat.
À ce stade, notre modèle d'apprentissage automatique ressemblerait à ceci:

 

simple neural network

Pour l'instant, nous n'avons qu'un seul exemple, donc notre modèle ne pourra pas être très précis pour calculer l'importance de chaque pixel de ce qui représente le nombre 3 dans une image donnée ... C'est pourquoi il est très important d'avoir de grandes quantités de données.
Cela nous permettra de nourrir notre modèle avec plus d'exemples d'entraînement et différentes variations du même nombre 3.

 

Handwritten 3s

 

Si nous avons assez d'exemples de la façon dont le nombre "3" est écrit, nous pouvons les nourrir à notre modèle et nous serons en mesure de calculer l'impact (poids) que chaque niveau de noirceur a eu sur cette image particulière 3.

 

L'ensemble de données pour former le modèle

Afin de former un logiciel pour reconnaître les numéros écrits à la main, nous devons commencer par lui donner beaucoup d'exemples. Heureusement pour nous, la base de données MNIST des chiffres manuscrits a été mis à disposition dans le web par un groupe de personnes très altruistes que nous ne pouvons pas remercier assez! Ce jeu de données contient 60 000 images manuscrites en noir et blanc, chacune faite à partir de 20x20 pixels.
Une fois importés dans un logiciel mathematique comme Octave (largement utilisé pour l'apprentissage automatique), ils ressemblent à ceci.

 

octave handwritten numbers

Réseaux neuronaux multicouches

Dans mon article sur les réseaux de neurones, j'ai expliqué le concept de réseaux neuronaux multicouches avec des entrées cachées.
Si vous avez déjà lu mon article, sachez que les modèles linéaires ne correspondent pas toujours à vos données, d'où l'importance d'avoir des calques cachés.
Ce que cela signifie concrètement, c'est que nos 400 entrées vont générer un nombre donné d'entrées "cachées" et que ce seront celles qui décideront finalement de la sortie de mon modèle.
Notre modèle d'apprentissage automatique ressemble maintenant à ceci:

neural network

Chacune des lignes reliant les entrées est appelée "poids" ou "paramètres".
Le but de l'apprentissage automatique est d'utiliser les exemples d'apprentissage pour calculer les «paramètres» qui prédisent le mieux si une image entièrement nouvelle est un numéro 3 ou non.

 

Classement multiclasse

Aiguilles à dire, un logiciel qui prédit si un nombre est un 3 ou pas, est complètement inutile. Ce dont nous avons besoin, c'est d'un logiciel capable de distinguer toute nouvelle image et de deviner correctement le numéro.
Concrètement, nous devons former 10 modèles mathématiques différents.
Notre réseau de neurones ressemblerait à quelque chose comme ceci.

neural network multi classification

Notre modèle de machine learning sera capable de prendre n'importe quelle nouvelle image, d'appliquer les poids d'apprentissage (paramètres) que nous avons trouvés en l'entrainant et de nous donner les 10 probabilités différentes de l'ajustement dans chaque modèle.
Par exemple, une image peut avoir:

  • 10% de chances d'être un 0
  • 15% de chances d'être un 1
  • 86% de chances d'être un 2
  • etc

Ce que nous allons faire, c'est simplement prendre la plus haute probabilité et faire notre prédiction en fonction de cette information.
C'est tout ce qu'il y a à faire :-)

smart guy

Pourquoi faire tout ça?

Pourquoi faire tout ceci, juste pour qu'une machine soit capable d'accomplir une tâche aussi simple qu'un humain peut faire en moins d'une seconde?
Eh bien, vous pourriez payer un salaire minimum à un humain, mais il y a une quantité limitée de chiffres qu'une personne peut reconnaître. Une machine, d'un autre côté, peut être chargée de répéter la même tâche ennuyante des milliards de fois, sans repos ni vacances. La machine ne s'ennuiera jamais, ne sera jamais en vacances et ne sera pas non plus en arrêt maladie...

 

smile robot

Y a-t-il des applications pour ceci?

Vous pourriez former un modèle pour comprendre les lettres. Voici quelques exemples de ce qui peut être réalisé en scannant une image avec du texte manuscrit:

  • Les compagnies de transport peuvent comprendre l'adresse manuscrite dans les paquets
  • Les documents peuvent être numérisés pour en obtenir des versions numériques
  • Les commerciaux peuvent numériser des cartes de visite
  • Les aveugles pourraient "entendre" des textes écrits
  • etc

Aller au-delà des chiffres et du texte

Les chiffres et les lettres ne sont que des inventions humaines. Le potentiel de formation d'une machine à distinguer des modèles dans les images peut être appliquées à pratiquement n'importe quoi dans le monde. Une application créative de ceci est la conduite autonome.

 

autonomous driving

Dans ce cas précis, l'idée est de mettre une caméra sur une voiture et de prendre des images de la route chaque seconde. Lors de l'entraînement du modèle, pour chaque image donnée, la "réponse" correcte sera la position du volent à ce moment précis.
Si la roue peut être orientée à 180 degrés, nous allons former 180 modèles afin que notre réseau de neurones puisse prédire la meilleure position de la roue pour une nouvelle image donnée apparaissant sur l'appareil photo et réagir en conséquence. C'est en fait l'une des premières idées derrière la conduite autonome.

 

Nous pouvons former une machine pour reconnaître n'importe quoi!

Ok, alors faisons preuve de créativité ici:

  1. Et si l'on entraînait un modèle pour reconnaître vos produits?
  2. Et si nous formions un modèle pour reconnaître les visages de vos clients VIP lorsqu'ils entrent dans votre magasin?
  3. Pouvez-vous envisager un modèle capable de trier et de classer des pièces dans une chaîne de manufacture?
  4. Qu'en est-il de l'enseignement des caméras de police pour reconnaître les visages des personnes disparues dans la rue?

Avec suffisamment de données d'entraînement, nous pouvons prendre n'importe quoi dans une image (ou une vidéo) et apprendre à une machine comment les reconnaître.
Les possibilités sont infinies et la seule limite est notre imagination.

mind blow

 

MLab, les spécialistes du Machine Learning à votre service!

Si le machine learning vous inspire et que vous pensez que vous souhaitez implémenter un cas d'utilisation dans votre organisation, veuillez contactez nousNous sommes agnostiques et nous recommandons et intégrons la technologie qui s'adapte le mieux à vos besoins. Si les technologies disponibles ne répondent pas à vos besoins, nous pouvons toujours former un modèle personnalisé adapté à votre projet.

Réseaux de neurones