主要参考
https://github.com/yeahkun/caffe-yolo
首先下载上述代码
git clone https://github.com/yeahkun/caffe-yolo
将其放在docker环境下,我这里的路径如下
然后cd到caffe-yolo路径下
将Makefile.config.example复制一份为Makefile.config
cp Makefile.config.example Makefile.config
然后vim打开Makefile.config文件
将其中的如下两行进行更改
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/
然后进行编译
make clean
make all
make pycaffe
然后下载VOC数据集
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
进行数据集下载
下载完成后进行解压
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
解压之后这些会自动融合为一个叫VOCdevkit的文件夹
此时的caffe-yolo/data/yolo/路径下有如下内容
get_list.py是生成图片路径的python脚本,这里只用到VOC2007数据集,需要对get_lisy.py进行修改
vim get_list.py打开
将原来的for name in ["VOC2007","VOC2012"]:
改为for name in ["VOC2007"]:
最后面关于VOC2012的部分注释掉
然后运行get_lisy.py
python get_list.py
会在caffe-yolo/data/yolo/路径下生成两个test_2007.txt和trainval.txt两个文件
trainval.txt是训练和验证集
test_2007是测试集
caffe-yolo/data/yolo/路径下convert.sh是用来生成数据lmdb文件
首先在caffe-yolo/data/yolo/路径下新建一个lmdb文件夹
mkdir lmdb
convert.sh同样需要进行修改
vim convert.sh
ROOT_DIR需要改为自己对应的路径,这里首先生成训练和验证集的数据lmdb文件
在caffe-yolo/data/yolo/路径下运行
sh convert.sh
即可在lmdb文件夹下生成关于训练集和验证集的文件
然后需要生成测试集数据的lmdb文件
需要对convert.sh进行修改
将原来生成训练集和验证集的部分注释掉,将生成测试集的部分取消注释
保存退出之后运行即可
sh convert.sh
然后会在lmdb/test2007_lmdb/路径下生成data.mdb和lock.mdb文件
下载预训练模型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路径改为自己对应的路径
然后是gnet_solver.prototxt
这里面主要是一些最大迭代次数、模型保存路径、选择GPU还是CPU模式这些选项,可以根据实际情况进行选择,也可以维持不变。
需要注意的是,里面有一项是训练好的模型存放位置,如果维持不变的话,需要在caffe-yolo/examples/yolo/路径下新建文件夹models/gnet_yolo/以存放模型
还有train.sh
SOLVER的路径填为刚刚保存的gnet_solver.prototxt路径。我这里是 ./gnet_solver.prototxt
WEIGHTS的路径是预训练模型的路径。我这里是 ./bvlc_googlenet.caffemodel
修改完成之后可以进行训练
sh train.sh
训练完成会在models文件夹下保存生成的.caffemodel模型
下面进行测试
如果需要的话,修改gnet_test.prototxt文件中batch size的大小
修改test.sh
将模型修改为对应的.caffemodel文件
GPU_ID改为对应的ID
然后运行测试
sh test.sh
即可完成测试