AI Devcon Intel 2019 - Munich

Le 23 janvier avait lieu l’AI DevCon d’intel à Munich. L’occasion pour Intel de représenter ses précédentes annonces dans le domaine de l’intelligence artificielle aussi bien matérielles que logiciel, Et oui Intel ne fait pas que du hardware et tient à le faire savoir.

Keynote de Remi El-Ouazzane - Photo Aymeric Weinbach

La Keynote était faite par Remi El-Ouazzane VP d’Intel et Chief Operating Officer du groupe produit autour de l’AI chez Intel. Et ancien CEO de la société Movidius spécialisé dans les processeurs dédiés à l’IOT et la reconnaissance visuelle, les VPU. La société avait été racheté par Intel en 2016. Et pour la partie logicielle c’était Jason Knight qui faisait les annonces.

Coté hardware outre les nouvelles versions de Xeon,  l’annonce intéressante était le Neural Compute Stick 2. Le NCS 2 est une clé USB qui contient un VPU dédié à la reconnaissance visuelle, et une puissance 1 Teraflop. Pour cette nouvelle génération il contient pour la première fois un « Neural Compute Engine » dédié au Deep Learning. Pour rendre n’importe quelle machine capable de faire du deep learning, une alternative aux puissances GPU. Surtout dans le domaine de l’IOT puisqu’on peut brancher le NCS 2 sur un Raspberry Pi et profiter de cette puissance.

Neural Compute Stick 2 - Photo Aymeric Weinbach

Pour la partie logicielle on utilise l’OpenVino Toolkit, grosse boite à outil logicielle IA d’intel.

La promesse est également de pouvoir utiliser les frameworks populaires pour les réseaux de neurones tel que tensorflow ou Pytorch. Pour cela Intel propose le compilateur NGRAPH en opensource. L’idée derrière NGRAPH est d’être une couche supplémentaire d’abstraction et d’être une couche intermédiaire entre le modèle généré par le framework et le processeur cible CPU GPU VPU

Coté Cloud L’annonce était autour de NAUTA est une plateforme opensource pour le deep learning construite autour de Kubernetes et de Docker, déployable en théorie sur tout les clouds.

Coté software une autre annonce intéressante était le Neural Network Distiller, Pour Pytorch l’idée est de compresser le réseau de neurone pour réduire l’empreinte mémoire et réduire l’énergie utilisé (pour sauver la planète)

Pour conclure sur les conférences je vais utiliser la citation d'Edgar Degas vu dans la conférence sur le Neural Style Transfer d'oeuvre d'art en temps réel
"Art is not what you see but what you make others see" Le sujet sera l'occasion d'un long et futur article sur l'art et l'IA.

Edgar Degas AI - Photo Aymeric Weinbach

A l’Intel AI DevCon j’ai pu avoir un NCS 2. Tester comment se place le NCS 2 vis-à-vis de la concurrence. L’idée à l’air séduisante dans le monde de l’informatique embarqué de la robotique si on veut faire de l’IA il y a 3 options, embarquer une grosse machine avec un gros Cpu et un Gpu, ça va couter très cher et consommer d’énergie, ça n’est utilisable que pour un gros robot(humanoïde :) par exemple. Si on veut un petit device qui consomme peu d’énergie à priori la seule solution est le « cloud » et utiliser un service du type Azure Iot Edge et des services cloud pour déporter le traitement  c’est une excellente solution mais parfois on a pas la possibilité d’avoir une connexion internet suffisamment fiable, ou tout simplement on veut pouvoir profiter des deux, par exemple une partie traitement qui doit toujours fonctionner même déconnecté et d’autre qu’on déporte dans le cloud.

Intel propose avec sa puce Myriad X d’avoir une puissance de traitement pour la reconnaissance visuelle. Le Ncs2 est une clé Usb qui contient cette puce pour le prototypage qu’on peut brancher en usb et utiliser directement sur une petite carte type raspberry pi avec un petit processeur.

Branchons le NCS2 sur un raspberry pi 3 et voyons  si il tient ses promesses, est ce qu’on pourrait se passer de cloud pour de la reconnaissance visuelle et avoir l’équivalent de la puissance d’un laptop.

Il vous faut pour commencer un Raspberry pi et une caméra pi pour démarrer.

NCS 2 - Photo Aymeric Weinbach

Sur le raspberry pi on utilise une sdcard comme stockage. La première étape est d’installer un Raspbian os (un linux debian adapté au rapsberry pi)  Le plus simple pour ça est d’utiliser NOOBS un installateur simple pour pc/ mac qui vous formate correctement la Sdcard directement avec l’OS. J’ai installé la version non graphique de raspbian.

Etape suivante installer Openvino  le toolkit Intel pour le NPC2 sur le raspberry. Pour cela connectons nous au terminal, soit vous branchez le raspberry pi directement sur un écran ou vous le branchez sur un réseau filaire et vous connecter en ssh au raspberry pi (mon option)

Télécharger le toolkit

wget https://download.01.org/openvinotoolkit/2018_R5/packages/l_openvino_toolkit_ie_p_2018.5.445.tgz

Décompresser l’archive

tar -xf l_openvino_toolkit_ie_p_<version>.tgz

Modifier le script di’nstall avec le dossier local

sed -i "s|<INSTALLDIR>|$(pwd)/inference_engine_vpu_arm|" inference_engine_vpu_arm/bin/setupvars.sh

et exécuter ce script pour fixer les variables d’environnement

source inference_engine_vpu_arm/bin/setupvars.sh

Les variables d’environnement sont supprimés à chaque redémarrage pensez à exécuter le script au démarrage

Autoriser l’usb

sudo usermod -a -G users "$(whoami)"

sh inference_engine_vpu_arm/install_dependencies/install_NCS_udev_rules.sh

Le sdk openvino contient un exemple de détection de visage qu’on peut utiliser pour notre test :

Commençons par faire le build de l’exemple de détection d’objet.

cd inference_engine_vpu_arm/deployment_tools/inference_engine/samples

mkdir build && cd build

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a"

make -j2 object_detection_sample_ssd

Télécharger les modèle préentrainés fourni

wget --no-check-certificate https://download.01.org/openvinotoolkit/2018_R4/open_model_zoo/face-detection-adas-0001/FP16/face-detection-adas-0001.bin

wget --no-check-certificate https://download.01.org/openvinotoolkit/2018_R4/open_model_zoo/face-detection-adas-0001/FP16/face-detection-adas-0001.xml

Prenez une photo avec la caméra ou récuperez une photo pour un test et tentez le test :

./armv7l/Release/object_detection_sample_ssd -m face-detection-adas-0001.xml -d MYRIAD -i <path_to_image>

Il est aussi possible d’utiliser la reconnaissance fourni par opencv avec des modèles préentrainé fourni également.

Les résultats sont plutôt bon et on arrive à des résultats en terme de puissance comparable pour de la reconnaissance de visage avec un laptop.