This project is done with Open Source Computer Vision Library (OpenCV). OpenCV was designed for computational efficiency and with a strong focus on real-time applications. So, it's perfect for real-time face recognition using a camera. To create a complete project on Face Recognition, we must work on 3 very distinct phases:Face detection and data gathering, train the recognizer and face recognition. we will simply create a data-set, where we will store images for each id, a group of photos that are used for face detection.

 

Requirements:

I. Raspberry Pi model 3Raspberry Pi model 3                                    

II. Raspberry Pi Power SupplyRaspberry Pi Power Supply                         

III. Raspberry pi Touch Screen Display 7 inchRaspberry pi Touch Screen Display 7 inch  

IV. Raspberry Pi NoIR CameraRaspberry Pi NoIR Camera                  

 

 

Raspberry Pi Pin Configuration

 

 

Connection:

i.Connect Ribbon cable from Display to Raspberry Pi

 

 

ii. Connect SDA to Raspberry Pi SDA pin and connect SCL from Display to Raspberry Pi SCL pin

 

iii. Connect Ribbon cable from camera to Raspberry Pi

 

iv. Connect GND from Display to Raspberry Pi GND

v. Connect 5V from Display to Raspberry Pi 5V

 

Procedure for installing opencv and facial recognition libraries

Step #1: Expand file system

 

$ sudo raspi-config

In the “Advanced Options” menu select “Expand Filesystem”, select the first option, “A1. Expand FileSystem”, click “<Finish>” button, and then reboot your Pi

 

$ sudo reboot

 

Step #2: Install dependencies

$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install build-essential cmake pkg-config
$ sudo apt-get install libjpeg-dev 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 libgtk2.0-dev libgtk-3-dev
$ sudo apt-get install libatlas-base-dev gfortran
$ sudo apt-get install python2.7-dev python3-dev

 

Step #3: Download the OpenCV source code

$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.4.1.zip
$ unzip opencv.zip
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip
$ unzip opencv_contrib.zip

 

Step #4: Install Pip

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py

 

step #5: Installing NumPy on your Raspberry Pi

$ pip install numpy

 

Step #6: Compile and Install OpenCV

$ cd ~/opencv-3.4.1/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules \
    -D BUILD_EXAMPLES=ON ..

 

step #7 Configure your swap space size before compiling

if you are not increasing the swap size then there is a chance that opencv will not compile

 

Open your /etc/dphys-swapfile  and then edit the CONF_SWAPSIZE  variable:

 

sudo nano /etc/dphys-swapfile

 

The default value in Raspbian is:

CONF_SWAPSIZE=100

Change this to:

CONF_SWAPSIZE=1024

Stop and start the service that manages the swapfile on Rasbian:

 

$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start

 

step #8 Build and install opencv

$ make -j4
$ sudo make install
$ sudo ldconfig

 

Step #9: Testing your OpenCV 3 install

$ python3
>>> import cv2
>>> cv2.__version__
'3.4.1'
>>>

 

step #10 Change your swap size back

If swap size is not restored back the memory card will not last longer.

Open your  /etc/dphys-swapfile  and then edit the  CONF_SWAPSIZE  variable:

CONF_SWAPSIZE=100

To revert to the smaller swap space, restart the swap service:

$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start

 

step #11 Installing libraries required for facial recognition:

$ pip install dlib
$ pip install face_recognition
$ pip install imutils

 

Executing the code

The source files for this project are attached with this blog, simply extract and run the code.

 

step #1

Run the file faceDataset.py, a dialog window will open, enter the name of the person whose images are to be stored. If the name is not entered the folder will not be created. This is the folder where all the images of that particular person will be stored and is required for further processing.

 

$ python3 faceDataset.py

 

Click on create and then click start capture.

 

 

 

An image capturing window will open click on Snapshot to take the photos of the person. It will store a single image every time you click on Snapshot. Take at least 6-7 images in the different face position, for example straight, tilt and side pictures. Close the window when done.

 

To create the multiple person data repeat the previous step

NOTE: If numerous person data are stored, the encoding time will increase, as the raspberry pi is a low power computer it will take more time to process, and the facial recognition will run slower.

 

step #2

Run the file face_recognize.py .

 

$python3 face_recognize.py

 

A window will open and shows the processing image. The processing time depends on the number of images stored.

 

After processing the images, the "Frame window" will open, when the camera detects the person's face, it will show the name of the person if its matches with the images in the database. Press Q on the keyboard to close the Frame window.