MTCNN的pytorch实现,测试及训练

写在前面

MTCNN 是人脸检测模型
代码 欢迎star
论文地址
本程序参考了kuaikuaikim/DFace,非常感谢。我修复了程序在训练上会出现的一些bug,并增加了模型在训练时的学习率变化表,优化了训练参数。并在WiderFace验证集上进行测试,发现我训练的模型权重性能优于他们本来提供的模型权重。

测试图

MTCNN的pytorch实现,测试及训练_第1张图片

WiderFace验证集测试结果

其中MTCNN-original为原来权重参数的测试结果
MTCNN-trained为我训练的权重参数的测试结果

Style easy medium hard
MTCNN-original 65.3% 65.1% 40.3%
MTCNN-trained 71.4% 70.4% 43.2%

MTCNN的pytorch实现,测试及训练_第2张图片
MTCNN的pytorch实现,测试及训练_第3张图片
MTCNN的pytorch实现,测试及训练_第4张图片

MTCNN网络结构

MTCNN的pytorch实现,测试及训练_第5张图片
MTCNN的pytorch实现,测试及训练_第6张图片
MTCNN的pytorch实现,测试及训练_第7张图片

环境要求

1.pytorch
2.opencv

测试

单张图

修改程序中图片路径

python detect.py

训练

下载widerface
图片文件按以下目录放置

  ./data_set/face_detection/
    WIDER_train/
      images/
    WIDER_val/
      images/

标签文件我已经制作好

./anno_store/anno_train.txt

标签文件的内容为
图片路径 左上x 左上y 右下x 右下y
如果图片有多个框则
图片路径 左上x 左上y 右下x 右下y 左上x 左上y 右下x 右下y 。。。。
当然你可以自己制作标签文件
参考程序在
./anno_store/tool/change.py

训练pnet

准备pnet数据

python mtcnn/data_preprocessing/gen_Pnet_train_data.py
python mtcnn/data_preprocessing/assemble_pnet_imglist.py

训练pnet

python mtcnn/train_net/train_p_net.py

准备rnet数据

python mtcnn/data_preprocessing/gen_Rnet_train_data.py
python mtcnn/data_preprocessing/assemble_rnet_imglist.py

训练rnet

python mtcnn/train_net/train_r_net.py

准备onet数据

python mtcnn/data_preprocessing/gen_Onet_train_data.py
python mtcnn/data_preprocessing/assemble_onet_imglist.py

训练onet

python mtcnn/train_net/train_o_net.py

测试widerFace val

python wildface_test.py

你可能感兴趣的:(人脸检测)