Caffe:使用 cudnn 5.1 配置 Faster-RCNN Caffe 并运行 demo

配置:
系统:Ubuntu 16.04
环境:CUDA 8.0 + cudnn 5.1 + BLAS + opencv 3.0.0


一、 Caffe 的配置

(一)安装依赖项

1. 一般依赖项

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev  protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev

2. BLAS 依赖项

sudo apt-get install libatlas-base-dev

或者安装

sudo apt-get install libopenblas-dev

3. python 依赖项

安装 python 及其头文件

sudo apt-get install python 
sudo apt-get install python-dev

安装 python 的其他依赖

sudo apt-get install python-numpy
sudo apt-get install ipython
sudo apt-get install ipython-notebook
sudo apt-get install python-sklearn
sudo apt-get install python-skimage
sudo apt-get install python-protobuf 

4. google glog 和 gflags 和 lmdb 依赖项

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

(二)CUDA 及 cudann

1. CUDA 8.0

(1)从 CUDA 官网上下载 runfile 安装:

CUDA Toolkit 8.0

(2)下载完成后,进入到下载目录

chmod +x ./cuda_9.0.176_384.81_linux.run    //给文件添加运行权限
sudo ./cuda_9.0.176_384.81_linux.run    //运行安装

(这里会出现一大篇文字,长按Enter or Ctrl + c 跳过 ,到最后打上 accept)

<mark>注意:第一个提醒你是否安装驱动时,选「n」,其余都 「y」</mark>

安装完成后要配置环境变量

gedit ~/.bashrc    //把下面的内容添加到最后:

export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

(3)测试是否安装成功

nvcc --version

若输出

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 8.0, V8.0.61

则安装成功

2. cudnn 5.1

(1)安装完 CUDA 后需要下载 cudnn:

cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0
注册个账号,就可以下载了。

(2)复制文件:

下载完解压,里面有个cuda文件,里面有两个文件include 和 lib64 ,把里面的文件copy到/usr/local/cuda/里面相应的目录里。

sudo cp ~/Downloads/cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp ~/Downloads/cuda/lib64/libcudnn* /usr/local/cuda/lib64/

sudo chmod a+x /usr/local/cuda/include/cudnn.h    //给文件加读权限
sudo chmod a+x /usr/local/cuda/lib64/libcudnn*

(三)opencv 3.0.0

参考 ubuntu14.04+opencv 3.0安装及测试

1. 下载 opencv 3.0.0 :

opencv 3.0.0
也可以上 github 上下载
1.安装依赖项

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

2.编译 opencv
解压下载的 opencv 3.0.0 ,在终端打开

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

(四)编译 Faster R-CNN

1. 下载 Faster R-CNN

#Make sure to clone with --recursive
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git    

一定要加 --recursive ,否则你的 caffe-fast-rcnn 里面会是空的

2. 替换文件

下载完后解压,进入 ./faster-rcnn/lib 里面

make

再进入 ./caffe-fast-rcnn 里面

sudo cp Makefile.config.example Makefile.config    //复制配置文件
sudo gedit Makefile.config    //修改编译文件

# 将里面这两行取消备注,大概在 4 - 5 行和 86 - 87 行
# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1
...
# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1

# 修改下面两行,大概在 89 - 91 行
# Whatever else you find you need goes here.
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

# 修改 Makefile 里面的 181 行
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

3. 替换文件

因为 faster-rcnn 支持的 cudnn 版本较低,直接编译会因为你的 cudnn 版本太高而报错
用最新的 caffe 源码里面的下列文件替换 faster-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

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

4. 编译

./faster-rcnn/caffe-fast-rcnn/

make -j8
make pycaffe

完成后可能会在 python 里面 import 不了,需要添加环境变量

gedit ~/.bashrc    //把下面的内容添加到最后:

# 注意把你编译完的 caffe 路劲替换 'your path to caffe'
export PYTHONPATH=/your path to caffe/python:$PYTHONPATH

二、运行 demo

(一)下载 models

运行 ./data/scripts/fetch_faster_rcnn_models.sh
会自动下载模型,如果下载不了需要***去下载

(二)运行 demo.py

运行 ./tools/demo.py ,效果如下:

智能之路 文章被收录于专栏

包括机器学习、神经网络、深度学习、强化学习各种方面的文章

全部评论

相关推荐

jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
牛客279957775号:铁暗恋
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务