faceboxes_lqy
faceboxes_lqy copied to clipboard
reproduce faceboxes
Faceboxes Reproduce
- CAFFE安装:
Makefile.config已经修改了好了,使用GPU的方式
所以直接使用下面的命令编译:
make -j8
# Make sure to include $CAFFE_ROOT/python to your PYTHONPATH.
make pycaffe
make test -j8
# (Optional)
make runtest -j8
- 数据处理:
(1) 利用脚本wider_face_2_voc.py脚本把wider_face数据转换成VOC格式。并遮盖掉小于20x20的人脸。
脚本的位置在:
(2) 在wider_face_2_voc.py的同一级目录中创建wider_face文件夹,放解压好下载的wider数据,如图:
(3) 运行wider_face_2_voc.py脚本,在wider_face文件夹中会生成VOC格式的数据,如图:
(4_old_method) 生成的图片会把小于20x20的人脸用图像均值覆盖掉,因为太小的人脸,训练时不容易收敛,如图:
(4_new_method) 图片不再预处理,遮盖小的人脸,我们在代码中过滤小的人脸,具体参考提交的代码,如图:
(4_new_method) 在文件src/caffe/util/im_transforms.cpp,UpdateBBoxByResizePolicy函数中过滤pixel小于20的人脸,如图:
(5) 利用data/FACE文件中的脚本,把VOC格式转换成LMDB格式,如图:
在caffe/data目录下创建faces_database文件夹,拷贝wider_face文件夹(前面生成的VOC格式数据),layout如图:
cd caffe
\# Create the trainval.txt, test.txt, and test_name_size.txt in data/FACE/
./data/FACE/create_list.sh
\# You can modify the parameters in create_data.sh if needed.
\# It will create lmdb files for trainval and test with encoded original image:
\# data/faces_database/FACE/lmdb/FACE_trainval_lmdb
\# data/faces_database/FACE/lmdb/FACE_test_lmdb
\# and make soft links at examples/FACE/
./data/FACE/create_data.sh
- 训练:
训练需要的参数文件和网络文件位置如图:
Paper中的数据预处理,如图:
根据paper我们对train.prototxt的数据采样部门进行了修改,主要是aspect_ratio强制为1,因为是对人脸进行训练,所以没变要改变宽高比, 如图:
![]()
运行以下命令开始训练:
./build/tools/caffe train --solver examples/faceboxes/solver_new.prototxt
- 测评:
测评脚本以及模型文件位置如图:
Paper中的后处理如图:
我们同样根据paper跟新了faceboxes_deploy_new.prototxt,如图:
FDDB上的老的测评结果(discontinuous)如图:
FDDB上的新的测评结果(discontinuous)如图:
在同样100 false positives,召回率提升了3个点。
论文中的结果:
效果图:
- 参考:
参考的仓库:https://github.com/lsy17096535/faceboxes
- 优化:
train.prototxt支持Anchor densification strategy