AI : Comment monter en puissance ? Robotiser le tagging des objets dans les images fixes

Aurélien Escartin
3 min readDec 17, 2017

--

C’est une constante dans la mise en place d’une optimisation de processus par IA: Quand manuellement et sur un petit échantillon, les résultats sont là, il faut réfléchir de suite à la manière de “scaler” rapidement.

Soit vous avez un fond déjà qualifié et vous considérez qu’il est exhaustif, alors la mise en place sera rapide car basé sur ce fond (et elle ne bougera pas).

Soit vous n’avez pas de fond qualifié ou bien vous savez que l’organisation devra être apprenante, dans ce cas — et en fonction des volumes à venir — vous devez avoir la capacité d’être productif dans l’alimentation de l’apprentissage supervisé.

Nous avons pu le voir dans l’article précédent (https://medium.com/@aescart1/la-computer-vision-d%C3%A9tection-dobjet-avec-tensorflow-5ee819d74f61), ce qui est fastidieux, c’est le fait de devoir travailler chaque image une par une. Même avec des outils optimisés, c’est très chronophage (Il faut compter 30 min de tag manuel pour 100 images environ)

Par contre, nous avons vu dans le premier article — exemple de la montre (https://medium.com/@aescart1/la-computer-vision-touche-tous-les-domaines-de-lentreprise-partie-1-13d14464a30b) — que l’on pouvait partir d’une image pour la retrouver dans une autre. C’est ce principe que l’on va appliquer ici.

Une fois qu’on a lancé le process de création d’image fixe à partir d’une vidéo (Cf. article précédent — video_2_image.py), il faut ainsi :

  • Sélectionner une image nette et de face, afin qu’elle serve de source au tagging
  • Modifier cette image afin qu’elle ne représente plus que la face à rechercher
  • Lancer la recherche de cette source dans toutes les images, en extraire des coordonnées des extrémités et générer le fichier xml de tag.
  • Vérifier le résultat pour pouvoir et lancer l’apprentissage supervisé
  • Optionnel : avant la génération du XML, on peut regarder si l’aire trouvée se trouve dans la moyenne et si ce n’est pas le cas, mettre l’image de côté.

Prenons le cas de la vidéo suivante.

Quand on la décompose, on se retrouve avec les fichiers suivants (cela nous ferait 265 images à traiter)

Il faut donc trouver la bonne image, de face, et n’extraire que cette face avec un fond transparent. Cette face permettra la recherche dans toutes les images pour faire le tagging.

Le fond transparent (format png) permettra de ne pas perturber le tagging.

On utilisera donc OpenImaj pour rechercher la source dans les cibles. Le code est très simple, on recherche tous les points de concordance et on ne garde que les plus extrêmes afin de former un carré.

Le code Java simplifié est à l’adresse suivante : https://gist.github.com/aescart1/aebf625333422eba456b7fd244814c3c

Quand on le fait tourner, on obtient les fichiers XML pour chaque image.

Si on inspecte le tagging en lui même, on s’aperçoit que le résultat est très acceptable.

Une image taggué automatiquement par le programme. Le résultat est similaire à un tagguing manuel.

Voici une vidéo qui présente quelques apprentissages.

On pourra imaginer monter en puissance en traitant plusieurs dossier, en générant le .pbtxt et en lançant automatiquement l’apprentissage.

Ce qui est important, c’est que le travail manuel s’en retrouve très simplifié et qu’on a donc la possibilité de faire du deep learning supervisé, certes, mais moins :)

Pour conclure:

  1. On connaît les cas métiers où la Computer vision peut automatiser les process
  2. On sait alimenter et mettre en production un réseau de neurones pour automatiser ces process
  3. On sait automatiser l’alimentation du CNN afin de réduire le time to market

Cela autorise de l’ambition dans la mise en place des projets d’IA autour de la “computer vision” et de la détection d’objet.

--

--

Aurélien Escartin

Entrepreneur in the retail revolution | Cofounder and CTO belive.ai | Living the AI & Digital Joy