整体结构参考链接:https://blog.csdn.net/wwww1244/article/details/81034045
本人项目链接(运行步骤没有问题):
链接: https://pan.baidu.com/s/1lvkEQU7JxtcyYGgwhHdhFQ 提取码: 9ra2
默认系统已经搭建好了caffe(BLVC)环境
一.准备cpp数据 (目录:prepare_mtcnn_cpp_data/)
- 在caffe(BLVC) 环境新建文件: tools/convert_imageset_multi.cpp
- 进入mtcnn工程中prepare_mtcnn_cpp_data目录,运行copy.sh 复制文件到指定位置 (打开copy.sh文件,修改文件中的caffe 路径)
- 重新编译caffe: make caffe
二.准备数据 (目录: train/)
- 进入train目录,准备图片数据集(JPEGImages/ Annotations/)
所有的运行过程我已经写成.bat脚本文件
- 生成12,24,48网络训练的图片数据,运行: bash prepar_data_file.bat
- 生成12,24,48网络训练的lmdb数据,运行: bash prepar_lmdb_data.bat
三.训练阶段 (目录: train/)
- 训练12(P)网络,运行: bash train-12.bat
- 训练24(R)网络,运行: bash train-24.bat
- 训练48(O)网络,运行: bash train-48.bat
四.测试阶段 (目录: test/)
- model/ :模型文件路径(复制训练新产生的文件到其中);
mtcnn2.py调用模型文件(注意修改模型路径,已经调整threshold阀值,nms数值);
test.py调用mtcnn.py进行测试(注意修改其视频文件路径)
五.脚本文件解析 (目录: train/)
- prepar_data_file.bat 下面以12P-net 举例 (另外两个网络相似)
11.1 xml2txt_extract.py :用于生成label.txt文件
11.2 label.txt:记录xml文件中所有<bndbox>的位置,格式为: 图片路径+目标框位置(x1,y1,x2,y2) 以空格隔开
11.3 gen_12net_data2.py: 用于生成Pnet 所需要的图片:neg(IOU<0.3) part(0.4=<IOU<0.65) pos(IOu>=0.65)),和相应的txt文件,以及所有图片的txt文件(label-train.txt)
11.4 12net_train_val_split.py: 用于生成训练所需要的train val txt 文件
11.5 models-12/ 用于保存训练产生的模型和snapshot文件 - prepar_lmdb_data.bat
产生的数据分别防止在每个网络文件的img_train_lmdb和img_val_lmdb文件夹中 - train-12.bat
调用caffe接口进行训练,注意调整solver-x12.prototxt和det1-train.prototxt文件中的参数以获得更好的模型