Votre panier est vide.
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 comment cela fonctionne, cet article 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…
Si nous utilisons des images 20×20 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.
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.
Nous utiliserons l’apprentissage supervisé avec un réseau de neurones qui pourra classer n’importe quelle image. Si ce n’est déjà fait, lisez mon article sur ce que sont les réseaux neuronaux. 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:
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.
Si nous avons assez d’exemples de la façon dont le nombre “3” est écrit, nous pouvons les fournir à 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.
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 sur 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 20×20 pixels. Une fois importés dans un logiciel mathématique comme Octave (largement utilisé pour l’apprentissage automatique), ils ressemblent à ceci :
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 :
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.
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 :
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’entraînant et de nous donner les 10 probabilités différentes d’ajustement dans chaque modèle. Par exemple, une image peut avoir :
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 🙂
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…
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 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é à pratiquement n’importe quoi dans le monde. Une application créative de ceci est la conduite autonome.
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.
Ok, alors faisons preuve de créativité ici :
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.
Si le Machine Learning vous inspire et que vous pensez que vous souhaitez implémenter un cas d’usage dans votre organisation, contactez-nous. Nous 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.
CONTACTEZ-NOUS