Ce tutoriel vous permet de tester un exemple de programme utilisant TensorFlow Lite sur une cible microcontroleur, qui sera adans notre cas une carte LILYGO TTGO CAMERA (avec un µC ESP32) visible sur l'image ci-dessous :
L'exemple "doorbell_camera" qui sera chargé dans cette carte est un système qui lorsqu'il détecte une personne avec la caméra, envoi un email avec la photo de la personne.
L'exemple est construit avec tensorflow et permettra de générer un projet qui sera compilé et chargé par ESP-IDF, déjà installé sur les machines de l'école. Si vous avez vos propres machines, suivez à la lettre le tutoriel d'installation de ESP-IDF
Voici les étapes pratiques à mettre en oeuvre :
- Dans
/tmp
(pour des soucis de quota d'espace disque), clonez le repo suivant : https://github.com/espressif/tensorflow/ - Dans votre terminal, appelez la commande
get_idf
pour charger ESP-IDF, l'"IoT Development Framework" de Expressif - Faites
cd tensorflow
- Puis générez le projet doorbell pour esp32 :
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=esp generate_doorbell_camera_esp_project
- Allez dans le dossier où le projet a été généré :
cd tensorflow/lite/micro/tools/make/gen/esp_xtensa-esp32/prj/doorbell_camera/esp-idf
- Ajoutez le driver de camera au projet :
git clone https://github.com/espressif/esp32-camera components/esp32-camera
- Configurez le projet
idf.py menuconfig
et notamment :- le pinout de la camera inscrit sur la boite dans
Camera Pins --> Select Camera Pinout
, selectionnezCustom Camera Pinout
et renseignez les pins caméra décrites sur la boite de la carte. - le smtp dans
SMTP Configuration
renseignez votre email. Vous n'êtes pas obligé de faire cette partie étant donné la sécurité en jeu. D'autant plus que vous devez activer l'option less secure sur votre compte pour que ça marche (~1h d'activation). Si vous ne le faites pas vous pourrez vous contenter des logs. - les paramètres wifi dans
Example Connection Configuration
(SSID et mot de passe). Vous pouvez sauter cette étape si vous ne faites pas les emails. - Appuyez sur
S
pour enregistrer et faites 2xEntrée
- le pinout de la camera inscrit sur la boite dans
- Compilez l'exemple que vous venez de configurer :
idf.py build
- Branchez la carte, flashez la, et suivez les logs qu'elle renvoi :
idf.py --port /dev/ttyUSB0 flash monitor
- Pour quitter le monitoring faites Ctrl-T suivi de Ctrl-X
- Pour garder une trace de votre projet, vous pouvez copier le dossier
doorbell_camera
dans votre home (il est actuellement dans /tmp, ce qui lui vaudra de disparaitre au prochain démarrage de la machine.
Vous pouvez tester ainsi d'autres exemples, mais d'abord, analysez le code de l'exemple et répondez à ces quelques questions dans un rapport:
-
Combien le réseau de neurones a-t-il d'entrées ? Justifiez
-
Quelle est la résolution (infomation dans le type) d'une entrée ? Justifiez
-
Combien le réseau de neurones a-t-il de sorties ? Justifiez
-
Faites un schéma représentant le réseau de neurones avec une représentation synthétique de ses entrées, ses souches, ses sorties.
-
Ecrivez avec vos propres mots un petit paragraphe sur le rôle des différentes couches.
-
Notez les 3 points les plus marquants que vous avez appris aujourd'hui.