3 Frameworks for Machine Learning on the Raspberry Pi
The revolution of AI is reaching new heights through new mediums. We’re all enjoying new tools on the edge, but what are they? What products frameworks will fuel the inventions of tomorrow?
If you’re unfamiliar with why Machine Learning is changing our lives, have a read here.
If you’re already excited about Machine Learning and you’re interested in utilizing it on devices like the Raspberry Pi, enjoy!
Simple object detection on the Raspberry Pi
I’ve implemented three different tools for detection on the Pi camera. While it’s a modern miracle that all three work, it’s important for creators to know “how well” because of #perfmatters.
Our three contenders are as follows:
- Vanilla Raspberry Pi 3 B+— No optimizations, but just using a TensorFlow framework on the device for simple recognition.
- Intel’s Neural Compute Stick 2 — Intel’s latest USB interface device for Neural Networks, boasting 8x perf over the first stick! Around $80 USD.
- Xnor.ai — A proprietary framework that reconfigures your model to run efficiently on smaller hardware. Xnor’s binary logic shrinks 32-bit floats to 1-bit operations, allowing you to optimize deep learning models for simple devices.
Let’s evaluate all three with simple object detection on a camera!
Vanilla Raspberry Pi 3 B+
A Raspberry Pi is like a small, wimpy, Linux machine for $40. It allows you to run high-level applications and code on devices like IoT made easy. Though it sounds like I can basically use laptop machine learning on the device, there’s one big gotcha. The RPi has an ARM processor, and that means we’ll need to recompile our framework, i.e. TensorFlow, to get everything running.
⚠️ While this is not hard, this is SLOW. Expect this to take a very… very… long time. This is pretty much the fate of anything compiled on the Raspberry Pi.
Here are all the steps I did, including setting up the Pi camera for object detection. I'm simply including this for posterity. Feel free to skip reading it.
Install pi, then camera, then edit the
disable_camera_led=1 to the bottom of the file and rebooting.
Best to disable screensaver mode, as some follow-up commands may take hours
sudo apt-get install xscreensaver xscreensaver
Then disable screen saver in the “Display Mode” tab.
Now get Tensorflow Installed
sudo apt-get update sudo apt-get dist-upgrade sudo apt-get update sudo apt-get install libatlas-base-dev sudo apt-get install libjasper-dev libqtgui4 python3-pyqt5 pip3 install tensorflow sudo apt-get install libjpeg-dev zlib1g-dev libxml2-dev libxslt1-dev pip3 install pillow jupyter matplotlib cython pip3 install lxml # this one takes a long time pip3 install python-tk
sudo apt-get install libtiff5-dev libjasper-dev libpng12-dev Sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev sudo apt-get install qt4-dev-tools pip3 install opencv-python
sudo apt-get install autoconf automake libtool curl
Then pull down protobuff and untar it.
Then cd in and then run the following command which might cause the computer to become unusable for the next 2+ hours. Use ctrl + alt + F1, to move to terminal only and release all UI RAM. Close x process with control + c if needed. You can then run the long-running command. Base username “pi” and password “raspberry”
make && make check
You can then install simply with
sudo make install cd python export LD_LIBRARY_PATH=../src/.libs python3 setup.py build --cpp_implementation python3 setup.py test --cpp_implementation sudo python3 setup.py install --cpp_implementation export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=3 sudo ldconfig
Once this is...Read more »