整體結(jié)構(gòu)參考鏈接:https://blog.csdn.net/wwww1244/article/details/81034045
本人項目鏈接(運行步驟沒有問題):
鏈接: https://pan.baidu.com/s/1lvkEQU7JxtcyYGgwhHdhFQ 提取碼: 9ra2
默認(rèn)系統(tǒng)已經(jīng)搭建好了caffe(BLVC)環(huán)境
一.準(zhǔn)備cpp數(shù)據(jù)?。夸洠簆repare_mtcnn_cpp_data/)
- 在caffe(BLVC) 環(huán)境新建文件: tools/convert_imageset_multi.cpp
- 進(jìn)入mtcnn工程中prepare_mtcnn_cpp_data目錄,運行copy.sh 復(fù)制文件到指定位置 (打開copy.sh文件,修改文件中的caffe 路徑)
- 重新編譯caffe: make caffe
二.準(zhǔn)備數(shù)據(jù) (目錄: train/)
- 進(jìn)入train目錄,準(zhǔn)備圖片數(shù)據(jù)集(JPEGImages/ Annotations/)
所有的運行過程我已經(jīng)寫成.bat腳本文件
- 生成12,24,48網(wǎng)絡(luò)訓(xùn)練的圖片數(shù)據(jù),運行: bash prepar_data_file.bat
- 生成12,24,48網(wǎng)絡(luò)訓(xùn)練的lmdb數(shù)據(jù),運行: bash prepar_lmdb_data.bat
三.訓(xùn)練階段 (目錄: train/)
- 訓(xùn)練12(P)網(wǎng)絡(luò),運行: bash train-12.bat
- 訓(xùn)練24(R)網(wǎng)絡(luò),運行: bash train-24.bat
- 訓(xùn)練48(O)網(wǎng)絡(luò),運行: bash train-48.bat
四.測試階段 (目錄: test/)
- model/ :模型文件路徑(復(fù)制訓(xùn)練新產(chǎn)生的文件到其中);
mtcnn2.py調(diào)用模型文件(注意修改模型路徑,已經(jīng)調(diào)整threshold閥值,nms數(shù)值);
test.py調(diào)用mtcnn.py進(jìn)行測試(注意修改其視頻文件路徑)
五.腳本文件解析 (目錄: train/)
- prepar_data_file.bat 下面以12P-net 舉例 (另外兩個網(wǎng)絡(luò)相似)
11.1 xml2txt_extract.py :用于生成label.txt文件
11.2 label.txt:記錄xml文件中所有<bndbox>的位置,格式為: 圖片路徑+目標(biāo)框位置(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)),和相應(yīng)的txt文件,以及所有圖片的txt文件(label-train.txt)
11.4 12net_train_val_split.py: 用于生成訓(xùn)練所需要的train val txt 文件
11.5 models-12/ 用于保存訓(xùn)練產(chǎn)生的模型和snapshot文件 - prepar_lmdb_data.bat
產(chǎn)生的數(shù)據(jù)分別防止在每個網(wǎng)絡(luò)文件的img_train_lmdb和img_val_lmdb文件夾中 - train-12.bat
調(diào)用caffe接口進(jìn)行訓(xùn)練,注意調(diào)整solver-x12.prototxt和det1-train.prototxt文件中的參數(shù)以獲得更好的模型