When I run the following, it just sticks on the line model_info = runner.init(). Any ideas why? I can cancel out of it
#!/usr/bin/env python
import os
from edge_impulse_linux.image import ImageImpulseRunner
modelfile = ("/home/tbgiot04/read_robot_camera/modelfile.eim")
print('MODEL: ' + modelfile)
with ImageImpulseRunner(modelfile) as runner:
model_info = runner.init()
It seams to be looping at in the class ImpulseRunner line “while not os.path.exists(socket_path) or not self._runner.poll() is None:” This then loads up os.stat that gives a error as below (but not displayed to screen)
os.stat(path)
Traceback (most recent call last):
File "/home/tbgiot04/miniconda3/lib/python3.9/genericpath.py", line 19, in exists
os.stat(path)
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpk_n8mrud/runner.sock'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpk_n8mrud/runner.sock'
I’d first check the model-file permissions and owner, maybe the .eim is unable to create the socket in /tmp but not failing cleanly?
Also might be a good idea to confirm the .eim executable is running properly besides the socket. You can quickly check .eim operation via the command line e.g:
The linux version is : Linux 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64
When running the command below, getting command not found.
$ /home/tbgiot04/read_robot_camera/modelfile.eim
/home/tbgiot04/read_robot_camera/modelfile.eim: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29’ not found (required by /home/tbgiot04/read_robot_camera/modelfile.eim)
Any thoughts, ive performed a google search and it says upgrading Debian might be a solution. Is there anyway to just upgrade the package?
We require glibc 2.29 at the moment for x86 targets, and glibc 2.28 for ARM targets. I spent some time last week to try and force link to an older glibc version, but did not succeed. Alternatively you can build https://github.com/edgeimpulse/example-standalone-inferencing-linux on your host system (eim output target) that will link to system glibc version.