rrc_detection+caffe 环境搭建/测试结果

本文档详细记录了在Ubuntu 16.04上使用CUDA 8.0和CUDNN 5.1配置RRC_Detection的完整过程,包括环境搭建、数据准备、训练和测试,并针对编译过程中遇到的问题提供了解决方案。此外,还展示了预训练模型的测试结果和置信度过滤的优化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rrc 是论文 Accurate Single Stage Detector Using Recurrent Rolling Convolution 中提出的。
论文地址为:rrc_detection
github 地址为:xiaohaoChen/rrc_detection

0. 环境

  • Ubuntu 16.04
  • cuda 8.0 + cudnn 5.1
  • python 2.7
  • protobuf 2.6.1
  • opencv 3.1

因为 rrc_detection 年代比较久远了,所以用的都是一些比较旧的环境。

以上这些配置都是在我踩了无数次坑以后才得出来的,都是泪。

0.1 cuda7.5+cudnn 5.0

rrc-github 里面是说需要 cuda7.5+cudnn5.0,我一开始也是那么装的,但是因为我的显卡是 Titan Xp,根据维基百科上的 CUDAcuda7.5 并不支持 Titan Xp ,导致了后面 make runtest 的时候出现了错误:

Check failed: error == cudaSuccess (8 vs. 0) invalid device function

忽略这个错误直接跑训练,或者直接使用作者的预训练模型跑测试,都会出现这个错误。

0.2 cuda8.0+cudnn6.0

于是我切换到了cuda8.0,详情可见:Ubuntu 多版本 CUDA 共存

在编译的时候就会出错。

0.3 cuda8.0+不使用cudnn

然后我尝试将Makefile.config 里面的:

USE_CUDNN := 1

注释掉,然后可以正常编译和测试,但是在跑训练的时候会出现:

Check failed: error == cudaSuccess (2 vs. 0)  out of memory

就是显存不够用了,但是我已经修改了 rrc_kitti_car.py

batch_size = 4 --> batch_size = 1
accum_batch_size = 8 --> accum_batch_size = 1

已经没办法再小了,所以我猜是因为没有 cudnn 的优化,所以占用的内存太大了。

0.4 cuda8.0 + cudnn 5.1

这个配置可以正常编译,但是在 make runtest 的时候还是会出错:

Check failed: datum.encoded() Datum not encoded

我不管这个错误,直接去跑训练,发现可以正常跑起来,虽然还不知道结果。

而且在:

batch_size = 1
accum_batch_size = 1

的情况下,12GB 的显存也几乎都占满了:

>> nvidia-smi
Thu Apr 25 12:56:33 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.87                 Driver Version: 390.87                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  TITAN Xp            Off  | 00000000:01:00.0  On |                  N/A |
| 45%   72C    P2    79W / 250W |  11065MiB / 12194MiB |      5%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0       999      G   /usr/lib/xorg/Xorg                           116MiB |
|    0      1702      C   ./build/tools/caffe                        10937MiB |
+-----------------------------------------------------------------------------+

注意:因为我是 zsh 用户,所以配置文件使用的是 ~/.zshrc,下文中遇到 ~/.zshrc 的地方,bash 用户请自行更换为 ~/.bashrc


1. 安装caffe

1.1 安装依赖包

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler 
sudo apt-get install --no-install-recommends libboost-all-dev 
sudo apt-get install libatlas-base-dev 
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

安装完以后,自动拥有了 protobuf 2.6.1了。

将代码克隆到本地:

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

我这里的目录是:

/home/memory/code/rrc_detection

后面我们称之为 $CAFFE_ROOT,遇到 $CAFFE_ROOT 的地方,请自行更换为自己的路径。将其添加到配置文件中:

sudo gedit ~/.zshrc		# zsh 用户
sudo gedit ~/.bashrc	# bash 用户

在后面添加:

export PYTHONPATH=$CAFFE_ROOT/python:$PYTHO
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值