ubuntu16.04 + GTX1080TI + Python3.5 + OPENCV3.1配置过程记录

http://blog.csdn.net/u011494081/article/details/78076674

http://blog.csdn.net/ysy950803/article/details/52643737

http://blog.csdn.net/zhayushui/article/details/78541305

https://zhuanlan.zhihu.com/p/25709284

http://www.cnblogs.com/lyyang/p/6540000.html

http://blog.csdn.net/isuccess88/article/details/70165726?utm_source=itdadao&utm_medium=referral


1.安装Ubuntu

对于GTX1080的显卡,安装时会进入到选择安装界面,但是一但点击安装将出现无法出现界面的情况,在链接1中找到了解决办法。说的很详细,只作为记录。

(1)、在安装时,选择“install ubuntu"后,按e进入命令行,找到含有quiet splash --- ”的行,将"---"修改为"nomodeset",然后按下F10启动系统。

(2)、开机后进入安装引导界面,参考链接2进行安装。

安装记录如下:

新建swap交换空间,也就是虚拟内存的地方,swap-主分区-空间起始位置,大小最好为内存的2倍。

新建efi系统分区,efi系统分区-EX4日志文件系统-逻辑分区-空间起始位置,可以设为512M。

说明:如果这里的类型选项中没有efi系统分区,是由于BIOS里启动模式不是以EFI模式启动的(或者电脑不支持efi模式),需要在BIOS里设置一下。

新建分区,挂载“/”, “/"-EX4日志文件系统-逻辑分区-空间起始位置,空间此处设为10G。

新建分区,挂载"/home", “/home"-EX4日志文件系统-逻辑分区-空间起始位置,空间此处设为40G。

新建分区,挂载"/usr",“/usr"-EX4日志文件系统-逻辑分区-空间起始位置,空间此处设为40G。

在下方的安装引导启动器的设备中要注意选择正确,选择刚刚新建"efi系统分区"前的名称,剩下的就按自已需要配置即可。

(3)、安装完成后,重启进入引导界面,选择第一项“ubuntu”,按e进入命令行,找到quite splash,在其后面加上nomodeset,F10进入系统。

2.配置显卡驱动

进入系统后,可以按链接1的剩下部分修改grub,也可以直接进入链接2部分。

(1)、update最新系统

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

(2)安装vim

sudo apt-get install vim

(3)可以选择装备份还原systemback软件

sudo add-apt-repository ppa:nemh/systemback

sudo apt-get update

sudo apt-get install systemback

卸载命令为:sudo apt-get remove --purge systemback

(4)验证GPU是否支持CUDA(有显示即可)

lspci | grep -i nvidia

uname -m && cat /etc/*release

gcc --version

uname -r

sudo apt-get install linux-headers-$(uname -r)

(5)禁用自带的nouveau nvidia驱动

vim /etc/modprobe.d/blacklist-nouveau.conf

写入以下文件并保存

blacklist nouveau

options nouveau modeset = 0

然后运行以下命令

sudo update-initramfs -u

sudo reboot

重启后确认nouveau是否已经被屏蔽

lsmod | grep nouveau

(6)安装nvidia显卡驱动

按住ctrl+alt+F1进入控制台(Ctrl+Alt+F7切换到图形界面),输入以下指令

sudo service lightdm stop

sudo init 3

删除现有nvidia驱动

sudo apt-get purge nvidia-*

在以下过程中,我是按照自已的想法reboot,然后重新进入图形界面操作的。

增加nvidia驱动ppa链接库

sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt-get update

显示设备相关驱动,可以看出推荐的驱动版本

ubuntu-drivers devices

sudo apt-get install nvidia-390   //390为上一条语句推荐的驱动版本

sudo reboot

//重启之后验证nvidia是否安装成功

nvidia-smi 或者 nvidia-settings

(7)安装CUDA8.0

下载以下两个文件

cuda_8.0.61_375.26_linux.run

cuda_8.0.61.2_linux.run

下载完成后,找到其位置,例如我的下载后在"下载"文件夹里

chmod +x 下载/cuda_8.0.61_375.26_linux.run

chmod +x 下载/cuda_8.0.61.2_linux.run

sudo sh 下载/cuda_8.0.61_375.26_linux.run

sudo sh 下载/cuda_8.0.61.2_linux.run

按照提示,除了显卡驱动不需要安装,其他yes或者默认位置即可,即在

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 ****?的时候选择n。

若不幸安装失败,卸载命令为:/usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl

配置环境变量

sudo gedit ~/.bashrc

在最后加上以下内容,并保存退出。

if [ -z $PATH ]; then
 PATH=/usr/local/cuda-8.0/bin
 else
 PATH=/usr/local/cuda-8.0/bin:$PATH
 fi
 export PATH


 if [ -z $LD_LIBRARY_PATH ]; then
 LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64
 else
 LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
 fi
 export LD_LIBRARY_PATH

使配置的环境变量生效

source ~/.bashrc

判断cuda是否安装成功

nvcc --version

重启并确认cuda是否安装成功

reboot

nvcc --version

验证cuda的Samples

cd /home/xxx/NVIDIA_CUDA-8.0_Samples

make -j8   //成功的话最后一行显示的应该是Finished building CUDA samples.

sudo /bin/x86_64/linux/release/deviceQuery   

(8)安装cudnn

下载cudnn-8.0-linux-x64-v7.tgz。

cd ~

sudo chmod +x cudnn-8.0-linux-x64-v7.tgz

tar -zxvf cudnn-8.0-linux-x64-v7.tgz

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/

sudo cp cuda/lib*/libcudnn* /usr/local/cuda/lib64/

sudo ldconfig

(3) 安装opencv3.1

下载opencv3.1的zip包,解压。

unzip opencv-3.1.0.zip   //(注意路径)

cd opencv-3.1.0

将graphcuts.cpp文件中的

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) 

改为

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

保存退出。

继续在终端中输入以下指令

mkdir build

cd  build

sudo apt-get install cmake

在这里我推荐使用cmake-gui来进行cmake,这是若干次的失败后的经验,现在在网上可以搜到各种各样的cmake的命令,我在网上查找过很多并都有经过 尝试,然而都有是失败,而在cmake-gui下很容易的配置成功。下面是我配置cmake-gui的截图,可以参考使用。



编绎成功后执行opencv安装

sudo make install -j8

安装完成后可以进行测试:

vim ex.py

import cv2

img = cv2.imread('1.jpg')

cv2.imshow('1.jpg', img)

cv2.waitKey(0)

保存退出,在/home/xzc/下放一张名为1.jpg的图片,执行下条命令

python /home/xzc/ex.py

顺利的话会有图像显示,这里需要量注意的是,如果使用python命令行进行一条条输入的话imshow()的时候并不会立即显示图片,一直到运行完cv2.waitKey(0)后才会显示图像,不知道是不是我的版本的问题。

4、安装Anaconda3

下载Anaconda-3.4.2.0-Linux-x86_64.sh

bash Anaconda-3.4.2.0-Linux-x86_64.sh

这里需要说明的是我开始下载的是3.4.0.0版本,一直到安装完caffe的时候都是正常的,然后在import caffe时一直报错,查了很久有的网站说python3.4.x的版本里面存在相同的python bug,没办法重新下载了3.4.2.0,安装后很顺利的成功了。

按照提示进行安装。

sudo gedit ~/.bashrc

在文件最后加上

alias python='/home/xxx/anaconda3/bin/python'

并保存退出。然后执行

source ~/.bashrc

5、安装caffe

clone caffe源码:

cd ~/

git clone http://github.com/BVLC/caffe.git

安装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 libgoogle-glog-dev liblmdb-dev libgflags-dev


cd caffe/python

for req in $(cat requirements.txt); do pip3 install $req; done


修改caffe工程文件:

cd caffe

cp Makefile.config.example Makefile.config

vim Makefile.config

Makefile.config文件根据需要修改:

(1) 因为使用cudnn,将将#USE_CUDNN := 1修改成: USE_CUDNN := 1 (就是去掉注释的‘#’号)

(2) 因为使用opencv3.1,将#OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3

(3) 因为要使用python来编写layer,则将#WITH_PYTHON_LAYER := 1修改为 WITH_PYTHON_LAYER := 1

(4) 因为使用的是Anaconda3,则取消以下几处的注释

//此处添加注释


ANACONDA_HOME := $(HOME)/anaconda3
 PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
 $(ANACONDA_HOME)/include/python3.5m \
 $(ANACONDA_HOME)/lib/python3.5/site-packages/numpy/core/include \

PYTHON_LIBRARIES := boost_python3 python3.5m

# PYTHON_LIB := /usr/lib
 PYTHON_LIB := $(ANACONDA_HOME)/lib

 // 将文件中的变量 INCLUDE_DIRS += $(BUILD_INCLUDE_DIR) ./src ./include
 // 修改成:
  INCLUDE_DIRS += $(BUILD_INCLUDE_DIR) ./src ./include /usr/include/hdf5/serial

保存修改后的文件


修改makefile文件(不是Makefile.config)

vim makefile

// 将文件中的变量 LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
 // 修改成:
 LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
 // 保存修改后的Makefile

cd /usr/lib/x86_64-linux-gnu/

sudo ln -sf libboost_python-py35.so libboost_python3.so

sudo ldconfig

pycaffe安装

sudo apt-get install python-pip python-dev     //build-essential

pip install --upgrade pip


修改.bashrc文件,并在最后添加

vim ~/.bashrc

export PYTHONPATH='/home/xxx/caffe/python:$PYTHON'


sudo apt-get install python-pip python-dev

sudo python3  -m  pip install -U pip

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



编绎caffe工程

make all -j8

make test -j8     //不是必须

make runtest -j8 //不是必须

其中若出现libopencv.so.3.2的错误,可以执行

sudo ldconfig

make clean

后重新生成。

 其他故障可以参考链接5。

 如果执行测试,成功后会显示2139 tests.画面。

make pycaffe

通过之后在命令行进入python,输入

python

import caffe

在我的版本里出现的错误都在链接6里出现了,作简单记录

当出现raise ValueError, "Can't create weekday with n == 0"这种错误时,退出python输入

pip install matplotlib --upgrade

当出现Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.so错误时,输入

conda update numpy

也许你会和我一样会出现ImportError: No module named google.protobuf等类似问题时,请参考http://blog.csdn.net/dcrmg/article/details/78358279。


这篇文章里参考了很多人的做法,也包括自己的一些想法,难免有些乱,而且过程中各种版本的东西方并没有都有及时的记录下来,

这些记录当作自己的备忘,也对引用的这些博友的文章致以感谢,给我了很大的帮助,也希望这篇文章能帮助到一些和我一样有需求的人。


猜你喜欢

转载自blog.csdn.net/xiong2015job/article/details/79276070