配置:
系统: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 安装:
(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)
注意:第一个提醒你是否安装驱动时,选「n」,其余都 「y」
安装完成后要配置环境变量
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
,效果如下: