Utiliser le transfer learning pour identifier vos propres objets au sein d’images

Utiliser le transfer learning pour identifier vos propres objets au sein d’images
Le 1er article illustrait la puissance de la science des données pour réaliser des traitements jusqu’alors absolument inenvisageables dans le domaine du traitement automatique d’images.

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.

Le modèle a pu reconnaitre la voiture et l’individu mais pas la trotinette

Le modèle a pu reconnaitre la voiture et l’individu mais pas la trotinette

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.

Exemples de formes encodées dans les couches profondes

Exemples de formes encodées dans les couches profondes

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.

 

Le principe général est simple

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.

Les étapes sont les suivantes

Etape 1 : récupérer des images de trottinettes

Vous pouvez automatiser le téléchargement d’images à partir de Google.

Récupération d’une multitude de photos de trottinettes sur fond uni

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.

Une même trottinette est placée sur deux fonds différents
Une même trottinette est placée sur deux fonds différents
Une même trottinette est placée sur deux fonds différents

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.

Les deux trottinettes sont bien reconnues

Les deux trottinettes sont bien reconnues

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.

Utiliser le transfer learning pour identifier vos propres objets au sein d’images