Genèse du QrTag

Genèse du QrTag

En voyant apparaître le "mur / tableau blanc" de la salle de pause je me suis posé la réflexion suivante:

Ceux qui savent bien dessiner peuvent s'y mettre en valeur...

Ceux qui écrivent bien, peuvent s'y faire remarquer...

Mais ceux qui ne sont pas vraiment doués pour l'un ou l'autre, comment peuvent-t-ils "apporter leur pierre à l’édifice"?

Et moi, c'est quoi mon truc? l'informatique, la High Tech, l'innovation...

Voici, donc, comment m'est venu l'idée du concept de QrTag:

dessiner un sigle (simple) reconnaissable par un système d'IA afin de pouvoir l'utiliser comme un QrCode!

Le passé, ce qui a déjà été fait...

OpenCV

Comme cela faisait un bon moment que je voulais me griller quelques neurones avec le traitement d'image, je me suis mis à "explorer" la librairie OpenCV

 Dans un premier temps, l'idée était de tester le "matching" d'image de la librairie:

Bon vu sous cet angle cela fonctionne mais dès que l'on utilise un autre dessin de ce sigle plus rien ne fonctionne!!

Le "matching" dans l'état était bien trop précis...

Machine Learning

Donc en définitive, il fallait que j’apprenne à mon PC, à reconnaître mon sigle...

Faire du Machine Learning en fait!

Après de longues heures de "compilation" les premiers résultats paraissent:


Le soucis c'est que pour faire du machine learning, il faut une bonne dose de données, et dans mon cas, d'images...

Beaucoup d'images!

M'est venu alors l'idée de générer, au hasard des sigles similaires mais avec les courbes légèrement différentes.

La solution pour cela, faire un PlugIn pour Inkscape, le cousin OpenSource de Adobe Illustrator.

Chose faite étant, j'avais à ma disposition autant de sigles que je le souhaitais:

Armé de ce nouvel outil les résultats furent bien meilleurs:

Swarm

Nouveau problème, nouvelle solution!

Le processus de Cascade Classifier Training prenait beaucoup trop de temps pour ma pauvre petite machine...

Afin de mutualiser la puissance de calcul de plusieurs machines inutilisées, voir de PC et de Raspberry Pi attendant sagement d'être mobilisés;

l'outil à tester était Swarm.

Un composant de Docker (une sorte de VirtualBox allégée au Weight Watchers OpenSource) permettant d'orchestrer le temps processeur d'un nombre quasi illimité de machines.

Et ceci quel que soit leur système d'exploitation!

Voilà, armé de ce nouvel atout j'y étais...

Enfin presque...

Deep Learning

La première fois que j'ai entendu parlé de "psychologue pour machine" cela m'a fait sourire...

Maintenant je comprends bien mieux ce que le machine learning implique.

Beaucoup de temps et de tests...

Quel détail font qu'une machine fera la différence entre tel ou tel image...

Mais je suis curieux et quelque peu impatient...

J'ai entendu parlé du Deep Learning et de TensorFlow...

Il fallait que je teste!!

J'ai appris ce qu'était "l'apprentissage par transfert"...

Mais quel gouffre entre OpenCV et TensorFlow!!

Je suis passé de plusieurs jours de compilation à quelques dizaines de minutes...

et pour un résultat tellement meilleur:

Le Futur

Voilà déjà pas mal de chemin parcouru...

Maintenant ce qu'il reste à faire:

  • Adapter le modèle généré par TensorFlow sous Android. Tous les éléments existent, les librairies sont disponibles nativement pour Android.
  • Créer un serveur pour collecter les sigles, vérifier qu'ils ne sont pas utilisés et les associer avec un lien...
  • Enjoy!

Identifiez-vous pour afficher ou ajouter un commentaire

Plus d’articles de Rodrigue Beck

Autres pages consultées

Explorer les sujets