-
François-Xavier BOIS,
- Mohamed KONE,
- Stanislas MORBIEU,
Publié le 21/01/2020
L’utilisation d’un modèle tel que Mask-RCNN pré entraîné sur COCO permet de mettre en œuvre simplement de la détection d’objets au sein d’images.
Un détail important n’a cependant pas été mentionné dans l’article précédent. Le modèle pré entraîné sur COCO n’est pas universel et ne permet pas de reconnaître les millions d’objets qui font partie de notre quotidien. Plus précisément, ce modèle a été entraîné pour reconnaître un peu plus de 80 objets dont : vélo, automobile, skateboard, smartphone, micro onde, individu, chien, etc.
Compte tenu de cette contrainte majeure, une organisation comme la mairie de Paris qui souhaiterait pouvoir identifier des trottinettes mal stationnées se retrouverait-elle bloquée ?
Et bien pas du tout ! Il est possible d’enrichir ce modèle en lui faisant apprendre à reconnaître de nouveaux objets. En tant que réseau neuronal profond, Mask-RCNN dispose de nombreuses couches de neurones dont un grand nombre, les plus profondes modélisent des formes fondamentales qui composent un objet.
Les couches les moins profondes sont celles qui combinent ces composantes et leur associent une classe : voiture, moto, etc.
Cette technique consistant à faire évoluer un modèle déjà entraîné est appelé transfer learning. Elle est très avantageuse car elle permet de s’appuyer sur des modèles ayant nécessité des centaines de millions d’exemples et des milliers d’heures de calcul pour répondre à des besoins très spécifiques.
Fixons comme objectif d’ajouter une 82ème classe à notre modèle Mask-RCNN pré entraîné sur COCO : les trottinettes.
Phase 1: récupérer des données étiquetées
Phase 2 : entraîner le modèle (en s’appuyant sur le modèle pré existant).
Pour tout projet orienté data, l’étape la plus compliquée réside dans l’accès aux données et plus spécifiquement à des données étiquetées. Une donnée étiquetée correspond à un exemple, exemple à partir duquel l’algorithme “apprend”. Dans le cas présent, il s’agit de fournir à l’algorithme des photos de trottinettes accompagnées de leur contour.
Comme nous sommes des codeurs et que la perspective de définir à la main ces contours sur des milliers de photos ne nous enchante pas, nous allons mettre en oeuvre un processus permettant d’automatiser la génération de ces données d’apprentissage. Autre principe important de la science des données, plus nous disposons de données d’apprentissage et plus nous maximisons nos chances de disposer d’un modèle performant.
Etape 1 : récupérer des images de trottinettes
Vous pouvez automatiser le téléchargement d’images à partir de Google.
Etape 2 : délimiter la zone correspondant à l’objet
Des techniques de traitement du signal nous permettent d’exclure le fond et de récupérer la contour de l’image.
Etape 3 : multiplier les exemples
en transformant les images précédemment traitées. L’idée est ici de procéder à des transformations sur les trottinettes (rotations, symétrie horizontale, changement de couleurs, etc.) et à les placer sur des images de rues également récupérées sur Google.
Etape 4 : entrainer le modèle avec ces exemples en repartant du modèle pré entraîné sur COCO.
Cette étape peut être longue. En utilisant Google Colaboratory, la durée de l’entraînement fut d’environ 4 heures (sur 4000 images) pour avoir des résultats satisfaisants.
Etape 5 : tester le modèle.
Bingo ! Notre modèle est bien parvenu en quelques millisecondes à identifier les 2 trottinettes sur la photo.
Comme vous pouvez le constater, Kernix est en mesure de vous aider à identifier tout type d’objet au sein de photos. Kernix avait ainsi aidé ERDF à classer des dizaines de milliers de photos de compteurs électrique afin d’optimiser leur maintenance.
Si cette thématique vous intéresse, vous pouvez poursuivre votre lecture en lisant l’article suivant 3/3.