Tensorflow Lite MicroPython support?
-
Hello everyone,
I am just wondering is there any possibility to upload esp32 firmware, which enables TensorFlow Lite features, on the FiPy board? I was following the instruction found in this repo https://github.com/mocleiri/tensorflow-micropython-examples, but it's not possible to connect with my FiPy and upload this firmware on it. I am constantly getting this error:
esptool.FatalError: Failed to connect to ESP32 : Invalid head on packet 0x08.
Does anyone know how to fix this issue, or the solution is to buy esp32 for this purpose?
Thanks and cheers!
-
@Adnan-Sabovic-0 you have to connect P2 to Gnd and push reset, to set the ESP32 into bootloader mode. The mechanisms required by esptool and implement by Pycom are incompatible.
-
Hi, it worked when I connected P2 and GND. I was able to upload the firmware successfully. But now I am facing another issue: OSError: [Errno 2] ENOENT. Is it possible that I uploaded the wrong firmware version? I built standard non-psram 4MB Flash firmware. Is it okay, or I should consider another version?
The possible versions can be found on this link:
https://github.com/mocleiri/tensorflow-micropython-examples/actions/runs/1986616446 -
@Adnan-Sabovic-0 It means that files are missing, like boot.py or main.py. If you installed a fresh firmware, you start with an empty file system. What do you get when you type:
import os
print(os.listdir(""))What do the instructions tell about using tensorflow?
-
@robert-hh This is the output when I typed your commands in Pymakr terminal:
>>> import os >>> print(os.listdir("")) ['boot.py', 'esp32-cam', 'images', 'main.py', 'project.pymakr', 'show-test-images.py']I completely followed these instructions: https://github.com/mocleiri/tensorflow-micropython-examples/runs/5553454051?check_suite_focus=true
After I set up everything and built tensorflow, all I needed to do is to choose the right firmware for my board. Once this job is finished, I supposed to be able to run the example (person detection), but then this problem occurs. The problem is detected after this line is called:
person_detection_model_file = open ('person_detect_model.tflite', 'rb')which means that maybe the problem is related to model that is uploaded with tensorflow?
-
@robert-hh you script tries to open the file person_detect_model.tflite at the local file system, but it does not exist. You have to create or upload it to the board.
-
@robert-hh I already have it. It is not possible to upload it via Pymark terminal in VS Code?
-
@Adnan-Sabovic-0 Since you are not using the Pycom firmware, pymakr may not work. Try other tools for uploading like rshell https://pypi.org/project/rshell/ or mpremote https://pypi.org/project/mpremote/ . Both offer a REPL console as well. These are command line based tools, so they may look a little uncomfortable at the first moment. But once you get used to it, you'll see that it is way more robust than using an API like pymakr of Thonny.
-
@robert-hh I installed rshell and ran in my Ubuntu terminal. I am still confused how to upload here all files from the example folder. I can list them all:
on-examples/examples/person_test> ls -lthon-examples/tensorflow-micropytho 1316 Apr 15 12:15 main.py 9216 Apr 11 14:52 no_person_image_data.dat 300568 Apr 11 14:52 person_detect_model.tflite 9216 Apr 11 14:52 person_image_data.datAnd then I tried to run REPL and import main, but again same error as before. Then I imported microlite from main file but after I imported main again, still no any message. Where did I make mistakes?
-
@Adnan-Sabovic-0 The files on the board should be available under the path /esp32. In rshell, try:
ls /esp32
To put files there, just copy the to /esp32 with
cp source_file target_file
Target file names must start with /esp32/
-
@robert-hh I have a small update, I am able to upload all the necessary files to my board. In my case it was ls /pyboard instead of ls /esp32. The new problem that occurred is related to memory allocation. Based on the code, it allocates 300568 bytes. Do you maybe know where can be a possible issue with memory part?
-
@Adnan-Sabovic-0 Sometimes its /pyboard, sometimes /esp32. In case of a RAM shortage, use a firmware image with SPIRAM support, if available.
-
@robert-hh Do I need to upload a new firmware then and remove the existing one, or there is another way of using a firmware image with SPIRAM support?
-
@Adnan-Sabovic-0 You have to upload the new firmware. But now, that you know how it is not a big thing.
-
@robert-hh Yes, indeed! I uploaded the new firmware and now everything works as expected. Thanks a lot for help and advices that you gave me!
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login