ubuntu16.04 安装配置matlab+python +cuda8.0+cudnn+opencv3.1的caffe环境
网络上有很多ubuntu上caffe配置环境的帖子,本人照着其中的许多进行了参考,都出现了或多或少的错误,很多地方也有差异。
于是自己整理了下自己的安装过程,成功进行了测试,跑通了faster-rcnn。配置环境时间为2017.1.4 系统ubuntu16.04
一:显卡驱动的安装:
由于要使用GPU,所以先要查看自己显卡所匹配的显卡驱动,网址:http://www.nvidia.com/Download/index.aspx?lang=en-us
选择电脑匹配的显卡驱动,本人电脑显卡为GTX760,选择如下图所示


输入以下命令执行安装驱动:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia- //此处为上图的驱动版本
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
安装完成后,重启电脑后输入
nvidia-smi
出现你的电脑gpu列表,如下所示,表示驱动安装成功。

二:安装配置CUDA8.0
cuda官方下载地址:https://developer.nvidia.com/cuda-downloads,选择如下:

下载完成后,解压到当前目录,切换到该目录输入:
sh cuda_8..44_linux.run --override
安装过程中,出现很多选择的选项,先一直按S滑到百分百,然后根据提示输入,分别如下:
输入accept接受条款
输入n不安装nvidia图像驱动,之前已经安装过了//此处一定要选择n
输入y安装cuda .0工具
回车确认cuda默认安装路径:/usr/local/cuda-8.0
输入y用sudo权限运行安装,输入密码
输入y或者n安装或者不安装指向/usr/local/cuda的符号链接
输入y安装CUDA 8.0 Samples,以便后面测试
回车确认CUDA 8.0 Samples默认安装路径:
最重要的是确定此处不要再选择安装驱动。
添加环境路径:
sudo vim ~/.bashrc //末尾添加
export CUDA_HOME=/usr/local/cuda-8.0
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-8.0/bin:$PATH
添加完成后source ~/.bashrc 使之生效。
测试cuda的例子,并得到如下输出:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
make -j4
sudo ./deviceQuery

表明cuda安装成功。
三:Cudnnv5的安装
从官网下载最新的cudnn,网址:https://developer.nvidia.com/rdp/cudnn-download,如下图选择适当的cudnn版本

本人下载放在Download目录下,进入该目录并解压,建立软连接,如下所示:
cd ./Download/
tar -xvzf cudnn-8.0-linux-x64-v5..tgz
sudo cp ./cuda/include/cudnn.h /usr/local/cuda/include
sudo cp ./cuda/lib64/lib* /usr/local/cuda/lib64 cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.
sudo ln -s libcudnn.so.5.1. libcudnn.so.
sudo ln -s libcudnn.so. libcudnn.so
sudo ldconfig
四:matlab的安装与配置
本人使用的matlab版本位:R2014b_glnxa64_withcrack.iso
、挂载iso(需新建matlab_iso文件夹):
mkdir matlab_iso //主目录
sudo mount -o loop R2014b_glnxa64_withcrack.iso ~/matlab_iso
、开始安装:
cd ~/matlab_iso
sudo ./install
、选择不联网安装
、密钥输入,---
、激活:选择”license.lic”文件进行激活(在crack文件夹下面)
、将libmwservices.so复制到/usr/local/MATLAB/R2014b/bin/glnxa64中:
sudo cp libmwservices.so /usr/local/MATLAB/R2014b/bin/glnxa64/libmwservices.so
启动matlab后出现问题,可以参考这个帖子http://blog.csdn.net/csd_ct/article/details/51837894。只需要将/sys/os/glnxa64/下的libstdc++.so.6 重命名位libstdc++.so.6.old.
五:Opencv3.1的安装
opencv3.1的下载,网址链接:http://opencv.org/downloads.html
安装必要项:
sudo apt-get update
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install -y python-pip
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.-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--dev
解压opencv并进入该目录:
cd opencv-3.1.
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
期间可能会卡在ippcv的下载中,Ctrl + c中断后,可以到 ippicv_linux_20151201.tgz 下载。将下载的文件替换掉 OpenCV-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件。
make -j4
sudo make install
make过程中,出现了graphcuts.cpp 的错误,进行如下修改:
sudo vim ../modules/cudalegacy/src/graphcuts.cpp
将45行的#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)修改为#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
编译完成后注意需要运行sudo make install执行安装
六:Caffe编译
cd ~
git clone https://github.com/BVLC/caffe.git //从github上git caffe
如果没有安装git,可以先使用sudo apt-get install git执行安装。
cd caffe
sudo cp Makefile.config.example Makefile.config
sudo vim Makefile.config
此时会修改caffe的编译配置,需要修改如下地方:
# USE_CUDNN := 修改成: USE_CUDNN :=
# OPENCV_VERSION := 修改为: OPENCV_VERSION :=
# WITH_PYTHON_LAYER := 修改为 WITH_PYTHON_LAYER:=
#USE_OPENCV := 修改成 USE_OPENCV :=
#USE_LEVELDB := 修改为 USE_LEVELDB:=
#USE_LMDB := 修改位 USE_LMDB :=
//修改matlab目录
将MATLAB_DIR := /usr/local/MATLAB/R2014b
//最终要的修改 # 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 //这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径
修改Makefile文件:
sudo vim Makefile
将
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
编辑/usr/local/cuda/include/host_config.h 将119行的
#error -- unsupported GNU version! gcc versions later than 5 are not supported! 修改为 //#error -- unsupported GNU version! gcc versions later than 5 are not supported!,即添加了注释,使之无效
进行编译:
sudo make all -j8
sudo make runtest -j8
若编译出现libcudart.so.8.0错误,则执行如下命令
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0
sudo ldconfig
此时正确情况如下图所示:

编译matcaffe:
执行 make matcaffe -j4
显示MEX completed successfully,表示编译matcaffe成功,
执行make mattest -j4 即运行matcaffe的测试程序,结果如下图:

编译pycaffe
sudo make pycaffe -j4
sudo make distribute -j4
cd python
for req in $(cat requirements.txt); do sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done
cd ../
运行make pytest -j4进行测试,出现如下图:

表明pycaffe编译成功 在~/.bashrc 末尾添加export PYTHONPATH=/home/zf/caffe/python:$PYTHONPATH //自己对照自己路径。
打开python导入caffe 可以成功,如下:

七:mnist集测试:
cd ~/caffe
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh
结果如下图,正确率为99.08%
八:faster-rcnn配置与测试:
mkdir ~/caffetest
cd caffetest
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git //下载rcnn源码
cd py-faster-rcnn
cd lib
make
cd ../caffe-fast-rcnn
//用之前编译的caffe替换rcnn的Makefile.config
sudo cp ~/caffe/Makefile.config ./caffe-fastr-rcnn/
sudo make -j4 && make pycaffe
cd ../
sudo ./data/script/fetch_faster_rcnn_models.sh
此过程中若出现cudnn错误,可以做如下方式进行解决:
//在caffe-fast-rcnn目录下
git remote add caffe https://github.com/BVLC/caffe.git
git fetch caffe
//可能需要github账号 按照提示输入git config --global user.email ~~~ 和 git config --global user.name ~~~
git stash save
git merge caffe/master
将caffe-fast-rcnn/include/caffe/layers/python_layer.hpp的29行self_.attr("phase") = static_cast<int>(this->phase_);注释掉
重新编译成功后,执行demo,两种demo为不同的模型框架,
cd ~/caffetest/py-faster-rcnn
./tool/demo.py
./tool/demo.py --net zf
若出现Check failed:error == cudaSuccess(8 vs 0) invalid device function,则将py-faster-rcnn/lib/setup.py 的第135行,将arch改为与你显卡相匹配的数值,(比如我的GTX 760,计算能力是3.0,就将sm_35改成了sm_30)然后删除utils/bbox.c,nms/cpu_nms.c ,nms/gpu_nms.cpp 重新编译即可
最终结果部分图片如下:


九:总结与体会
之前花费了时间断断续续的进行caffe的安装与配置,但是总会出现大大小小的问题,但是最后才发现是第一步驱动的问题,很多博客说到的编译器问题,在我这次安装过程中都没有出现。
据说是现在cuda8.0后对此进行了修复。最终能够完全成功,也是非常令人高兴的,也说明了,做一个事情,还是得老老实实专心的做下去。写这篇博客,一是为了纪念一下这一路安装的心酸,也
是想方便以后的人,希望对他们能有帮助,少走一点弯路。加油~
安装过程中用到的安装软件,笔者会稍后上传到网盘,需要的可以联系笔者。笔者QQ:476833883。
ubuntu16.04 安装配置matlab+python +cuda8.0+cudnn+opencv3.1的caffe环境的更多相关文章
- Ubuntu16.04安装Nvidia显卡驱动+Cuda8.0+Cudnn6.0
一.安装Nvidia显卡驱动(gtx1050ti) 参考链接:Ubuntu16.04.2 LTS 64bit系统装机记录中的显卡驱动安装部分. 二.安装Cuda8.0 1.确定自己的系统信息,以Ubu ...
- Ubuntu16.04安装opencv for python/c++
Ubuntu16.04安装opencv for python/c++ 网上关于opencv的安装已经有了不少资料,但是没有一篇资料能让我一次性安装成功,因此花费了大量时间去解决各种意外,希望这篇能给一 ...
- Ubuntu16.04安装配置和使用ctags
Ubuntu16.04安装配置和使用ctags by ChrisZZ ctags可以用于在vim中的函数定义跳转.在ubuntu16.04下默认提供的ctags是很老很旧的ctags,快要发霉的版本( ...
- Ubuntu16.04安装配置Caffe教程(GPU版)
推荐博客:https://www.linuxidc.com/Linux/2017-11/148629.htmhttps://blog.csdn.net/yggaoeecs/article/detail ...
- 【Win7 x64】+【annaconda3】+ 【python3.5.2】+【tensorflow-gpu】 [最终配置 gtx 940mx + Cuda8.0+cudnn v5.1 + tensorflow-gpu1.0.0 ]
1.安装cuda Toolkit 和cudnn (百度云可下载,版本需要对应) 2.配置环境变量: 3.安装cudnn(需要拷贝一些dll和lib来进行配置) 4.进入cmd,找到anaconda3的 ...
- Ubuntu16.04 安装配置Caffe
Caffe已经是第三次安装配置了,为什么是第三次呢?因为我实在是低估了深度学习对于硬件的要求.第一次我在自己笔记本上配置的单核,CPU only ... 结果是,样例数据跑了4小时,这还怎么玩?第二 ...
- Ubuntu16.04安装配置sublime text3
1.安装Sublime Text 3 首先添加sublime text 3的仓库: sudo add-apt-repository ppa:webupd8team/sublime-text-3 根据提 ...
- Ubuntu16.04安装配置Eclipse 以及opencv的使用
安装配置http://www.oracle.com下载与自己电脑系统对应的JDK.我下载的是jdk-8u101-linux64.tar.gz 解压:sudo tar -zxvf jdk-8u101-l ...
- ubuntu16.04安装配置nagios
参考博文:https://www.howtoing.com/ubuntu-nagios/ 该博文真实有效可供参考,按照步骤,基本可以成功 一.安装的先决条件 sudo apt-get install ...
随机推荐
- [Intermediate Algorithm] - Spinal Tap Case
题目 将字符串转换为 spinal case.Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词. 提示 ...
- 给 iOS 开发者的 RxSwift(一)
RxSwift 或许我们都听说过,但或许只知道 RxSwift 这个单词,长篇大论关于 RxSwift 的介绍往往使读者迷失在各种概念当中,却不知如何让它大展伸手.或许我们可以换一种姿势,一些应用场景 ...
- MongoDB 学习笔记(二):shell中执行增删查改
一.查 1.查询集合中所有文档:db.集合名.find(). 2.查询集合中第一个文档:db.集合名.findOne(). 3.指定查询条件:第一个参数就是指定查询条件 查询全部文档:db.集合名.f ...
- leetCode笔记--(1)
陪朋友刷题,记录下. 1.Evaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operato ...
- Linux Shell脚本编程-基础1
概述: shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...
- Java 内部类机制
内部类(inner class)是定义在另一个类中的类.为什么需要使用内部类呢?其主要原因有以下三点: 1.内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据. 2.内部类可以对同一个包中 ...
- JavaScript原生值与JSON的转换
---------------------------------- ---------------------------- stringify方法的另外两种参数: ---------------- ...
- zookeeper核心概念
可以借鉴:https://blog.csdn.net/junchenbb0430/article/details/77583955 zookeeper的组成部分: 1. Leader:起主导集群的作用 ...
- 最短路&查分约束
[HDU] 1548 A strange lift 根蒂根基最短路(或bfs)★ 2544 最短路 根蒂根基最短路★ 3790 最短路径题目 根蒂根基最短路★ 2066 一小我的观光 根蒂根基最短路( ...
- nyoj 120 建边构强连通
#include<stdio.h> #include<string.h> #include<queue> using namespace std; #define ...