14 comments

[ 3.2 ms ] story [ 42.9 ms ] thread
Is there a more self-contained way of running trained models on devices like the Pi? Almost all tutorials I've come across always require me to install a lot of Python dependencies. I'd love to have classifiers installed as a single binary somewhere. I guess https://pjreddie.com/darknet/yolo/ is pretty close to that and I would imagine with a custom build wrapper around https://github.com/tensorflow/tensorflow/tree/master/tensorf..., the same could be achieved. Any hints?
(comment deleted)
You could use tensorflow.js, not self-contained, but it only depends on the browser. And... Is it easy to get openCL working on a Pi? WebGL might be slower, but it ought to just work.
(comment deleted)
Why not just install all the python 3 dependencies to a docker image and then run the docker container on the pi?
This was actually my original approach. I meant to mention that. And I got it to work but then I had to figure out how to control the hardware from the pi and I just gave up. To be fair, I didn't try too hard. I'm sure there is a way to communicate with peripherals through
Did you look at Resin OS at all (resin.io)? No affiliation. Ship a container to your Pi that you can develop on your laptop and then have built for the ARM architecture on Resin's server. It looked very good last fall when I was toying around with Pi video but never pursued it.
Another option would be to make a minimal install and then just clone the SD card. It's less neat than Docker, but if you're provisioning a new Pi then you still need to install Docker on it in the first place. Or use something like Ansible to do the setup automatically?

Hardware control on the Pi is pretty simple, use the WiringPi library. I guess you'd need to run Docker in privileged mode, but it should work from within a container?

Since the Pi is ARM, you'd need to get pip to cross-compile any native extensions in the Python libraries (or use a pre-compiled wheel, if available).
You want to proceed carefully with a Pi Zero - the chip is an ARMv6, so you'll end up building more things and you loose some optimization - you might not like the performance :-(