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. dubbo接口demo开发

    接口需求 客户端输入uncleyong(当然,也可以输入其它字符串),服务端返回hello uncleyong 开发环境 jdk + idea + maven + zookeeper jdk安装 id ...

  2. Lua语法基础(一)

    1. 注释 -- 单行注释 --[[ 多行注释 --]] 2. 运行方式     (1)交互式运行         命令行下 lua进入交互模式     (2)命令行运行         lua + ...

  3. 这可能是最为详细的Docker入门吐血总结

    这可能是最为详细的Docker入门吐血总结  https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html Docker是什么? 在计算机技术日新 ...

  4. 洛谷P4155 BZOJP4444 [SCOI2015]国旗计划

    自己做出来的第一道倍增(fake) 原题链接 看到题目,贪心水题!不仅思维难度低,代码也好(难)写,三下五除二就写了出来,过了样例.但是一交,只有40pts.一道紫题能让我快速水40pts,良心出题人 ...

  5. com.android.support:appcompat-v7:27.+问题解决

    新建的项目就报下面的错误,问题指向了app/build.gradle,看起来是版本兼容的问题.     解决方案: 1.查看sdk tools的版本:26.1.1   远程依赖包是27.+,而我们的s ...

  6. 二、java基本语法

    一.标识符 java对各种变量.方法和类等要素命名时使用的字符序列成为标识符:通俗点,凡是自己可以起名字的地方都叫标识符,都遵守标识符的规则 1.标识符命名规则: 1)标识符由字符.下划线.美元符或数 ...

  7. jq常用操作

    1. 将滚动条置于底部 var srcH = $(".msg-IOC").prop("scrollHeight");$('.msg-IOC').scrollTo ...

  8. 数据库学习之MySQL进阶

    数据库进阶   一.视图                                                                            数据库视图是虚拟表或逻辑 ...

  9. Kubernetes之StatefulSet

    什么是StatefulSet StatefulSet 是Kubernetes中的一种控制器,他解决的什么问题呢?我们知道Deployment是对应用做了一个简化设置,Deployment认为一个应用的 ...

  10. kubernetes云平台管理实战: 故障自愈实战(四)

    一.创建实验文件 [root@k8s-master ~]# cat myweb-rc.yml apiVersion: v1 kind: ReplicationController metadata: ...