Skip to content

Qengineering/Face-Mask-Detection-Raspberry-Pi-64-bits

Repository files navigation

output image Find this example on our SD-image

Face Mask Detection on Raspberry Pi 64 bits

output image

A fast face mask recognition running at 24-5 FPS on bare a Raspberry Pi 4.

License

This is a fast C++ implementation of two deep learning models found in the public domain.

The first is face detector of Linzaer running on a ncnn framework.
https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB.

The second is the Paddle Lite mask detection which classifies the found faces.
https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/cxx/mask_detection.

The frame rate depends on the number of detected faces and can be calculated as follows:
FPS = 1.0/(0.04 + 0.01 x #Faces) when overclocked to 1950 MHz.

Paper: https://arxiv.org/abs/1905.00641.pdf
Size: 320x320

Special made for a bare Raspberry Pi see Q-engineering deep learning examples

New version 2.0.

A new and superior version with only TensorFlow Lite for a bare Raspberry Pi see GitHub

Dependencies.

To run the application, you have to:

  • A raspberry Pi 4 with a 64-bit operating system. It can be the Raspberry 64-bit OS, or Ubuntu 18.04 / 20.04. Install 64-bit OS
  • The Paddle Lite framework installed. Install Paddle
  • The Tencent ncnn framework installed. Install ncnn
  • OpenCV 64 bit installed. Install OpenCV 4.5
  • Code::Blocks installed. ($ sudo apt-get install codeblocks)

Running the app.

To extract and run the network in Code::Blocks
$ mkdir MyDir
$ cd MyDir
$ wget https://github.com/Qengineering/Face-Mask-Detection-Raspberry-Pi-64-bits/archive/refs/heads/master.zip
$ unzip -j master.zip
Remove master.zip and README.md as they are no longer needed.
$ rm master.zip
$ rm README.md

Your MyDir folder must now look like this:
Face_1.jpg
Face_2.jpg
Face_3.jpg
Face_Mask_Video.mp4
MaskUltra.cpb
mask_ultra.cpp
UltraFace.cpp
UltraFace.hpp
RFB-320.bin
RFB-320.param
slim_320.bin
slim_320.param

The RFB-320 model recognizes slightly more faces than slim_320 at the expense of a little bit of speed. It is up to you.
Note that the compilation of the Paddle Lite framework in your application can take minutes (> 3 min).

See the video at https://youtu.be/LDPXgJv3wAk