caffe配置过程很长啊,坑非常多,没有linux基础的估计会香菇的。我参考了网上很多的帖子,基本上每个帖子都有或多或少的问题,研究很久最终配置成功。参考过的帖子太多,都记不太清来源了。为了对前人的感谢,特地写下我的配置过程,以供大家参考。可能我写的时候会有遗漏,还望多多包涵,共同探讨!

1. 安装相关依赖项

 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 libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2.安装NVIDIA驱动

(1) 查询NVIDIA驱动

首先去官网 http://www.nvidia.com/Download/index.aspx?lang=en-us 查看适合自己显卡的驱动(这里不要下载,用下载的驱动安装可能会出现循环登陆问题)

点击右边的search进入下载页面

可以看到我的显卡支持375

(2)安装驱动

在终端下输入:

sudo apt-get purge nvidia-*  //这是卸载以前的nvidia驱动
sudo add-apt-repository pa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-
reboot //重启

完成后,电脑重启

安装完成之后输入以下指令进行验证:

sudo nvidia-smi

若列出了GPU的信息列表则表示驱动安装成功。如下图:

3.安装CUDA

(1)下载CUDA

首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA:

(2)下载完成后执行以下命令(我用的是cuda7.5):

 sudo chmod  cuda_7..44_linux.run
sudo ./cuda_7..44_linux.run

注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否:
Install NVIDIA Accelerated Graphics Driver for
Linux-x86_64 367.48?
因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。

(3)环境变量配置

打开~/.bashrc文件:

sudo gedit ~/.bashrc

将以下内容写入到~/.bashrc尾部:

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

在/etc/profile文件中添加CUDA环境变量:

sudo gedit /etc/profile

打开文档都在文档结尾加上下面两句:

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

保存后, 执行下列命令, 使环境变量立即生效:

source /etc/profile

同时添加lib库路径,在 /etc/ld.so.conf.d/新建文件 cuda.conf

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

在文中加入下面内容:

/usr/local/cuda/lib64

执行下列命令使之立刻生效:

sudo ldconfig

(4)测试CUDA的samples

 cd /usr/local/cuda-7.5/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery

如果显示一些关于GPU的信息,则说明安装成功。

nvcc –V 命令可查看版本

4.配置cuDNN(感觉我的有问题,我暂时没用这个,另外这个单独写了个教程)

cuDNN是GPU加速计算深层神经网络的库。

首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。

我直接在网上下的cuda7.5的cudnn-7.5-linux-x64-v5.0.tgz

进行解压:

sudo tar -zxvf ./cudnn-7.5-linux-x64-v5..tgz

进入cuDNN5.0解压之后的include目录,在命令行进行如下操作:

 cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include #复制头文件

再将进入lib64目录下的动态文件进行复制和链接:

 cd ..
cd lib64
sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.5.0.
sudo ln -sf libcudnn.so.5.0. libcudnn.so.
sudo ln -sf libcudnn.so. libcudnn.so
sudo ldconfig

5.安装opencv3.1

从官网(http://opencv.org/downloads.html)下载Linux版Opencv

并将其解压到你要安装的位置,假设解压到了/home/opencv

 unzip opencv-3.1..zip
sudo cp ./opencv-3.1. /home
sudo mv opencv-3.1. opencv

安装前准备,创建编译文件夹:

 cd ~/opencv
mkdir build
cd build

配置:

 sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

编译:

sudo make -j8 

-j8表示并行计算,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。

以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装:

sudo make install

测试opencv:

 mkdir ~/opencv-test
cd ~/opencv-test
gedit DisplayImage.cpp

编辑如下代码:

 #include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -;
}
Mat image;
image = imread( argv[], );
if ( !image.data )
{
printf("No image data \n");
return -;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey();
return ;
}

创建CMake编译文件:

gedit CMakeLists.txt

写入如下内容:

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

编译:

 cd ~/opencv-test
cmake .
make

执行:

此时opencv-test文件夹中已经产生了可执行文件DisplayImage,随便从网上下载一张图片放在opencv-test文件夹下,此处下载了opencv.jpg,然后运行:

./DisplayImage opencv.jpg

结果是显示我下载的这张图像。

如果想用python调用opencv,安装python-opencv:

 sudo apt-get install python-opencv
sudo apt-get install python-numpy

打开python,import即可。

Ps:如果用cuda8.0,可能会出现以下错误:

这是因为opecv3.0与cuda8.0不兼容导致的。解决办法:修改 ~/opencv/modules/cudalegacy/src/graphcuts.cpp文件内容,如图:

其中

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

是我们修改的。

6.配置caffe

(1)https://github.com/BVLC/caffe下载caffe

下载完成后,会在家目录下的下载里找到caffe-master.zip,用unzip命令解压到家目录下,然后重命名为caffe.

(2)复制Makefileconfig

sudo cp Makefile.config.example Makefile.config

(3)打开并修改配置文件:

sudo gedit Makefile.config #打开Makefile.config文件 

根据个人情况修改文件:

a.若使用cudnn,则

#USE_CUDNN := 

修改成:

USE_CUDNN := 

b.若使用的opencv版本是3的,则

#OPENCV_VERSION :=  

修改为:

OPENCV_VERSION := 

c.若要使用python来编写layer,则

#WITH_PYTHON_LAYER :=  

修改为

WITH_PYTHON_LAYER := 

d.重要的一项 :

将# 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

(4)修改makefile文件

打开makefile文件,做如下修改:(这个不知道有没有用,这一步感觉没作用)
将:

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

替换为:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

接下来是针对安装opencv3.0.0版本的同学而言的,对于3.0.0之前的版本不需要修改:

在位置((LIBRARIES+= glog gflags protobuf leveldb snappy lmdbboost_system hdf5_hl hdf5 m 
opencv_coreopencv_highgui opencv_imgproc
opencv_imgcodecs))处添加opencv_imgcodecs

这一步非常重要,否则编译后会出现错误如下:

CXX/LD-o.build_release/tools/convert_imageset.bin
.build_release/lib/libcaffe.so:undefined reference tocv::imread(cv::String const&,int)'.build_release/lib/libcaffe.so: undefined referencetocv::imencode(cv::String const&, cv::_InputArray const&,std::vector >&, std::vector > const&)'

原因就是opencv3.0.0把imread相关函数放到imgcodecs.lib中了,而非原来的imgproc.lib。

(If you input "make all",the problem is the same again.But if you delete all the file in build(rm -rf ./build/*) before "make all"(I use make clean ),you will success.I just success)

(5)编辑/usr/local/cuda/include/host_config.h(不知道有没有用,这一步我看到有帖子改了,但大多数没改这个)

将其中的第115行注释掉:

#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

改为

//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

(6)编译

make all –j8
make test –j8
make runtest –j8

7.编译pycaffe

在caffe根目录的python文件夹下,有一个requirements.txt的清单文件,上面列出了需要的依赖库,按照这个清单安装就可以了。

在安装scipy库的时候,需要fortran编译器(gfortran),如果没有这个编译器就会报错,因此,我们可以先安装一下。

首先回到caffe的根目录,然后执行安装代码:

 cd ~/caffe
sudo apt-get install gfortran
cd ./python
for req in $(cat requirements.txt); do pip install $req; done

安装完成以后,再次回到caffe根目录我们可以执行:

 cd ..
sudo pip install -r python/requirements.txt

就会看到,安装成功的,都会显示Requirement already satisfied, 没有安装成功的,会继续安装。

编译python接口:

make pycaffe  -j8

配置环境变量,以便python调用:

sudo gedit ~/.bashrc

export PYTHONPATH=/home/caffe/python:$PYTHONPATH添加到文件中

source ~/.bashrc

Ubuntu16.04 14.04安装配置Caffe(GPU版)的更多相关文章

  1. Windows10安装ubuntu & caffe GPU版

    1.Ubuntu https://www.cnblogs.com/EasonJim/p/7112413.html https://blog.csdn.net/jesse_mx/article/deta ...

  2. Ubuntu16.04安装配置Caffe教程(GPU版)

    推荐博客:https://www.linuxidc.com/Linux/2017-11/148629.htmhttps://blog.csdn.net/yggaoeecs/article/detail ...

  3. Angularjs学习---ubuntu12.04中karma安装配置

    Angularjs学习---ubuntu12.04中karma安装配置中常见的问题总结   karma启动时出现了很多问题: 1.安装karma前提条件 安装karma首先要安装nodejs,npm然 ...

  4. 在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法

    在Ubuntu 12.04系统中安装配置OpenCV 2.4.3的方法   对于,在Linux系统下做图像识别,不像在windows下面我们可以利用Matlab中的图像工具箱来实现,我们必须借助Ope ...

  5. Windows 10下安装配置Caffe并支持GPU加速(修改版)

    基本环境 建议严格按照版本来 - Windows 10 - Visual Studio 2013 - Matlab R2016b - Anaconda - CUDA 8.0.44 - cuDNN v4 ...

  6. 【Ubuntu 16.04.2_64】安装配置SVN

    [Ubuntu 16.04.2_64]安装配置SVN 转载:https://www.cnblogs.com/yangchongxing/p/10190549.html 检查是否已安装svn # svn ...

  7. caffe学习(1):多平台下安装配置caffe

    如何在 centos 7.3 上安装 caffe 深度学习工具   有好多朋友在安装 caffe 时遇到不少问题.(看文章的朋友希望关心一下我的创业项目趣智思成) 今天测试并整理一下安装过程.我是在阿 ...

  8. Ubuntu LTS 系统学习使用体会和实用工具软件汇总 6.04 8.04 10.04 12.04 14.04 16.04

    Ubuntu LTS 系统学习体会和工具软件汇总 6.04 8.04 10.04 12.04 14.04 16.04 ubuntu入门必备pdf:http://download.csdn.net/de ...

  9. CVE-2015-1328 Ubuntu 12.04, 14.04, 14.10, 15.04 overlayfs Local Root

    catalog . 引言 . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch ...

随机推荐

  1. mongoDB 文档操作_增

    增加 / 插入 /保存 单文档插入 命令 db.collection.insertOne(doc) 功能 向被 use 的数据库中插入数据 实例 db.class.insertOne({"n ...

  2. 满汉全席[2-SAT]

    题面 对不起我又写了一个板题qvq 和洛谷那道模板题没区别...两样菜至少做一样即可 不过注意define和函数的区别!!! #include <cmath> #include <c ...

  3. luoguP4705 玩游戏

    好好玩 即对于k∈[1,t] 求(ax+by)^k 以下图片均来自于: 在Ta的博客查看 一 二项式展开: 设: 那么: 可以卷积了 二 求: (PS:随机序列的0~k次方和,这是一个经典问题.) 我 ...

  4. Linux性能优化实战:到底应该怎样理解平均负载(02)

    一.平均负载与CPU使用率并没有直接关系 1.平均负载 单位时间内,系统处于可运行状态和不可终端状态的平均进程数也就是平均活跃进程数,它和cpu使用率并没有直接关系, 可运行状态: 正在使用的cpu或 ...

  5. Java小知识点总结

    目录 配置 数据库配置文件 基础知识 Switch i++和++i 快捷打代码 输入数据 代码折叠 super关键字 instanceof 防止类型强制转换带来的错误 继承 第一个Java程序 Jav ...

  6. beanPostProcessor与beanFactoryPostProcessor

    BeanFactoryPostProcessor的典型应用:PropertyPlaceholderConfigurer BeanFactoryPostProcessor会在所有的bean配置载入之后执 ...

  7. [物理学与PDEs]第5章第2节 变形的描述, 应变张量 2.2 Cauchy - Green 应变张量

    1.  引理 (极分解): 设 $|{\bf F}|\neq 0$, 则存在正交阵 ${\bf R}$ 及对称正定阵 ${\bf U},{\bf V}$ 使得 $$\bex {\bf F}={\bf ...

  8. .net 委托多线程 实时更新界面

    Thread thread = new Thread(() => { button2.Invoke(new EventHandler(delegate { button2.Enabled = t ...

  9. 递归 - Leetcode 110 判断二叉树是否为平衡二叉树

    110. Balanced Binary Tree Given a binary tree, determine if it is height-balanced. For this problem, ...

  10. C++设计模式——原型模式

    什么是原型模式? 在GOF的<设计模式:可复用面向对象软件的基础>中是这样说的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.这这个定义中,最重要的一个词是“拷贝”,也就 ...