具体步骤
1.安装并配置好caffe及python接口(前提工作)
2.从Github上下载RON的源代码
使用命令:git clone https://github.com/taokong/RON.git
3.编译caffe和pycaffe
cd $RON_ROOT/
git clone https://github.com/taokong/caffe-ron.git
cd caffe-ron
打开Makefile.config修改配置
USE_CUDNN:=1,这个选项默认情况下时打开的,表示使用cudnn进行加速。
# CPU_ONLY := 1 我使用的是GPU,所以保留前面的#
没有GPU的同学需要改为
# USE_CUDNN:=1
CPU_ONLY := 1
WITH_PYTHON_LAYER:= 1,这个在默认情况下也是关闭的,Faster RCNN需要支持Python接口,因此需要打开。
将 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 /usr/lib/x86_64-linux-gnu/hdf5/serial
USE_PKG_CONFIG:=1记得打开,要不然会找不到一些库文件,PKG是linux用来管理库文件的。
保存后输入命令:make -j8 && make pycaffe
编译这一步时出现了一个错误,这个错误和我当时编译caffe-faster-rcnn是相同的。读者可以参看我的另一篇博客:在Ubuntu系统、GPU模式下运行Faster R-cnn代码。
如果出现类似的错误,是因为作者发布caffe-ron与你的cudnn版本不匹配(本人的cudnn版本为7.0.5)的原因,解决方法是把caffe-ron里与cudnn有关的cpp文件和hpp文件全部替换为原版caffe文件里与cudnn有关的cpp文件和hpp文件。
具体为:
(1)将<原版caffe的安装目录>/include/caffe/util 里的cudnn.hpp替换到<ron的安装目录>/caffe-ron/include/caffe/util里的cudnn.hpp(绿框替换红框)
(2)将<caffe的安装目录>/src/caffe/util 里的cudnn.cpp替换到<ron的安装目录>/caffe-ron/src/caffe/util里的cudnn.cpp(绿框替换红框)
(3)将<caffe的安装目录>/include/caffe/layers 里的cudnn_xx.hpp替换到<ron的安装目录>/caffe-ron/include/caffe/layers里的cudnn_xx.hpp(共8个,绿框替换红框)
(4)将<caffe的安装目录>/src/caffe/layers 里的cudnn_xx.cpp和cudnn_xx.cu替换到<ron的安装目录>/caffe-ron/src/caffe/layers里的cudnn_xx.cpp和cudnn_xx.cu(共16个,绿框替换红框)
替换完文件后重新编译,依次执行以下命令:
cd $RON_ROOT/caffe-ron
make clean
make -j8 && make pycaffe
4.生成Cython模块
cd $RON_ROOT/lib
make
5.准备数据集PASCAL VOC
cd $RON_ROOT/data
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
建议读者把一些常用的数据和模型都放到一个公共文件夹中,这样只需做符号链接即可。
cd $RON_ROOT/data
ln -s $VOCdevkit VOCdevkit2007
其中 VOCdevkit就是这个公共文件夹的地址。
比如,我将常用的数据和模型都放到/home/zhoulin/CommonlyUsedDatasetAndModel中,只需执行以下命令,即可将VOCdevkit2007链接到ron中。
cd $RON_ROOT/data
ln -s /home/zhoulin/CommonlyUsedDatasetAndModel/VOCdevkit VOCdevkit2007
链接完成后会在RON/data中生成一个带箭头的文件夹。
6.下载预训练模型
下载VGG预训练模型,链接为https://pan.baidu.com/s/1c2xm2U8#list/path=%2F,下载完后放在$RON/data/ImageNet_models下。
同样,该步骤可以使用符号链接。
7.训练
./train_voc.sh
# 训练RON320_VOC0712_VOC07.caffemodel
./train_voc_reduced.sh
# 训练RON-REDUCED320_VOC0712_VOC07.caffemodel
8.测试
如果不想训练的话,可以下载作者已经训练好的模型,链接为https://pan.baidu.com/s/1o8QEwu2#list/path=%2F,下载完后放在$RON/data/RON_models下,就可以直接开始测试了。
./test_voc07.sh
# 测试RON320_VOC0712_VOC07.caffemodel,最终结果应为74.2% mAP
./test_voc07_reduced.sh
# 测试RON-REDUCED320_VOC0712_VOC07.caffemodel,最终结果应为74.1% mAP