RRC+caffe安装配置

RRC(Accurate Single Stage Detector Using Recurrent Rolling Convolution)是商汤科技关于目标检测的在CVPR 2017发布的一篇论文,直观的理解就是对SSD 嵌入 contextual information 使其可以同时检测大目标和小目标,在KITTI car数据集上的hard样本检测取得了排名第一。
这里 single stage detectors 就是一个过程就搞定了检测,相对于 R-CNN 系列的 two stage: 候选区域提取+分类 。

Code: https://github.com/xiaohaoChen/rrc_detection

RRC的安装配置是在配置好Caffe环境的基础上进行的,如果还没配置caffe环境,请看之前的博客进行Caffe配置。

环境配置
系统:Ubuntu16.04
GPU: NVIDIA GTX1070
CUDA8.0+cuDNN5.1

一、RRC配置

1. 克隆安装包

在要安装RRC代码的目录下(我这里是~/learning/),打开终端运行:

https://github.com/xiaohaoChen/rrc_detection.git
cd rrc_detection

得到~/learning/rrc_detection-master。
后面的部分以 $CAFFE_ROOT 代表 ~/learning/rrc_detection-master 路径。

2. 编译

注意:这里如果你还没有安装caffe,按照教程安装。如果你已经安装好来caffe,那么复制系统caffe下的Makefile.config到rrc_detection-master下。
在开始编译前,首先要打开~/.bashrc文件把$CAFFE_ROOT的python接口添加到自己的PYTHONPATH,即在~/.bashrc文件底部修改PYTHONPATH为:

export PYTHONPATH=/home/yanting/learning/rrc_detection-master/python:$PYTHONPATH

然后编译 $CAFFE_ROOT的 caffe:

cd $CAFFE_ROOT
make -j8
make py
make test -j8
make runtest -j8

编译时可能遇到的错误:

No rule to make target '/usr/local/include/google/protobuf/stubs/common.h', needed by '.build_release/cuda/src/caffe/solvers/adadelta_solver.o'。 停止。

Makefile:576: recipe for target '.build_release/src/caffe/common.o' failed

这可能是由于protobuf的版本或者路径导致的。经查看,我的/usr/local/include/下并没有对应的文件夹,对应的文件夹是放在了/usr/include/下。

经分析,实际上系统中存在多个protobuf版本,一个是annaconda中的,一个是/usr/bin/中的,而系统默认查找的是在annaconda中的,因此尝试过在rrc_detection-master的Makefile文件中修改caffe查找protoc的路径为/usr/bin/,又出现了protobuf版本太旧的错误,尝试升级protobuf,却显示已经是最新版本。后来把Makefile文件恢复到原来,make clean后重新编译,却发现没有错了,因此不了了之,最终没发现是什么原因。
错误解决办法参考博客:
http://blog.csdn.net/elysion122/article/details/64523339
https://www.jianshu.com/p/74e9c8697372

3. 下载预训练模型

RRC与SSD使用同样的预训练模型,通过链接:https://gist.github.com/weiliu89/2ed6e13bfd5b57cf81d6 下载VGG16预训练模型。解压后放在$CAFFE_ROOT/models/VGGNet/目录下。

4. 数据准备

(1)数据下载
通过链接:http://www.cvlibs.net/datasets/kitti/eval_object.php 在KITTI数据集官网下载数据集。

仅下载image_2和label_2,这是KITTI给出的7481张包含label的图像,可用于模型训练和测试;而image_3包含7518张图像,没有给出label,可以把代码上传到KITTI官网上使用image_3对自己的代码进行评分。这里我们只需要image_2就可以了。
下载完成后数据解压,放在$HOME/data/KITTI/training/下。

(2)提取车辆标注
我们最后只评价车辆检测结果,因此需要从label_2提取出仅含car标注的label文件。
在$CAFFE_ROOT/data/KITTI-car/里,修改extract_car_label.sh文件里对应的数据路径,然后终端运行:

cd $CAFFE_ROOT/data/KITTI-car/
./extract_car_label.sh

在$HOME/data/KITTI/training/下生成label_2car文件。

(3)标注转化成VOC格式
作者提供了matlab 代码把KITTI的txt格式标注转化成VOC格式,在$CAFFE_ROOT/data/convert_labels/里,需要修改converlabels.m里的相应路径:

line 4: root_dir = '/your/path/to/KITTI/';

运行,生成的VOC格式文件在$HOME/data/KITTI/training/labels_2car/xml/下。

(4)生成LMDB文件

  • 运行create_list.sh,在data/KITTI-car/下生成 trainval.txt, test.txt, test_name_size.txt:
cd $CAFFE_ROOT/data/KITTI-car/
./create_list.sh

注意:这里train和test的划分是根据同目录下的main文件夹进行划分的,可通过修改main的内容来修改train和test的划分。

  • 运行create_data.sh,在$HOME/data/KITTI/lmdb/下生成

KITTI-car_training_lmdb/
KITTI-car_testing_lmdb/

(在$CAFFE_ROOT/data/KITTI-car/lmdb下生成相应的软链接)
可以根据需要修改create_data.sh的参数。

 ./data/KITTI-car/create_data.sh
5. 训练和测试

(1)训练

在训练前,需要先修改rrc_kitti_car.py,因为我们只有一个1070 GPU,

line 118: gpus = "0,1,2,3" 修改为 gpus = "0"
line 123: batch_size = 4   修改为 batch_size = 1

运行:

python examples/car/rrc_kitti_car.py    #训练

60k次迭代后,训练完成,
在 - $CAFFE_ROOT/models/VGGNet/KITTI/RRC_2560x768_kitti_car/生成模型定义文件和模型快照,

在- $CAFFE_ROOT/jobs/VGGNet/KITIIT/RRC_2560x768_kitti_car/生成job文件和log文件。

2)测试

在测试前需要修改rrc_test.py,

line 10: img_dir  修改为 想要测试的kitti testing images
line 25: num_img  修改为测试的图片数

运行:

python examples/car/rrc_test.py  #测试
6. 使用作者训练好的模型进行测试

通过链接: https://pan.baidu.com/s/1c2H0NxY 下载作者训练好的模型。
解压至$CAFFE_ROOT/models/VGGNet/KITTI/,然后如第5部分一样运行rrc_test.py进行测试。

cd $CAFFE_ROOT   #注意:工作目录应该在$CAFFE_ROOT下
python models/VGGNet/KITTI/RRC_2560x768_kitti_4r4b_max_size/rrc_test.py

可能遇到的错误:

ImportError: No module named Image (或 ImageDraw

解决办法:修改rrc_test.py,

import Image   修改为   from PIL import Image
import ImageDraw   修改为   from PIL import ImageDraw

若报错 No module named PIL ,则想办法安装PIL库。

测试完成后,测试图片的’分类、坐标、得分’结果以txt格式存放在result-txt文件夹下,修改rrc_test.py也可以保存画框后的图片。
注意:rrc_test.py不提供与ground truth比较结果,也不提供map计算,不能对RRC算法进行评估。
可用来测试外部数据集。

二、RRC使用VOC0712数据库

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值