Skip to content

lippman1125/faceboxes_lqy

Repository files navigation

Faceboxes Reproduce

  1. 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. 数据处理:

(1) 利用脚本wider_face_2_voc.py脚本把wider_face数据转换成VOC格式。并遮盖掉小于20x20的人脸。
脚本的位置在: script

(2) 在wider_face_2_voc.py的同一级目录中创建wider_face文件夹,放解压好下载的wider数据,如图:
data

(3) 运行wider_face_2_voc.py脚本,在wider_face文件夹中会生成VOC格式的数据,如图:
data

(4_old_method) 生成的图片会把小于20x20的人脸用图像均值覆盖掉,因为太小的人脸,训练时不容易收敛,如图:
mask

(4_new_method) 图片不再预处理,遮盖小的人脸,我们在代码中过滤小的人脸,具体参考提交的代码,如图:
mask

(4_new_method) 在文件src/caffe/util/im_transforms.cpp,UpdateBBoxByResizePolicy函数中过滤pixel小于20的人脸,如图:
mask

(5) 利用data/FACE文件中的脚本,把VOC格式转换成LMDB格式,如图:
lmdb

在caffe/data目录下创建faces_database文件夹,拷贝wider_face文件夹(前面生成的VOC格式数据),layout如图:
database

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                                                                
  1. 训练:

训练需要的参数文件和网络文件位置如图:
train

Paper中的数据预处理,如图:
paper

根据paper我们对train.prototxt的数据采样部门进行了修改,主要是aspect_ratio强制为1,因为是对人脸进行训练,所以没变要改变宽高比, 如图:
old_sampler new_sampler

运行以下命令开始训练:
./build/tools/caffe train --solver examples/faceboxes/solver_new.prototxt

  1. 测评:

测评脚本以及模型文件位置如图:
test

Paper中的后处理如图:
bbox_postprocess

我们同样根据paper跟新了faceboxes_deploy_new.prototxt,如图:
deploy_new

FDDB上的老的测评结果(discontinuous)如图:
old_result

FDDB上的新的测评结果(discontinuous)如图:
new_result

在同样100 false positives,召回率提升了3个点。

论文中的结果:
origin

效果图:
demo

  1. 参考:

参考的仓库:https://github.com/lsy17096535/faceboxes

  1. 优化:

train.prototxt支持Anchor densification strategy