r-cnn系列代码编译及解读(1)

本系列针对RBG在github上的fast r-cnn代码,做安装配置及解读工作
本文解决由于CAFFE版本的更新导致的fast r-cnn编译失败的问题


相关文件下载

假定机器已经安装配置好caffe环境(最新的版本使用CUDA8 + cudnn5,这个需要确定,之后的编译错误就是因为这个原因)

1)git clone –recursive https://github.com/rbgirshick/fast-rcnn.git 下载工程文件,使用参数recursive是为了同时clone caffe-fast-rcnn目录下的文件(作者基于caffe修改的版本)

2)下载模型文件fast_rcnn_models.tgz
官方是通过脚本data/scripts/fetch_fast_rcnn_models.sh自动下载,但国内地址访问不了
这里给了个百度网盘的链接
下载的文件解压缩到data/fast_rcnn_models下


编译

1)首先编译Cython模块

cd $FRCN_ROOT/lib
make

2)修改FRCN_ROOT/caffe-fast-rcnn/Makefile.config文件
解除以下内容注释:

USE_CUDNN := 1
WITH_PYTHON_LAYER := 1 #如果不解除会在train时提示“Unknown layer type: Python

修改以下内容:

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

3)按官方步骤,此时编译作者修改过的caffe就好了

cd $FRCN_ROOT/caffe-fast-rcnn
make -j8 && make pycaffe

但由于作者是在cudnn4的caffe上做的修改,对于预装cudnn5的机器,编译会出错
文章faster rcnn +cudnn V5给出了两种解决方案

本文参考第2种方法:
用最新的caffe源码替换fast rcnn的文件:

include/caffe/layers/cudnn_relu_layer.hpp
src/caffe/layers/cudnn_relu_layer.cpp
src/caffe/layers/cudnn_relu_layer.cu

include/caffe/layers/cudnn_sigmoid_layer.hpp
src/caffe/layers/cudnn_sigmoid_layer.cpp
src/caffe/layers/cudnn_sigmoid_layer.cu

include/caffe/layers/cudnn_tanh_layer.hpp
src/caffe/layers/cudnn_tanh_layer.cpp
src/caffe/layers/cudnn_tanh_layer.cu

include/caffe/layers/cudnn_conv_layer.hpp
src/caffe/layers/cudnn_conv_layer.cpp
src/caffe/layers/cudnn_conv_layer.cu

include/caffe/util/cudnn.hpp

需要说明的是,fast r-cnn 官方caffe代码里没有 FRCN_ROOT/caffe-fast-rcnn/include/caffe/layers 目录
索性从最新caffe代码里全部copy过来

然后 make -j8 && make pycaffe,成功编译


运行demo

官方给了3个caffemodel:caffenet、vgg16和vgg_cnn_m_1024

# 默认使用vgg16, gpu
python FRCN_ROOT/tools/demo.py

在这里运行demo不出现检测结果,调试代码发现网络对background的概率接近1,其他目标接近0
相同的问题在github上有人提出

经过测试发现,如果改为CPU模式,能成功检测出结果。截至目前还不知道原因

          这里写图片描述
                         图1. CPU模式检测结果


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值