La semaine dernière, je débutais le MVP Challenge Azure Data & AI. Me voici donc une semaine plus tard alors que j’ai exploré plusieurs aspects du Machine Learning et de tout ce qui concerne l’analyse d’images. Voici donc un résumé de mes découvertes.
La première partie est disponible ici: Partie 1
La deuxième partie: vous êtes ici
La troisième partie est disponible ici: Partie 3
La quatrième partie est disponible ici: Partie 4
La cinquième partie est disponible ici: Partie 5
Le Machine Learning, c’est quoi?
Commençons par cette question pour ceux qui ne connaissent pas du tout le Machine Learning. Le Machine Learning fait parti du domaine de l’intelligence artificielle, où l’ordinateur se base sur des approches mathématiques pour apprendre à partir de données existantes, pour éventuellement être capable de lui-même prédire les résultats. Par exemple, en ayant des données sur des véhicules usagés ainsi que leur prix de vente, le machine learning serait en mesure d’apprendre la manière de calculer le prix de vente et donc de prédire ensuite quel devrait être ce prix selon des nouvelles informations sur un véhicule.
Généralement, le processus se fera en prenant une source de données où nous avons les caractéristiques (appelées features) et le résultat souhaité (appelé label). Par la suite, il est possible d’appliquer certaines transformations sur les données, par exemple pour retirer des données où il nous manque de l’information. On applique ensuite un algorithme sur un modèle qui sera entraîné à partir de nos données pour ainsi prédire les résultats. Une bonne pratique avec ceci est d’ailleurs d’entraîner en utilisant une fraction de nos données, pour permettre de se servir de l’autre fraction pour tester le modèle généré. Une fois notre modèle généré il est possible de l’évaluer via différentes statistiques pour en vérifier sa fiabilité, puis de créer un modèle d’inférence à partir de celui-ci, qui sera en mesure d’utiliser le modèle d’apprentissage pour dériver de nouvelles données. C’est ceci qui pourra par la suite être utilisé par d’autres systèmes pour prédire des résultats.
Le Machine Learning automatisé
Le premier module que j’ai fait est sur le machine learning automatisé. Avec Azure Machine Learning Studio, il est possible de mettre un modèle d’apprentissage en place en peu d’étapes, qui s’occupera de trouver la meilleure solution selon ce qu’on recherche. Tout ce qu’il faut faire est choisir notre label pour le résultat recherché, le type de tâche à faire sur les données et potentiellement choisir un ou plusieurs algorithmes à essayer. Ceci est très simple à faire, et probablement un très bon point de départ pour voir la base du machine learning, par contre c’est quelque peu limité dans le sens où on ne peut pas travailler sur nos données, elles doivent être dans un format complet pour démarrer. Si on veut faire plus, on doit passer par le designer, que j’ai eu la chance d’utiliser dans les modules suivants.
Azure Machine Learning Studio Designer
Malgré que le concept de machine learning n’est pas nécessairement simple, surtout avec tout ce qui concerne les différentes statistiques et les algorithmes à connaitre le fonctionnement, le designer de Azure Machine Learning Studio rend la chose très conviviale à mettre en place. Essentiellement, une fois que nous avons un dataset pour nos données, il suffit d’aller sur un canvas pour y appliquer différents blocs de fonctions, qu’on relie les uns aux autres, pour créer notre pipeline d’entraînement, comme celui-ci par exemple:
Les modèles de régression
Un modèle de régression, comme sur l’image ci-haut, est un modèle qui permet de prédire des valeurs numériques. L’exemple que je donnais en début d’article pour le prix de vente d’un véhicule usagé est un modèle de régression. Ce genre de machine learning en est un supervisé, c’est-à-dire qu’on doit utiliser des données qui contiennent les features et le label pour que le modèle puisse apprendre comment faire les meilleurs combinaisons de features pour arriver à la valeur du label.
Les modèles de classification
Les modèles de classification eux permettent justement de classifier des éléments dans des catégories, ou classes. Un exemple bien simple de ceci serait de prédire, selon certaines données médicales comme l’âge, le poids et la pression sanguine, si une personne est diabétique ou non. Ce type de machine learning en est aussi un supervisé, donc on doit fournir les caractéristiques ainsi que le résultat attendu pour que le modèle puisse être entraîné.
Les Clustering Model
Les modèles de type clustering permettent de créer des regroupements d’éléments selon des features communes. L’exemple de la leçon que j’ai fait était de regrouper des pengouins selon leurs mensurations. À noter, ce type de machine learning n’en est pas un supervisé, puisqu’il n’y a pas de label connu et c’est donc l’entraînement qui va complètement s’occuper de créer les regroupements.
L’analyse d’images – facile à utiliser!
L’idée derrière l’analyse d’images avec Azure est de nous permettre d’analyser des images en utilisant des modèles de machine learning déjà entraînés, pour ne pas qu’on ait à faire tout ce processus nous-même (chose qui serait probablement très longue à mettre en place). La beauté de tout ceci est que c’est relativement simple à mettre en place! On peut ajouter une ressource de type Computer Vision pour de l’analyse d’image, ou encore de type Cognitive Services, qui inclut d’autres aspects comme l’analyse de texte. Par la suite, tout ce dont on a besoin est le endpoint sur lequel se connecter, notre clé pour y accéder, et c’est tout! Selon les méthodes qu’on utilisera, cela nous permettra d’analyser les images de différentes manières, que je vous résume brièvement ici.
Computer Vision
Ce service permet l’analyse d’images et d’en décrire le contenu. Par exemple, sur une photo d’une personne qui joue de la guitare, le service serait en mesure de nous dire qu’elle fait précisément ceci. Cela pourrait aussi nous donner le détail de ce qui a été détecté pour arriver à cette description, incluant les objets détectés et différents tags s’y rattachant.
Custom Vision
Pour ceci, on revient à un principe similaire au machine learning de type supervisé, c’est-à-dire qu’on doit ajouter des images dans un projet et leur ajouter la classification qu’on a besoin pour ainsi entraîner le service. Tout ceci peut être fait sur le portail de Custom Vision. On peut faire des projets de classifications d’images, où on pourra sélectionner une partie de l’image et l’identifier d’un tag. Ce genre de service pourrait servir à de la détection de produits pour une épicerie intelligente par exemple. On peut aussi faire des projets qui permettent de détecter des objets sur une image avec un rectangle pour indiquer où ils sont, chose qui est probablement utilisée dans la majorité des véhicules qui ont la conduite assistée.
Face Service
Volet plus spécifique de l’analyse d’images, ce service permet de détecter les visages et retourner ses coordonnées sur l’image. Ce service peut même détecter les détails du visage comme le nez ou les yeux et éventuellement donner des informations comme un âge approximatif ou même un état émotionnel. Une des applications les plus courantes pour ce genre d’utilisation est sur nos appareils mobiles, où la majorité sont maintenant équipés de dévérouillage par reconnaissance faciale.
Optical Character Recognition
Ce service permet de deux manières différentes de lire du texte sur des images. Pour des images où il y a peu de texte, on peut utiliser le OCR API pour lire le texte présent de manière synchrone. Pour une image qui aurait beaucoup de texte, un document pris en photo par exemple, on peut utiliser le Read API. Celui-ci fonctionne de manière asynchrone où on envoie l’image au service et on récupère le résultat une fois le traitement terminé.
Form Recognizer Service
Beaucoup de gens aujourd’hui ont des comptes de dépense avec leur travail, où ils doivent prendre leur reçu en photo pour prouver l’achat. Par la suite, cette image doit être regardée et traitée par une personne. Le Form Recognizer Service permet de faire automatiquement, via OCR avec des modèles prédictifs, ce traitement pour retourner l’information qu’on a besoin sur ces reçus. Évidemment ça peut servir à plusieurs autres choses, mais celle-ci est un bel exemple du genre d’utilité qui peut facilement aider. Une chose très intéressante sur ce service, il existe une version gratuite, avec par exemple comme limitation de ne pas processer plus de 2 pages sur des documents PDF.
Conclusion
Malgré que ça peut devenir très complexe, le machine learning reste quelque chose de facilement accessible et qui peut permettre de grandes choses. Si vous n’êtes pas certain de quel algorithme utilisé, ou même de ce que vous avez besoin pour répondre à une problématique, cette excellente cheat sheet peut vous aider dans votre décision.
Pour tout ce qui est traitement d’images, j’ai été surpris de voir à quel point l’outil est simple à mettre en place et utiliser. Oui il faut pouvoir faire du code pour l’utiliser, mais une fois les API connus, on s’ouvre beaucoup de portes sur toute l’information que les images contiennent.
Suite à ces vidéos, j’ai bonifié ma collection générale sur le Data & AI avec les leçons incluant l’utilisation du designer et quelques leçons sur le traitement d’images. J’ai aussi créé une collection avec toutes les leçons sur le machine learning et une sur le traitement d’images. Une chose à noter, pour faire toutes les leçons de ces collections, il faut évidemment prévoir un coût pour l’utilisation des différents services sur Azure.
Collection sur le Data & AI: Voir la collection
Collection sur le Machine Learning: Voir la collection
Collection sur l’analyse d’images: Voir la collection
Bruno
MVP Challenge
La première partie est disponible ici: Partie 1
La deuxième partie: vous êtes ici
La troisième partie est disponible ici: Partie 3
La quatrième partie est disponible ici: Partie 4
La cinquième partie est disponible ici: Partie 5