本人最近在研究人脸识别、人脸检测和姿态估计等视觉领域的算法,也在研究各类神经网络例如ResNet、Feature Pyramid Net、Retina Net和DenseNet。所以将自己研究的论文和算法源码修复奉献给大家。
人脸检测算法MTCNN代码:https://github.com/Sierkinhane/mtcnn-pytorch
论文地址:https://kpzhang93.github.io/MTCNN_face_detection_alignment/paper/spl.pdf
迫于项目和比赛的截止日期,算法详解暂时没有时间写,过段时间会更新,如果对源代码有疑问可以留言。所以只能给大家能成功训练和测试的代码。代码是基于DFace仓库更新和修改,非常感谢作者的实现。
测试图片结果:
以下是代码目录(开发环境可选win10和linux系统,本人是用win10):
mtcnn_test.py 可以测试人脸检测效果。
准备训练数据
- 百度网盘下载 WIDER FACE (passcode:lsl3) 人脸检测数据集放到 ./data_set/face_detection
- 也可以在http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/ 下载
- python ./anno_store/tool/format/transform.py 因为数据集的训练标签是MATLAB格式的,所以先转换成txt
- 我已经将转化好的放在了anno_store/anno_train.txt
- 下载 CNN_FacePoint 人脸检测和特征点数据集放到./data_set/face_landmark, 如果搞不懂具体目录,我在下面描述的程序中已经给出,按照目录放置数据集即可。
训练
-
生成P-Net训练数据(positive、negative、part)
- run > python mtcnn/data_preprocessing/gen_Pnet_train_data.py
- run > python mtcnn/data_preprocessing/assemble_pnet_imglist.py
-
训练 P-Net
- run > python mtcnn/train_net/train_p_net.py
-
生成R-Net训练数据(positive、negative、part)
- run > python mtcnn/data_preprocessing/gen_Rnet_train_data.py (可能你需要修改代码中已经训练好的P-Net模型路径,默认的是原来的模型)
- run > python mtcnn/data_preprocessing/assemble_rnet_imglist.py
-
训练 R-Net
- run > python mtcnn/train_net/train_r_net.py
-
生成O-Net训练数据(positive、negative、part)
- run > python mtcnn/data_preprocessing/gen_Onet_train_data.py
- run > python mtcnn/data_preprocessing/gen_landmark_48.py
- run > python mtcnn/data_preprocessing/assemble_onet_imglist.py
-
训练 O-Net
- run > python mtcnn/train_net/train_o_net.py
MTCNN代码:https://github.com/Sierkinhane/mtcnn-pytorch
论文地址:https://kpzhang93.github.io/MTCNN_face_detection_alignment/paper/spl.pdf
此次我只将精力放在了看论文和源码上,虽然没有训练自己的模型,但是我已经将bug修复,已经确定每个模块都能正常运行,如果有疑问可以留言提问。