我第一次装ubuntu16.04的时候由于是小白,分区的时候分的不合理,所以空间不够用了,索性重装了一次,装ubuntu16.04双系统这里不再赘述,可参考文章 https://blog.csdn.net/demonliuhui/article/details/77483523 注意不要挂载/boot,而是换成efi系统分区。
第一步:安装依赖包
这一步是为了接下来的操作而安装必要的工具
在终端中输入
sudo apt-get install git vim cmake build-essential linux-headers$(uname -r)
安装git vim cmake 最新内核以及当前内核的headers文件
如果有安装包下载失败,可以输入
sudo apt-get upgrade
然后再重新安装软件包
第二步:安装显卡驱动
1、卸载原有的NVIDIA 驱动(如果没装过NVIDIA驱动,则忽略这一步)
sudo apt remove --purge nvidia*
2、禁用ubuntu自带的nouveau显卡驱动,只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动
禁用nouveau驱动
终端中运行: lsmod | grep nouveau
如果有输出,则代表nouveau正在运行, 需要我们手动禁掉nouveau。
在Ubuntu16.04中,我们可以通过以下操作禁用nouveau:
a.在/etc/modprobe.d中创建文件blacklist-nouveau.conf
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
在文件中输入以下内容:
blacklist nouveau
options nouveau modeset=0
b.执行
$ sudo update-initramfs -u
c.查看nouveau是否已经成功禁用
$ lsmod | grep nouveau
若无内容输出,则禁用成功,若仍有内容输出,请重启系统,再检查。
3、安装最新NVIDIA驱动
从官网下载最新的显卡驱动,需要注意的是,Cuda9.1至少需要390版本以上的驱动,此处下载runfile类型并放到/home文件夹下,便于安装
sudo service lightdm stop
关闭图形界面,并ctrl+alt+F1进入命令行模式,登陆后输入
sudo chmod a+x NVIDIA-linux-x86_64-390.48.run
给run文件赋予执行权限,注意这里要对应自己的驱动版本号,然后输入
sudo ./NVIDIA-linux-x86_64-390.48.run -no-x-check -no-nouveau-check -no-opengl-files
sudo reboot
-no-x-check 安装驱动时关闭X服务 -no-nouveau-check 安装驱动时禁用nouveau -no-opengl-files 不安装OpenGl文件(这句一定要加上,不然会出现循环登陆的问题)
安装过程中有几个警告,无视掉,一路安装就行。重启后再命令行输入nvidia-smi就能看见安装驱动的详细信息
第三步:安装 CUDA 9.1
下载cuda9.1的runfile文件,关闭图形界面并进入命令行界面
sudo sh cuda_9.1.85_387.26_linux.run
单击回车,直到提示“是否为NVIDIA安装驱动?”
选择否,因为已经安装好驱动程序,其他都是默认。
最后你会看到cuda驱动、sample、tookit已经安装成功,但是缺少一些库。
添加这些库
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
重新启动图形化界面
$ sudo service lightdm start
同时按住Alt + ctrl +F7,返回到图形化登录界面,输入密码登录。
如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了
重启电脑,检查Device Node Verification
-
$ sudo reboot
-
$ ls /dev/nvidia*
a、若结果显示
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
或显示出类似的信息,应该有三个(包含一个类似/dev/nvidia-nvm的),则安装成功。
b、大多数结果可能会是这样
ls: cannot access/dev/nvidia*: No such file or directory
或是这样的,只出现
/dev/nvidia0 /dev/nvidiactl
a中的一个或两个,但没有/dev/nvidia-num,即文件显示不全。
解决方法:
添加一个启动脚本rc.local ,附上rc.local的百度云链接:
https://pan.baidu.com/s/1HU9QL6Qut3NubJw4RClmIQ,密码:r7j4
下载后放在/home目录下,然后输入
sudo cp rc.local /etc/
保存文件并重启,再次查看,这时你应该能直接看到/dev目录下的三个nvidia的文件
输入:
$ ls /dev/nvidia*
结果显示:
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
成功!
接着,设置环境变量。
终端中输入
sudo gedit ~/.bashrc
在打开的文件末尾,添加以下两行。
64位系统:
-
export PATH=/usr/local/cuda-9.1/bin:$PATH
-
export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64:$LD_LIBRARY_PATH
32位系统:
-
export PATH=/usr/local/cuda-9.1/bin:$PATH
-
export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib:$LD_LIBRARY_PATH
使该配置生效:
source ~/.bashrc
验证CUDA Toolkit
nvcc -V
第四步:安装cuDNN v7
cuDNN的安装是建立在我们成功安装cuda的基础上的,cuDNN同样需要我们去NVIDIA的官网下载适合cuda版本的deb文件或tgz文件。
这里我以tgz文件的安装为例(cudnn-9.1-linux-x64-v7.tgz),
首先解压tgz文件
$ tar -xzvf cudnn-9.1-linux-x64-v7.tgz
接着复制文件到cuda安装路径下,
-
$ sudo cp cuda/include/cudnn.h /usr/local/cuda-9.1/include
-
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.1/lib64
-
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
第五步:安装 Anaconda3
清华镜像站下载最新的Anaconda3.5.1,下载成功后执行
bash ~/Downloads/Anaconda3-5.1.0-Linux-x86_64.sh
安装过程中会问你是否添加anaconda3的环境变量,直接输yes,这样就不用额外手动配环境变量了
第六步:安装 OpenCV 3.4.0
命令行进入已解压的文件夹 opencv-3.4.1 目录下,执行:
-
mkdir build # 创建编译的文件目录
-
cd build
-
cmake -D WITH_IPP=OFF -D PYTHON_DEFAULT_EXECUTABLE=~/anaconda3/bin/python3 -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D PYTHON3_EXCUTABLE=~/anaconda3/bin/python3 -D PYTHON3_INCLUDE_DIR=~/anaconda3/include/python3.6m -D PYTHON3_LIBRARY=~/anaconda3/lib/libpython3.6m.so.1.0 -D PYTHON_NUMPY_PATH=~/anaconda3/lib/python3.6/site-packages ..
然后执行
-
make -j4 #开始编译
-
sudo make install #安装
-
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
-
sudo ldconfig
编译时间较长,请耐心等待,我的电脑大概花费了50分钟。安装完成后输入以下指令验证OpenCv版本:
pkg-config --modversion opencv
第七步:安装 Caffe
首先要安装一堆依赖项,不然编译的时候会报错
-
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 libatlas-base-dev sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-de
然后下载caffe
git clone https://github.com/BVLC/caffe.git
然后
-
cd caffe //进入到刚刚git下来的caffe
-
sudo cp Makefile.config.example Makefile.config //将Makefile.config.example的内容复制到Makefile.config
sudo cp ~/anconda3/bin/libpython3.6m* /usr/lib/x86_64-linux-gnu #配置Makefile.config文件,在这之前先复制几个文件
sudo vim Makefile.config //打开Makefile.config文件 修改以下内容:
-
#取消以下注释
-
USE_CUDNN := 1
-
OPENCV_VERSION := 3
-
WITH_PYTHON_LAYER := 1
-
#将Python有关目录修改为
-
PYTHON_LIBRARIES := boost_python-py35 python3.6m #这里需要建立boost_python3链接,详细介绍可看https://blog.csdn.net/lien0906/article/details/51784191
-
ANACONDA_HOME := /path/to/anaconda3 #改成自己anaconda的路径
-
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
-
$(ANACONDA_HOME)/include/python3.6m \
-
$(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include
-
PYTHON_LIB := $(ANACONDA_HOME)/lib
-
LINKFLAGS := -Wl,-rpath,$(ANACONDA_HOME)/lib
-
#最后修改INCLUDE_DIRS,LIBRARY_DIRS
-
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文件
vim Makefile
用/检索NVCCFLAGS,找到后将
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
然后再在大概181行的地方做修改
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
替换为
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui
最后
-
make all -j4
-
make test -j4
-
make runtest
-
make pycaffe -j4
在我经历了多次失败后终于成功用上了caffe和opencv,本文已经排了很多的坑,但即便如此,编译过程中出现错误也很正常,把错误拿到百度上搜基本都能解决,祝大家编译一次成功!
最后的最后,还有两个问题补充一下
1、在make runtest后,出现两个失败
-
**[ FAILED ] 2 tests, listed below:
-
[ FAILED ] BatchReindexLayerTest/2.TestGradient, where TypeParam = N5caffe9GPUDeviceIfEE
-
[ FAILED ] BatchReindexLayerTest/3.TestGradient, where TypeParam = N5caffe9GPUDeviceIdEE**
这个问题https://github.com/BVLC/caffe/issues/6164上可以完美解决,我在此翻译一下
vim Makefile
然后用/搜索NVCCFLAGS,知道搜到下面这一段
-
...
-
# Debugging
-
ifeq ($(DEBUG), 1)
-
COMMON_FLAGS += -DDEBUG -g -O0
-
NVCCFLAGS += -G
-
else
-
COMMON_FLAGS += -DNDEBUG -O2
-
endif
-
...
修改为
-
...
-
# Debugging
-
ifeq ($(DEBUG), 1)
-
COMMON_FLAGS += -DDEBUG -g -O0
-
NVCCFLAGS += -G
-
else
-
COMMON_FLAGS += -DNDEBUG -O2
-
NVCCFLAGS += -G
-
endif
-
...
也就是加一句NVCCFLAGS += -G
然后重新编译,那么所有test都能成功
2、在所有工作完成后import caffe,出现ImportError: No module named google.protobuf.internal
这是因为在anaconda3中没有装protobuf库,执行指令:
-
cd ~/anaconda3/bin
-
pip install protobuf
这时候再import caffe就没有问题了
至此大功告成
分享
-
OliverLee456: 感谢博主 给了我很大帮助(6个月前#1楼)
0
Ubuntu16.04下安装python3.6详细步骤及anaconda安装详解
最近在廖雪峰老师的网站上学习python,开始用的是Windows环境,但是越往后发现用Linux或许更好一些,环境搭建什么的比较方便,但是对于很少用Linux的同学来说,Linux上pyth... 博文 来自: kingkeenkai的博客
Ubuntu16.04下安装python3.6详细步骤及anaconda3安装详解
1.Python3.6的安装 Ubuntu中自带python2.7和python3.5,但是很多情况下我们需要使用python3.6,以下是在终端中安装python3.6的详细步骤:在终端中输入下面的... 博文 来自: sunshine_zkf的博客
ubuntu + Anaconda-python3.6 下安装 Anaconda-python3.5
官网说明:点击此处1.查看Anaconda-python的各个版本condasearchpythoncondasearch--full-namepython#查看全名,更为详细2.安装python的不... 博文 来自: 梦Dancing的博客
安装Python环境本人环境为Anaconda3,可参照https://blog.csdn.net/ctwy291314/article/details/86571198完成安装Python2.7环境... 博文 来自: gmHappy
ubuntu 16.04 anaconda2 下安装caffe2
按照官网上的提示IfyoudonothaveaGPU:condainstall-ccaffe2caffe2ForGPUsupportyouwillneedCUDA,CuDNN,andNCCL.Thes... 博文 来自: 小x的博客