Ubuntu18.04跑faster-rcnn安装配置

我的配置: Ubuntu 18.04+nvidia 410.78+cuda 10.0+cudnn 7.4.2

  1. 下载 py-faster-rcnn
    git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
  2. 由于用到了caffe框架,所以需要先将caffe依赖的包装上
sudo apt-get install python-pip
sudo pip install cython  
sudo pip install easydict 
sudo apt-get install python-opencv

还需要装:

  • boost
    sudo apt-get install libboost-all-dev
  • proto
    sudo apt-get install libprotobuf-dev protobuf-c-compiler protobuf-compiler
  • glog
    sudo apt-get install libgoogle-glog-dev
  • gflags
    sudo apt-get install libgflags-dev
  • lmdb
    sudo apt-get install liblmdb-dev
  • leveldb
    sudo apt-get install libleveldb-dev
  • snappy
    sudo apt-get install libsnappy-dev
  • opencv
    sudo apt-get install libopencv-dev
  • BLAS
    sudo apt-get install libatlas-base-dev
  • hdf5.h头文件
    sudo apt-get install libhdf5-\*
  1. 编译caffe-faster-rcnn
  • 编译Cython模块
    cd py-faster-rcnn/lib
    make
  • 编译caffe和pycaffe
    先进入caffe-fast-rcnn目录下
    cd py-faster-rcnn/caffe-fast-rcnn
    复制Makefile.config.example为Makefile.config
    cp Makefile.config.example Makefile.config
    编辑Makefile.config,对应地方改为如下形式:
USE_CUDNN := 1
WITH_PYTHON_LAYER := 1
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

这时进行编译还是会出现错误,faster-rcnn默认的caffe支持的cudnn版本是v4,因此编译caffe会出现版本不兼容而导致的函数参数不对应的错误。这时参考博文https://blog.csdn.net/flygeda/article/details/78638824,下载caffe最新源码https://github.com/BVLC/caffe

用最新caffe源码的以下文件替换掉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/util/cudnn.hpp

将caffe-fast-rcnn中的src/caffe/layers/cudnn_conv_layer.cu 文件中所有的
cudnnConvolutionBackwardData_v3 函数名替换为 cudnnConvolutionBackwardData
cudnnConvolutionBackwardFilter_v3函数名替换为 cudnnConvolutionBackwardFilter

然后进行编译:

cd py-faster-rcnn/caffe-fast-rcnn
make -j8 && make pycaffe

这时编译又遇到一个错误nvcc fatal : Unsupported gpu architecture 'compute_20',这时需要将Makefile.config中CUDA_ARCH配置去掉
-gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
然后编译完成。

  1. 获取faster-rcnn模型
    cd py-faster-rcnn
    ./data/scripts/fetch_faster_rcnn_models.sh
    服务器没法翻墙,所以我先在本地下载后传到服务器的py-faster-rcnn/data目录下,下载URL位于fetch_faster_rcnn_models.sh中。
    然后进行解压:tar -xvf faster_rcnn_models.tgz

  2. 运行demo
    cd py-faster-rcnn
    sudo ./tools/demo.py

  • 报错:ImportError: No module named skimage.io
    解决:sudo apt-get install python-skimage
  • 报错:ImportError: No module named google.protobuf.internal
    解决:pip install protobuf
  • 报错:
Cannot create Cublas handle. Cublas won't be available
...中间省略几十行
Check failed: status == CUDNN_STATUS_SUCCESS (1 VS. 0) CUDNN_STATUS_NOT_INITIALIZED

电脑之前安装了cuda10.1,这个版本是不适合我的显卡驱动410.78的,一直没删,在此将其卸载,只保留cuda10.0。到/usr/local/cuda-10.1/bin目录下执行./cuda_uninstaller

  • 报错:
...
in <module>
    from nms.gpu_nms import gpu_nms
ImportError: libcudart.so.10.1: cannot open shared object file: No such file or directory

这是由于我之前用cuda10.1编译过,而换成cuda10.0进行编译后部分文件并没有进行重新编译,依然依赖cuda10.1。所以需要将/py-faster-rcnn/lib/下文件夹中所有的*.so文件删除,之后再重新进行make
至此demo运行成功:)

  1. 下载在ImageNet上pre-trained的模型参数(用于初始化网络参数)
    cd py-faster-rcnn
    ./data/scripts/fetch_imagenet_models.sh
    下载不下来的话方法同4.

  2. 创建PASCAL VOC数据集的符号链接,以便可以在多个项目使用该数据集,$VOCdevkit为你下载的数据集的目录
    cd py-faster-rcnn/data
    ln -s $VOCdevkit VOCdevkit2007

  3. 用VOC数据集进行训练
    cd py-faster-rcnn
    ./experiments/scripts/faster_rcnn_alt_opt.sh [GPU_ID] [NET] [--set...]
    ./experiments/scripts/faster_rcnn_alt_opt.sh 1 ZF pascal_voc
    此时报错:

File "/home/zd/py-faster-rcnn/tools/../lib/fast_rcnn/train.py", line 51, in __init__
     pb2.text_format.Merge(f.read(), self.solver_param)
AttributeError: 'module' object has no attribute 'text_format'

解决办法是在py-faster-rcnn/lib/fast_rcnn/train.py中加上一句代码:
import google.protobuf.text_format
然后开始training...
但是跑了一会儿又报了个错:

  File "/home/zd/py-faster-rcnn/tools/../lib/roi_data_layer/minibatch.py", line 110, in _sample_rois
fg_inds, size=fg_rois_per_this_image, replace=False
  File "mtrand.pyx", line 1176, in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:18822)
TypeError: 'numpy.float64' object cannot be interpreted as an index

于是重装numpy1.11.0版本sudo pip install -U numpy==1.11.0
但是会出现新的错误ImportError: numpy.core.multiarray failed to import
于是参考https://github.com/rbgirshick/py-faster-rcnn/issues/626 修改py-faster-rcnn/lib/roi_data_layer/minibatch.py文件中的line55 line98 line110 line124 line175,并且将numpy版本升级到1.13.1sudo pip install -U numpy==1.13.1

参考文章:
[1] Kali新手喝咖啡(Caffe)的艰辛之路
[2] Caffe-GPU编译问题:nvcc fatal:Unsupported gpu architecture 'compute_20'
[3] Ubuntu16.04 faster-rcnn+caffe+gpu运行环境配置以及解决各种bug
[4] caffe学习(四):py-faster-rcnn配置,运行测试程序(Ubuntu)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容