本人最近在研究人臉識別、人臉檢測和姿態估計等視覺領域的算法,也在研究各類神經網絡例如ResNet、Feature Pyramid Net、Retina Net和DenseNet。所以將自己研究的論文和算法源碼修復奉獻給大家。
人臉檢測算法MTCNN代碼:https://github.com/Sierkinhane/mtcnn-pytorch(如果對你有幫助,可以給個star!)
論文地址: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修復,已經確定每個模塊都能正常運行,如果有疑問可以留言提問。