---+ Preparing a custom version of !MicroPython with !TensorFlow ---++ Introduction For work with ML algorithms I use the [[esp32-cam]] module because it is small, cheap and has a camera installed on it. To get it ready for ML models we must first create a custom version of !MicroPython. Michael O'Cleirigh's github repository (https://github.com/mocleiri/tensorflow-micropython-examples) contains all the tools to do just this. Here are the steps to build this custom !microPython version: * Download the repository:<br />git clone https://github.com/mocleiri/tensorflow-micropython-examples tflite-micro-micropython * The steps to build the firmware can be found in tflite-micro-micropython/.github/workflows/build_esp32.yml<br />In my case the Espressif development environment <b>espidf </b>has already been downloaded and set up earlier. I use espidf version 4.3.1, the latest stable version at time of writing.<br /><br />Activate the virtual Python environment needed for espidf (if venvwrapper is installed: _workon espidf_)<br />Make sure that the modules _Pillow_ and <i>Wave </i>have been installed on this virtual environment. If not, install them with pip: * pip3 install Pillow * pip3 install Wave * Setup the sub-modules needed for tflm: * cd tflite-micro-micropython * git submodule init * git submodule update --recursive * Regenerate the microlite/tfm directory * cd tensorflow * ../micropython-modules/microlite/prepare-tflm-esp.sh * Setup the sub-modules for the ESP32 port of !MicroPython * cd ../micropython * git submodule update --init lib/axtls * git submodule update --init lib/berkeley-db-1.xx * Get the esp32-camera driver from Espressif * cd .. * cd tflm-esp-kernels * git submodule update --init examples/person_detection/esp32-camera * Build the !MicroPython cross compiler * cd ../micropython/mpy_cross * make * cd .. (the micropython folder of tflite-micro-micropython) * git apply ../boards/esp32/MICROLITE_SPIRAM_CAM/micropython.patch <br />MicroPython allocates the full SPIRAM installed on the esp32-cam module for its heap. However, the esp32-camera driver needs some SPIRAM for its image buffer. The patch modifies main.c in micropython/ports/esp32 such that part of the SPIRAM is kept free for the camera driver. * cd boards/esp32/MICROLITE_SPIRAM_16M (when using the TTGO T7 Mini32 V1.5 ESP32-WROVER-B CPU board) or<br />cd boards/esp32/MICROLITE_SPIRAM_CAM when using the esp32-cam module<br /> * idf.py clean build (this builds the !MicroPython firmware) * flash the custom !MicroPython interpreter * idf.py flash Once you have flashed the custom interpreter you can check if all the Python modules are available: <img alt="tflite_micropython.png" height="180" src="%ATTACHURL%/tflite_micropython.png" title="tflite_micropython.png" width="811" /> Since all the necessary drivers and libraries are now ready in !MicroPython we can go ahead and try the !TensorFlow Lite Micro examples. -- %USERSIG{UliRaich - 2022-01-31}% ---++ Comments %COMMENT%
Attachments
Attachments
Topic attachments
I
Attachment
History
Action
Size
Date
Who
Comment
png
tflite_micropython.png
r1
manage
22.3 K
2022-01-31 - 13:25
UliRaich
This topic: IoT_Course_English
>
WebHome
>
TinyML
>
CustomNopMicroPython
Topic revision: r7 - 2022-09-22 - UliRaich
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback