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 ,效果如下:

目录
相关文章
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
机器学习/深度学习
时间序列预测模型分享 MLP CNN LSTM 完整代码可直接运行
时间序列预测模型分享 MLP CNN LSTM 完整代码可直接运行
177 0
|
算法框架/工具 索引 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...
|
1月前
|
机器学习/深度学习 计算机视觉 网络架构
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
纵观近年的顶会论文和研究热点,我们不得不承认一个现实:CNN相关的研究论文正在减少,曾经的"主角"似乎正逐渐淡出研究者的视野。
78 11
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
66 7
|
18天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
21 1
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
本文旨在通过深入浅出的方式,为读者揭示卷积神经网络(CNN)的神秘面纱,并展示其在图像识别领域的实际应用。我们将从CNN的基本概念出发,逐步深入到网络结构、工作原理以及训练过程,最后通过一个实际的代码示例,带领读者体验CNN的强大功能。无论你是深度学习的初学者,还是希望进一步了解CNN的专业人士,这篇文章都将为你提供有价值的信息和启发。
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
|
25天前
|
机器学习/深度学习 人工智能 网络架构
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
38 1

热门文章

最新文章