IA autonome sur puce pour 120 €

Nous avons récemment implantés quelques uns de nos réseaux de neurones dédiés à la chimie sur une puce Movidius d’INTEL, branchée sur un Raspberry PI 3 B+. Une IA mobile, autonome, connectable à des objets mobile ou à des machines de production, pour moins de 120€. De l’innovation frugale en quelque sorte

Le prototype monté à R&D Médiation

La clef USB MOVIDIUS Myriad X est une puce neurale capable selon son constructeur de réaliser 1000 milliards d’opérations par seconde (1 TOPS). Une fois les IA entrainées, il est possible de les envoyer sur cette puce qui peut alors être embarquée dans une objet mobile, sur une machine ou dans une chaine de production. Nous avons quant à nous implanté cette puce sur un RaspberryPI3B+, un nano-ordinateur à 47€ qui sert d’entrée/sortie.

L’interface de programmation a été compilée sur la distribution RASPBIAN STRECH LITE sur une partition de 64 Go.

 

Procédure d’installation adoptée

La procédure d’installation complète est relativement longue, mais les librairies suivantes peuvent être suffisantes et légères.

sudo apt-get update
sudo apt-get install -y libusb-1.0-0-dev libprotobuf-dev
sudo apt-get install -y libleveldb-dev libsnappy-dev
sudo apt-get install -y libopencv-dev
sudo apt-get install -y libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev git automake
sudo apt-get install -y byacc lsb-release cmake
sudo apt-get install -y libgflags-dev libgoogle-glog-dev
sudo apt-get install -y liblmdb-dev swig3.0 graphviz
sudo apt-get install -y libxslt-dev libxml2-dev
sudo apt-get install -y gfortran
sudo apt-get install -y python3-dev python-pip python3-pip
sudo apt-get install -y python3-setuptools python3-markdown
sudo apt-get install -y python3-pillow python3-yaml python3-pygraphviz
sudo apt-get install -y python3-h5py python3-nose python3-lxml
sudo apt-get install -y python3-matplotlib python3-numpy
sudo apt-get install -y python3-protobuf python3-dateutil
sudo apt-get install -y python3-skimage python3-scipy
sudo apt-get install -y python3-six python3-networkx
sudo apt-get install -y python3-pandas joe
cd ~
mkdir workspace
cd workspace
git clone https://github.com/movidius/ncsdk
git clone https://github.com/movidius/ncappzoo
git clone https://github.com/ardamavi/Intel-Movidius-NCS-Keras.git
cd ~/workspace/ncsdk/api/src
make
sudo make install

Tests du prototype

Pour tester le réseaux de neurones, nous avons exploité le réseau pré-entrainé GoogleNet. C’est une application relativement consommatrice de ressources qui consiste à montrer une image et à prédire ce qu’elle contient sous forme de mots. La clef s’adresse comme n’importe quel périphérique USB avec trois phases: Allocation du graphe, Préprocessing de l’image (redimensionnement, centrage, mise en conformité des couleurs), Inférence (prédiction du contenu de l’image). Une image est mise en relation par le réseau de neurones à un ou plusieurs synsets (catégories) classés par probabilité de correspondance.


Les Synsets
n01440764 tench, Tinca tinca
n01443537 goldfish, Carassius auratus
n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
n01491361 tiger shark, Galeocerdo cuvieri
n01494475 hammerhead, hammerhead shark
n01496331 electric ray, crampfish, numbfish, torpedo
n01498041 stingray
n01514668 cock
n01514859 hen
n01518878 ostrich, Struthio camelus
n01530575 brambling, Fringilla montifringilla
n01531178 goldfinch, Carduelis carduelis
n01532829 house finch, linnet, Carpodacus mexicanus
n01534433 junco, snowbird
n01537544 indigo bunting, indigo finch, indigo bird, Passerina cyanea
n01558993 robin, American robin, Turdus migratorius
n01560419 bulbul
n01580077 jay
n01582220 magpie
n01592084 chickadee
n01601694 water ouzel, dipper
n01608432 kite
n01614925 bald eagle, American eagle, Haliaeetus leucocephalus
n01616318 vulture
n01622779 great grey owl, great gray owl, Strix nebulosa
...
Le réseau de neurones GoogleNet est souvent indisponible au téléchargement. Vous pouvez ici le télécharger précompilé pour Movidius.

Les essais ont été faits sur plusieurs photos jamais vue auparavant par l’IA.

Prédiction de Zoli par Movidius/GoogleNet

Par exemple ici Zoli, le chat de la maison, pour lequel le réseau de neurones identifie bien un chat, tabby et tigré. L’analyse complète prend environ 96 millisecondes, soit de l’ordre de grandeur de la vitesse de perception humaine (Attention, Perception, and Psychophysics December 2013 DOI10.3758/s13414-013-0605-z) et cela sans fatigue.

Perspectives

Les puces neurales (Movidius est la première d’une longue série sans doute) permettent d’envisager de nombreuses applications industrielles pour faire sortir les IA de serveurs qui ont servi à leur apprentissage et les déployer sur des installations de production.

Application Type de deep learning Exemple fourni par INTEL
Classification d’image Catégorisation Oui
Détection d’objet dans le champ de vision en temps réel Catégorisation Oui
Détection de l’age et du genre d’une personne sur photo Catégorisation Oui
Détection de visage sur video Détection Oui
Speech to text NLP Non
Chatbot et traduction Seq2Seq Non mais doit être possible depuis l’intégration de Tensorflow

Les puces neurales peuvent donc être déployées partout où l’on a besoin d’IA dans des environnements non protégés, avec toutefois quelques limites. Movidius est un excellent outil de prototypage, mais il rend potentiellement possible le retro engineering d’une IA pour une utilisation dans un autre domaine. Par ailleurs, si Movidius est adapté à la prédiction à partir d’une IA préentrainée ailleurs puis transférée sur la puce, il ne permet pas a priori de continuer l’entrainement à partir des données reçues pendant la production. Il faudra donc les remonter, les réintégrer à l’apprentissage puis mettre à jour les puces neurales. De la même manière, le système est adapté à l’apprentissage supervisé mais pas à l’apprentissage non supervisé. Cette technologie ouvre pourtant des perspectives intéressantes et génératrices d’innovation.

Télécharger cet article au format PDF ou ePub

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.