fddb库上使用ssd训练的人脸检测器
如果你正在使用opencv3.3及以上的版本,而且想直接看结果而不是训练的话,可以直接跳过第一节的caffe-ssd配置
1. 下载并编译ssd
git clone https://github.com/weiliu89/caffe
cd caffe
git checkout ssd
cp Makefile.config.example Makefile.config
make -j8
make py
为方便起见,后文将下载的caffe所在文件夹记为$SSD_ROOT
2. 下载本项目
切换到$SSD_ROOT/data/目录下
cd data
git clone https://github.com/imistyrain/ssd-face
3. 运行demo
下载预训练好的模型(百度网盘, 约90M, 密码:jvhw),将其置于cpp文件夹下,确保结构如图下图所示
3.1 python版本
python face_detect.py
3.2 Windows下命令行版本
RunFaceDetect.bat
3.3 C++版本
如果你正在使用opencv3.3及以上版本,其自带了caffe支持,如果是3.2及以下版本,则需要外加opencv_extra重新编译opencv,(注意勾选WITH_DNN)
双击打开ssd-face.sln将SSDFace设为启动项,编译完成后运行即可
Note:其中opencv跨平台自动化配置可参见MRHead
4. 训练自己的数据
4.1 准备训练数据,将数据转换为VOC格式
如果想直接训练fddb的话,可以直接下载已经转换好的fddb库(百度网盘, 密码:g33x,约102M),并将其置于/home/data/Face2017下,这个步骤过程可以参见将fddb标注转换为VOC格式标注
当然,你也可以换成自己的数据,推荐一个好用的标注工具:MRLabeler
4.2 生成训练所需格式数据
python create_list.py
./create_data.sh
其中create_list.py把训练图片路径及其标注按行写入到trainval.txt中,把测试图片路径及其标注按行写入到test.txt中,把测试图片路径及其大小(高度、宽度)写入到test_name_size.txt中
Note:由于fddb中含有多级目录,为了兼容SSD及YOLO的训练结构要求,此脚本将路径中的"/"转换为了"_"
create_data.sh用于生成训练所需的lmdb文件,由于要支持多标签的输入,因此其内部使用了slice data layer,避免使用hdf5生成文件过大的问题
4.3 启动训练
python face_train.py