FaceMaskDetection
中文版 | English version
We open source all the popular deep learning frameworks' model and inference code to do face mask detection.
- PyTorch
- TensorFlow(include tflite and pb model)
- Keras
- MXNet
- Caffe
- Paddle
- OpenCV dnn
** Detect faces and determine whether they are wearing mask. **
** First of all, we hope the people in the world defeat COVID-2019 as soon as possible. Stay strong, all the countries in the world.**
-
We make face mask detection models with five mainstream deep learning frameworks (PyTorch、TensorFlow、Keras、MXNet和caffe) open sourced, and the corresponding inference codes.
-
We published 7971 images to train the models. The dataset is composed of WIDER Face and MAFA, we verified some wrong annotations. You can download here from Google drive, if you can not visit Google, you can download it from BaiduDisk, click here to know how to download.
We deployed a web page, you can click the link to experience it. The page is writen by Tensorflow.js.
Model structure
We used the structure of SSD. However, in order to make it run quickly in the browser, the backbone network is lite. The total model only has 1.01M parametes.
Input size of the model is 260x260, the backbone network only has 8 conv layers. The total model has only 24 layers with the location and classification layers counted.
SSD anchor configurtion is show bellow:
multibox layers | feature map size | anchor size | aspect ratio) |
---|---|---|---|
First | 33x33 | 0.04,0.056 | 1,0.62,0.42 |
Second | 17x17 | 0.08,0.11 | |
Third | 9x9 | 0.16,0.22 | 1,0.62,0.42 |
Forth | 5x5 | 0.32,0.45 | 1,0.62,0.42 |
Fifth | 3x3 | 0.64,0.72 | 1,0.62,0.42 |
How to run
opencv
python opencv_dnn_infer.py --img-path /path/to/your/img
paddle
on image:
python paddle_infer.py --img-path /path/to/your/img
pytorch
on image:
python pytorch_infer.py --img-path /path/to/your/img
on video:
python pytorch_infer.py --img-mode 0 --video-path /path/to/video
# If you want to run with camera video, set video_path to be 0
python pytorch_infer.py --img-mode 0 --video-path 0
TensorFlow/Keras/MXNet/Caffe
The other four frameworks running method is similar to pytorch, just replace pytorch
with tensorflow
, keras
,caffe
,mxnet
,
if you want to use tensorflow, just run:
python tensorflow_infer.py --img-path /path/to/your/img
Attention,for caffe's inference ,we use permute layer,so that we should use caffe-ssd,you can use opencv-dnn to do the inference.
Appendix
Feedback
If you use wechat, you can follow us.
** If you use Wechat, scan the code to add me on wechat **
Model structure
We merge the BN to Conv layers in order to accelerate the inference speed.