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

简介: 系统:Ubuntu 16.04环境:CUDA 8.0 + cudnn 5.1 + BLAS + opencv 3.0.0

配置:
系统: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)

==注意:第一个提醒你是否安装驱动时,选「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 ,效果如下:

目录
相关文章
|
算法框架/工具 索引 Caffe
Faster RCNN 运行自己的数据,刚开始正常,后来就报错: Index exceeds matrix dimensions. Error in ori_demo (line 114) boxes_cell{i} = [boxes(:, (1+(i-1)*4):(i*4)), scores(
function script_faster_rcnn_demo() close all; clc; clear mex; clear is_valid_handle; % to clear init_key run(fullfile(filepart...
996 0
|
23天前
|
机器学习/深度学习 数据可视化 算法框架/工具
深度学习第3天:CNN卷积神经网络
深度学习第3天:CNN卷积神经网络
34 0
|
23天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络中的卷积层,如何提取图片的特征?
卷积神经网络中的卷积层,如何提取图片的特征?
30 0
|
2月前
|
机器学习/深度学习 存储 自然语言处理
卷积神经元网络CNN基础
卷积神经元网络CNN基础
37 1
|
2月前
|
机器学习/深度学习
大模型开发:解释卷积神经网络(CNN)是如何在图像识别任务中工作的。
**CNN图像识别摘要:** CNN通过卷积层提取图像局部特征,池化层减小尺寸并保持关键信息,全连接层整合特征,最后用Softmax等分类器进行识别。自动学习与空间处理能力使其在图像识别中表现出色。
24 2
|
3月前
|
机器学习/深度学习 自然语言处理 语音技术
【HetConv】基于异构内核的深度cnn卷积
【HetConv】基于异构内核的深度cnn卷积
66 0
【HetConv】基于异构内核的深度cnn卷积
|
2月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
8天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享
PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享
36 7
|
6天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
15 0
|
2天前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)

热门文章

最新文章