Hey guys,
This post is about building your own Raspberry Pi face recognition service.
Hardware prerequisites:
- A working Raspberry Pi (I’ve used model 3+, the fastest on the market at the time of writing this article) with a 2.5A charger, a 16 Gb SD-card, HDMI cable - Any USB webcam - Optional: an Arduino like motion sensor
Note: this setup might work on older versions of the Pi, however the overall performance might be impacted!
Software prerequisites:
- You will need latest version of Raspbian installed on the Pi - WiFi or Ethernet working and configured to your local network.
Run sudo raspi-config
and configure the basics: - Set up your keyboard layout (It defaults to a British keyboard layout) - Change default user password - Enable the Raspberry Pi camera (if you have one attached) - Configure gpu memory split under ‘Advanced’. Set it up ‘16’. - Save changes and reboot.
Install required libraries with these commands:
sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential \ cmake \ gfortran \ git \ wget \ curl \ graphicsmagick \ libgraphicsmagick1-dev \ libatlas-dev \ libavcodec-dev \ libavformat-dev \ libboost-all-dev \ libgtk2.0-dev \ libjpeg-dev \ liblapack-dev \ libswscale-dev \ pkg-config \ python3-dev \ python3-numpy \ python3-pip \ zip sudo apt-get clean
Install the picamera python library with array support (if you are using a camera): sudo apt-get install python3-picamera sudo pip3 install --upgrade picamera[array]
Temporarily enable a larger swap file size (so the dlib compile won’t fail due to limited memory):
sudo nano /etc/dphys-swapfile
< change CONF_SWAPSIZE=100 to CONF_SWAPSIZE=1024 and save / exit nano >
sudo /etc/init.d/dphys-swapfile restart
Download and install dlib v19.6:
mkdir -p dlib git clone -b 'v19.6' --single-branch https://github.com/davisking/dlib.git dlib/ cd ./dlib sudo python3 setup.py install --compiler-flags "-mfpu=neon"
Install face_recognition:
sudo pip3 install face_recognition
Revert the swap file size change now that dlib is installed:
sudo nano /etc/dphys-swapfile
< change CONF_SWAPSIZE=1024 to CONF_SWAPSIZE=100 and save / exit nano >
sudo /etc/init.d/dphys-swapfile restart
Download the face recognition code examples:
git clone --single-branch https://github.com/ageitgey/face_recognition.git
Last step! Running our stuff! cd ./face_recognition/examples python3 facerec_on_raspberry_pi.py
Totally Optional: If you want a desktop GUI, install PIXEL:
sudo apt-get install --no-install-recommends xserver-xorg xinit raspberrypi-ui-mods
Once you run the script, the end result should look something like this:
Thanks to Adam Geitgey for creating his really nice Python library, which you can find in his Github account.