主要參考
https://github.com/yeahkun/caffe-yolo
首先下載上述代碼
git clone?https://github.com/yeahkun/caffe-yolo
將其放在docker環(huán)境下棠笑,我這里的路徑如下
然后cd到caffe-yolo路徑下
將Makefile.config.example復(fù)制一份為Makefile.config
cp Makefile.config.example Makefile.config
然后vim打開(kāi)Makefile.config文件
將其中的如下兩行進(jìn)行更改
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
改為:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/
然后進(jìn)行編譯
make clean
make all
make pycaffe
然后下載VOC數(shù)據(jù)集
cd 到caffe-yolo/data/yolo/路徑下
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
進(jìn)行數(shù)據(jù)集下載
下載完成后進(jìn)行解壓
tar xvf?VOCtrainval_06-Nov-2007.tar
tar xvf?VOCtest_06-Nov-2007.tar
tar xvf?VOCdevkit_08-Jun-2007.tar
解壓之后這些會(huì)自動(dòng)融合為一個(gè)叫VOCdevkit的文件夾
此時(shí)的caffe-yolo/data/yolo/路徑下有如下內(nèi)容
get_list.py是生成圖片路徑的python腳本税弃,這里只用到VOC2007數(shù)據(jù)集舟肉,需要對(duì)get_lisy.py進(jìn)行修改
vim get_list.py打開(kāi)
將原來(lái)的for name in ["VOC2007","VOC2012"]:
改為for name in ["VOC2007"]:
最后面關(guān)于VOC2012的部分注釋掉
然后運(yùn)行g(shù)et_lisy.py
python get_list.py
會(huì)在caffe-yolo/data/yolo/路徑下生成兩個(gè)test_2007.txt和trainval.txt兩個(gè)文件
trainval.txt是訓(xùn)練和驗(yàn)證集
test_2007是測(cè)試集
caffe-yolo/data/yolo/路徑下convert.sh是用來(lái)生成數(shù)據(jù)lmdb文件
首先在caffe-yolo/data/yolo/路徑下新建一個(gè)lmdb文件夾
mkdir lmdb
convert.sh同樣需要進(jìn)行修改
vim convert.sh
ROOT_DIR需要改為自己對(duì)應(yīng)的路徑锁摔,這里首先生成訓(xùn)練和驗(yàn)證集的數(shù)據(jù)lmdb文件
在caffe-yolo/data/yolo/路徑下運(yùn)行
sh convert.sh
即可在lmdb文件夾下生成關(guān)于訓(xùn)練集和驗(yàn)證集的文件
然后需要生成測(cè)試集數(shù)據(jù)的lmdb文件
需要對(duì)convert.sh進(jìn)行修改
將原來(lái)生成訓(xùn)練集和驗(yàn)證集的部分注釋掉,將生成測(cè)試集的部分取消注釋
保存退出之后運(yùn)行即可
sh convert.sh
然后會(huì)在lmdb/test2007_lmdb/路徑下生成data.mdb和lock.mdb文件
下載預(yù)訓(xùn)練模型googlenet
cd到caffe-yolo/examples/yolo/路徑下
wget http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel
下載完之后cd到caffe-yolo/examples/yolo/路徑下
需要修改里面的一些文件
首先是gnet_train.prototxt
將第18行和第39行中的data_param里面的source路徑改為自己對(duì)應(yīng)的路徑
然后是gnet_solver.prototxt
這里面主要是一些最大迭代次數(shù)浩峡、模型保存路徑锥债、選擇GPU還是CPU模式這些選項(xiàng),可以根據(jù)實(shí)際情況進(jìn)行選擇旗吁,也可以維持不變踩萎。
需要注意的是,里面有一項(xiàng)是訓(xùn)練好的模型存放位置很钓,如果維持不變的話香府,需要在caffe-yolo/examples/yolo/路徑下新建文件夾models/gnet_yolo/以存放模型
還有train.sh
SOLVER的路徑填為剛剛保存的gnet_solver.prototxt路徑。我這里是 ./gnet_solver.prototxt
WEIGHTS的路徑是預(yù)訓(xùn)練模型的路徑码倦。我這里是 ./bvlc_googlenet.caffemodel
修改完成之后可以進(jìn)行訓(xùn)練?
sh train.sh
訓(xùn)練完成會(huì)在models文件夾下保存生成的.caffemodel模型
下面進(jìn)行測(cè)試
如果需要的話企孩,修改gnet_test.prototxt文件中batch size的大小
修改test.sh
將模型修改為對(duì)應(yīng)的.caffemodel文件
GPU_ID改為對(duì)應(yīng)的ID
然后運(yùn)行測(cè)試
sh test.sh
即可完成測(cè)試