Ubuntu16-04配置Faster-RCNN教程

1 电脑配置

CPU:英特尔 Xeon(至强) E5-1620 v2 @ 3.70GHz 四核
显卡:Nvidia Quadro K2200
操作系统:Ubuntu 16.04

2 显卡驱动安装

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-367
nvidia-smi #查看驱动是否安装成功

3 安装测试CUDA

3.1 安装CUDA

3.1.1 下载CUDA安装包

我下载的版本是cuda_8.0.61_375.26_linux,下载runfile(local)那个

3.1.2 切换到安装包所在目录,执行命令

sudo cuda_8.0.61_375.26_linux.run --override

1). 启动安装程序,一直按空格到最后,输入accept接受条款
2). 输入n不安装nvidia图像驱动,之前已经安装过了
3). 输入y安装cuda 8.0工具
4). 回车确认cuda默认安装路径:/usr/local/cuda-8.0
5). 输入y用sudo权限运行安装,输入密码
6). 输入y或者n安装或者不安装指向/usr/local/cuda的符号链接
7). 输入y安装CUDA 8.0 Samples,以便后面测试
8). 回车确认CUDA 8.0 Samples默认安装路径:/home/yuan(yuan是我的用户名),该安装路径测试完可以删除

3.2 安装cuDNN v5.1

3.2.1 下载cuDNN安装包

需要申请注册账号,我下载的版本是cudnn-8.0-linux-x64-v5.1

3.2.2 切换到文件所在目录,解压文件

tar zxvf cudnn-8.0-linux-x64-v5.1.tgz

此时在该目录下会产生一个cuda文件,执行以下命令:

cd cuda/include/
sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件
cd ../lib64 #打开lib64目录
sudo cp lib* /usr/local/cuda/lib64/ #复制库文件
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* #给所有用户增加这些文件的读权限

3.3 建立软链接

执行以下命令:

cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so

设置环境变量,终端输入

sudo gedit /etc/profile

在末尾加入

PATH=/usr/local/cuda/bin:$PATH
export PATH

保存后,创建链接文件

sudo vim /etc/ld.so.conf.d/cuda.conf

按a进入插入模式,增加下面一行

/usr/local/cuda/lib64

按esc退出插入模式,按:wq保存退出
最后在终端输入sudo ldconfig使链接生效

3.4 cuda Samples测试

打开CUDA 8.0 Samples默认安装路径,终端输入

cd /home/yuan/NVIDIA_CUDA-8.0_Samples   #(yuan是我的用户名)
sudo make all -j8
cd bin/x86_64/linux/release
./deviceQuery

不报错说明CUDA安装成功。

4 安装相关依赖包

执行以下命令:

sudo apt-get install build-essential #必要的编译工具依赖

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
 
sudo apt-get install git

sudo apt-get install python-pip

pip install ipython

pip install cython

sudo apt-get install python-numpy python-scipy python-matplotlib python-skimage

#安装protobuf!!!
pip install protobuf easydict pyyaml

sudo install cmake

安装opencv 3.1.0

执行以下命令:

wget https://github.com/Itseez/opencv/archive/3.1.0.zip
cd opencv3.1.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

将/home/yuan/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp里的

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

改为

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

make

make -j8 
sudo make install

5 安装配置caffe

git clone https://github.com/BVLC/caffe.git
cd caffe
sudo cp Makefile.config.example Makefile.config
sudo gedit Makefile.config   #打开Makefile.config文件

5.1 根据个人情况修改文件

  1. 若使用cudnn,则修改
#USE_CUDNN := 1
  1. 若使用的opencv版本是3的,则修改
#OPENCV_VERSION := 3
  1. 若要使用python来编写layer,则将
#WITH_PYTHON_LAYER := 0

修改为

#WITH_PYTHON_LAYER := 1
  1. 重要的一项 :
# Whatever else you find you need goes here.

下面的

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 

这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径。

终端输入

make all -j8 

若编译失败可以

make clean

清除第一次编译结果然后

make all -j8
make test -j8
sudo ldconfig
make runtest -j8
make pycaffe -j8
make distribute  #生成发布安装包
cd /home/yuan/caffe/python
python
import caffe

不报错则编译成功

5.2 下载mnist数据集测试

终端输入

cd home/yuan/caffe/data/mnist/
./get_mnist.sh
cd /home/yuan/caffe/
./examples/mnist/create_mnist.sh

训练

./examples/mnist/train_lenet.sh

训练的时候可以看到精度和损失值。

至此Caffe配置成功。

6 配置py_faster-rcnn

终端执行以下命令:

git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
cd py-faster-rcnn/lib
make
cd py-faster-rcnn/caffe-fast-rcnn/

更新caffe版本

git remote add caffe https://github.com/BVLC/caffe.git
git fetch caffe
git merge caffe/master #有的地方合并失败也没关系

在合并之后注释掉include/caffe/layers/python_layer.hppa文件里的

self_.attr(“phase”) = static_cast(this->phase_) 

把home/yuan/caffe目录下的Makefile.config文件copy到py-faster-rcnn/caffe-fast-rcnn/下

执行命令

make -j4

将/home/yuan/caffe/python/caffe目录下的_caffe.cpp copy(替换)到/home/yuan/py-faster-rcnn/caffe-fast-rcnn/python/caffe

执行命令

make pycaffe

将/home/yuan/py-faster-rcnn/caffe-fast-rcnn/python/caffe/init.py里的

from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver
from ._caffe import set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed

删去,包括<<<<<HEAD和caffe master非法字符串。

7 运行faster rcnn demo

在windows端用迅雷下载model,URL:

https://dl.dropboxusercontent.com/s/o6ii098bu51d139/faster_rcnn_models.tgz?dl=0
CHECKSUM=ac116844f66aefe29587214272054668

在ubuntu环境中将文件解压到py-faster-rcnn/data/下,执行命令

cd py-faster-rcnn/
./tools/demo.py --net zf   #--net:指定模型

8 运行faster rcnn demo时遇到的问题

问题1:

File "/home/yuan/py-faster-rcnn/tools/../lib/rpn/proposal_layer.py", line 64, in forward
    cfg_key = str(self.phase) # either 'TRAIN' or 'TEST'
    AttributeError: 'ProposalLayer' object has no attribute 'phase'

解决办法:找到/lib/rpn/proposal_layer.py,将第64行修改为 cfg_key = 'TEST'(训练时再改回来?)

问题2:

Loaded network /home/yuan/py-faster-rcnn/data/faster_rcnn_models/ZF_faster_rcnn_final.caffemodel
    F0518 13:29:12.159129  2920 roi_pooling_layer.cu:91] Check failed: error == cudaSuccess (8 vs. 0)  invalid device function
    *** Check failure stack trace: ***
    已放弃 (核心已转储)

解决办法:显卡计算能力不同导致。修改 py-faster-rcnn/lib/setup.py 的第135行,将arch改为与显卡相匹配的数值,然后删除utils/bbox.c,nms/cpu_nms.c ,nms/gpu_nms.cpp。
重新编译:

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

推荐阅读更多精彩内容