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