Exploitation des performances de Cognitive Services pour un suivi du stock simplifié

Publié le 10 octobre, 2019

Sr. Content Developer

Équipe de stagiaires du Centre de recherche et développement de Cambridge, Nouvelle-Angleterre
Des volontaires pour passer l’été au Centre de recherche et développement Microsoft Garage de Nouvelle-Angleterre, aussi connu sous le nom de « NERD » ? Le stage Microsoft Garage est destiné aux étudiants avides de connaissances, qui n’ont pas peur de l’inconnu et sont capables de sortir de leur zone de confort en cas de situation délicate. Ont été réunis dans le cadre de ce programme : Grace Hsu du Massachusetts Institue of Technology (MIT), Christopher Bunn de l’université Northeastern, Joseph Lai de l’université de Boston et Ashley Hong de l’université Carnegie-Mellon. Ils ont choisi le stage Garage pour l’approche axée sur le produit (étude de l’intégralité du cycle de développement, de l’idéation à la livraison) et pour apprendre à se focaliser sur les clients.

Les stagiaires du Microsoft Garage s’engagent dans des projets expérimentaux visant à stimuler leur créativité et à élargir leurs compétences en développement de produits grâce aux nouvelles technologies. Généralement, ces projets sont des propositions qui émanent des groupes produits internes de Microsoft. Mais, quand Stanley Black & Decker nous a demandé s’il était possible d’utiliser la reconnaissance d’images pour la gestion du matériel sur les chantiers de construction, cette équipe de quatre stagiaires a accepté de relever le défi consistant à créer un prototype fonctionnel en 12 semaines.

Partant de cette simple demande, l’équipe a réalisé une étude de marché et mené son enquête auprès des utilisateurs pour s’assurer de l’originalité du produit et de son utilité. Elle a passé l’été à acquérir de l’expérience dans le développement d’applications mobiles et dans le domaine de l’intelligence artificielle dans le but de créer une application capable de reconnaître les outils au moins aussi efficacement qu’un opérateur humain.

Le problème

Dans le secteur du bâtiment, il n’est pas rare que les entrepreneurs passent plus de 50 heures par mois à faire le suivi de leur stock ; une pratique susceptible de conduire à des retards inutiles, des excédents de stock et à l’absence de certains outils. Mis bout à bout, les chantiers de construction importants pourraient engendrer un total de plus de 200 000 $ de pertes matérielles sur les projets à long terme. Pour résoudre ce problème, des approches non normalisées impliquant codes-barres, technologie Bluetooth, balises RFID et codes QR sont utilisées. Face à une telle diversité, l’équipe de chez Stanley Black & Decker s’est demandé s’il ne serait pas plus simple que le produit soit reconnu sur base d’une simple photo.

Étant donné que les outils dont les modèles présentent des différences minimes sont nombreux, leur identification particulière nécessite, dans le cas d’une perceuse par exemple, la lecture d’un numéro de type DCD996. Ajoutons-y des configurations d’assemblage multiples (avec ou sans mèche ou bloc-batterie) et des angles de vue variés. Les différentes conditions d’éclairage et les différents arrière-plans susceptibles d’être rencontrés sur un chantier de construction traditionnel doivent également être pris en compte. Le problème qui se pose alors devient rapidement très intéressant à résoudre à l’aide de la vision par ordinateur.

Quatre modèles différents de perceuse DeWalt qui se ressemblent fortement
 

Conception de l’application

Les algorithmes de classification peuvent facilement être entraînés pour identifier de façon fiable des objets différents, comme pour distinguer une perceuse, d’une scie et d’un mètre ruban. Mais, la question était ici de savoir si un classifieur pourrait distinguer avec précision des outils très similaires, comme les quatre perceuses ci-dessus. Pour la première version de son projet, l’équipe a testé PyTorch et le service Custom Vision de Microsoft. Custom Vision séduit les utilisateurs par le faible niveau de connaissances en science des données requis pour obtenir un modèle opérationnel. Avec suffisamment d’images (environ 400 par outil), cette option s’est avérée satisfaisante. Il a toutefois fallu se rendre à l’évidence qu’il serait compliqué de collecter manuellement un tel nombre d’images pour une gamme de produits composée de milliers d’outils. Trouver des méthodes de génération synthétique d’images d’entraînement est alors rapidement devenu la priorité.

Pour sa démarche initiale, l’équipe a numérisé les outils en trois dimensions, en plus de créer leur représentation sur fond vert. Ces images ont ensuite été superposées avec des arrière-plans aléatoires pour imiter de véritables photos. Bien que cette approche semble prometteuse, la qualité des images obtenues s’est avérée problématique.

Pour sa seconde version du projet, l’équipe a exploré une nouvelle approche s’appuyant sur les rendus photoréalistes des modèles de conception assistée par ordinateur (CAO) en collaboration avec des ingénieurs de chez Stanley Black & Decker. Elle a réussi à utiliser des scripts Python relativement simples pour redimensionner, faire pivoter et superposer de manière aléatoire ces images avec un grand nombre d’arrière-plans. Grâce à cette technique, des milliers d’images d’entraînement ont été générées en quelques minutes.


    Image créée à partir d’un fond vert et image issue de la CAO

L’image de gauche a été créée à partir d’un fond vert, tandis que celle de droite est un exemple de conception assistée par ordinateur.

Analyse comparative des itérations

Le service Custom Vision fournit des rapports sur la fiabilité des modèles, tels que celui présenté ci-dessous.

Exemple de rapport extrait du service Custom Vision
Pour un modèle de classification qui cible des produits visuellement très similaires, une matrice de confusion telle que celle affichée plus bas se révèle très utile. La matrice de confusion analyse les performances d’un modèle de prédiction en comparant le libellé réel d’une catégorie (lignes) au résultat donné par le modèle (colonnes). Plus les scores sur la diagonale sont élevés, plus le modèle est fiable. Lorsqu’elles sont décalées par rapport à la diagonale, les valeurs élevées aident les scientifiques des données à identifier les catégories que le modèle entraîné confond.

Les bibliothèques Python existantes peuvent être utilisées pour générer rapidement une matrice de confusion à partir d’un ensemble d’images test.
Matrice de confusion pour 10 produits DeWalt 

Résultat

L’équipe a développé une application React Native s’exécutant sous iOS et Android ; un outil de gestion des ressources léger, doté d’une interface utilisateur claire et intuitive. L’application s’adapte aux différents niveaux de disponibilité du Wi-Fi, et les images prises sont envoyées aux API du modèle entraîné de Custom Vision dans Azure Cloud dès qu’une connexion fiable est détectée. En l’absence de connexion Internet, les images sont envoyées à un modèle de vision par ordinateur local.

Ces modèles locaux sont obtenus par le biais de Custom Vision, qui les exporte vers Core ML sur iOS, TensorFlow sur Android ou en tant que conteneur Docker pouvant s’exécuter dans un environnement Azure App Service sous Linux. Une infrastructure simple destinée à ajouter de nouveaux produits au modèle Machine Learning (ML) peut être implémentée en exportant les images créées via la CAO et en générant des images de synthèse.

Captures d’écran de l’interface utilisateur de l’application de suivi du stockCaptures d’écran de l’interface utilisateur de l’application de suivi du stock
  
Images de gauche à droite : liste de contrôle du stock, fonctionnalité appareil photo pour l’envoi d’images au service Custom Vision, affichage des résultats du modèle ML et formulaire d’ajout manuel d’un outil à la liste de contrôle.

Arch_Diagram

Et ensuite ?

En quête d’un projet d’expérimentation pratique de la vision par ordinateur pour votre équipe ? Recherchez un événement OpenHack proche de chez vous.

Les événements Microsoft OpenHack destinés aux développeurs sont l’occasion pour une grande variété de participants (Open, pour ouverture) d’approfondir leurs connaissances via des expérimentations pratiques (Hack) qui consistent à relever des défis inspirés de véritables missions client et conçus pour reproduire des conditions de travail réelles. Les événements OpenHack offrent une expérience de mise à niveau unique et haut de gamme aux clients et partenaires Microsoft. Contrairement aux conférences traditionnelles articulées autour de présentations, les événements OpenHack offrent aux développeurs une expérience de développement concrète et unique.

Les parcours d’apprentissage sont aussi un bon moyen de vous familiariser avec Cognitive Services.