Skip to content

Instantly share code, notes, and snippets.

@m0rph03nix
Last active November 12, 2021 19:12
Show Gist options
  • Save m0rph03nix/67ea4790bfdcc969f486bbe859574704 to your computer and use it in GitHub Desktop.
Save m0rph03nix/67ea4790bfdcc969f486bbe859574704 to your computer and use it in GitHub Desktop.
T-CAM example at CPE Lyon

Prise en main d'un exemple de réseau de neurones embarqué avec TFLite

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 :

image d'une T-CAM ESP32

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, selectionnez Custom 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 2x Entrée
  • 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:

  1. Combien le réseau de neurones a-t-il d'entrées ? Justifiez

  2. Quelle est la résolution (infomation dans le type) d'une entrée ? Justifiez

  3. Combien le réseau de neurones a-t-il de sorties ? Justifiez

  4. 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.

  5. Ecrivez avec vos propres mots un petit paragraphe sur le rôle des différentes couches.

  6. Notez les 3 points les plus marquants que vous avez appris aujourd'hui.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment