Pour réaliser un tel tour de force nous utilisons le framework TensorFlowJS.
Comme son nom l’indique il s’agit d’une implémentation simplifiée en JavaScript du framework de deep learning TensorFlow. Disposer d’une implémentation javascript allégée est essentielle dans la mesure où :
- le navigateur web dans lequel s’exécutera notre webapp ne peut exécuter que du code JavaScript
- le temps de chargement (qu’il s’agisse du code ou des données) doit être minimisé pour éviter une latence trop importante
- un téléphone portable dispose de moins de ressources (CPU, mémoire) qu’un ordinateur classique ce qui impose de limiter au maximum les traitements réalisés
Pour réaliser ces prédictions, nous utilisons une implémentation en TensorFlowJS d’un modèle Tiny Yolo.
Ces modèles diffèrent de ceux utilisés dans le premier article (modèle Mask-RCNN) dans la mesure où ils identifient la zone dans laquelle se trouve l’objet (bounding box) sans identifier les bords de ce même objet.

En préférant Tiny Yolo à Mask-RCNN nous passons d’un modèle de plusieurs centaines de Mo à un modèle de quelques dizaines Mo.
La méthodologie pour enrichir le modèle Tiny Yolo est identique à celle présentée dans l’article 2 :
- prendre des photos des objets à reconnaître et les délimiter (cropping) au sein de cette photo
- placer ces objets sur différents “fonds” et dans différentes positions (cf. rotation, changement d’intensité, contrastes etc.)
- entraîner le modèle avec ces exemples
Une fois le modèle entraîné, il peut être chargé avec la fonction TensorFlowJS suivante :

L’identification d’un objet est ainsi :

La vidéo ci-dessous montre comment notre webapp est en mesure de capter le flux vidéo de la caméra du téléphone pour détecter les objets qui nous intéressent :
Il devient donc possible à moindre coût de créer une fonctionnalité avancée qui jusqu’à maintenant mettait plutôt en oeuvre des services distants (SaaS). En fonctionnant en local, il n’est plus nécessaire de disposer d’un accès à internet pour procéder à une détection d’équipements, d’oeuvres, d’objets.
Cela permet d’envisager par exemple des usages avancés tels que :