Ubuntu安装caffe及python和opencv
Ubuntu版本:16.04.03 LTS,可以比较顺利地全部安装python所需的各种依赖,而不需要安装anaconda包。否则会引起新的软件之间的冲突。
Opencv:2.4.9
Python:2.7
Cuda:8.0
Cudnn:5.1
Caffe安装官网:http://caffe.berkeleyvision.org/installation.html
最近楼主购入一台华硕游戏本,发现无法安装ubantu。在安装中发现除了debian外所有使用自动安装方式的linux发行版均不能安装,于是研究就开始了。opensuse卡在写入引导,fedroa和centos卡在启动,ubuntu卡在启动安装,怀疑是u盘制作工具有问题,于是尝试了几种工具,就连dd命令也试过了,结果都无法解决。
解决方法:重新开机,光标选中“InstallUbuntu” ,按“e”,进入grub界面,将倒数第二行中的“quietsplash ---”改为“nomodeset”。F10保存,就可以进入安装界面,进行安装。
安装ubuntu系统之后,还需要将Ubuntu集成的开源驱动加入黑名单,即增加/etc/modprobe.d/blacklist-nouveau.conf文件:
sudo gedit/etc/modprobe.d/blacklist-nouveau.conf
在该文件中增加如下两行:
blacklist nouveau
options nouveaumodeset=0
激活上述文件发挥功能,执行sudo update-initramfs –u
执行 $lspci | grepnouveau,查看是否有内容,没有说明禁用成功,如果有内容,就执行:
$sudo reboot
先下载caffe
# sudo git clonehttps://github.com/BVLC/caffe.git
然后安装一堆第三方库
# sudo apt-get installlibatlas-base-dev
# sudo apt-get installlibprotobuf-dev
# sudo apt-get installlibleveldb-dev
# sudo apt-get installlibsnappy-dev
# sudo apt-get installlibopencv-dev
# sudo apt-get installlibboost-all-dev
# sudo apt-get installlibhdf5-serial-dev
# sudo apt-get installlibgflags-dev
# sudo apt-get installlibgoogle-glog-dev
# sudo apt-get installliblmdb-dev
# sudo apt-get installprotobuf-compiler
# sudo apt-get installpython-dev
接着,安装opencv
# cd caffe
# sudo git clonehttps://github.com/jayrambhia/Install-OpenCV
# cdInstall-OpenCV/Ubuntu
# sudo shdependencies.sh
# cd 2.4
# sudo shopencv2_4_10.sh
opencv的另一种安装方式
直接克隆下来
sudo git clone https://github.com/jayrambhia/Install-OpenCV
进入 cd Install-OpenCV/Ubuntu/2.4
给所有shell脚本加上可执行权限
chmod +x *.sh
安装其他版本出错了,建议装这个:
sudo ./opencv2_4_9.sh
或:sudo sh opencv2_4_10.sh
最终出现OpenCV ready to be used(表示成功)
接下来,编译caffe
# cd ~/caffe
# sudo cp Makefile.config.exampleMakefile.config
# make all
至此,caffe安装完成。
Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0
可以尝试采用如下命令安装上述库文件,在ubuntu1604环境下验证过:
sudo pip install -r./python/requirements.txt
如果没有pip需要先安装下pip:sudo apt install python-pip
安装好上述python的依赖之后重新对caffe进行编译。并且执行make pycaffe编译。编译好之后,在python环境下可以执行import caffe和import cv2功能。如果python可以顺利导入这两个库,则说明安装成功,否则安装失败。
如果要使用caffe的python,还需要修改Makefile.config文件中关于python的目标部分如下:
将PYTHON_INCLUDE:=/usr/lib/python2.7/dist-packages/numpy/core/include
修改为:
PYTHON_INCLUDE:=/usr/local/lib/python2.7/dist-packages/numpy/core/include
这里要尤其注意,安装显卡驱动要先切换到文字界面,(按Ctrl+Alt+F1~F6).所以,启动电脑后,先进入文字界面。从recovery mode进入Ubuntu之后,crtl+alt+F1可进入命令行模式(tty)。crtl+alt+F7可退出命令行模式。
首先改变驱动程序的文件属性为可执行文件。
$ chmod a+x /home/username/NVIDIA.run
当输入安装指令时,不要简单地输入 sudo ./....run,而是输入:
sudo ./NVIDIA.run-no-x-check -no-nouveau-check -no-opengl-files
-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件
这样再reboot,就不会出现循环登录的问题。
注意:这里的NVIDIA.run代表包含具体的从NVIDIA官网下载的驱动的版本号。上述指令可以避免显卡安装之后的循环登录问题。
如果在安装时直接输入安装指令,则会在登录界面输入密码后依然跳转回登陆界面,无限循环,这是我在使用.run文件安装时遇到的问题,上述安装指令是一个亲测有效的解决方案。
有时在安装nvidia显卡之前,可能需要卸载已有的显卡驱动。删除以前激活的显卡驱动或者旧版本的nvidia官方驱动,在终端中输入如下命令:
sudoapt-get –purge remove nvidia-*
sudoapt-get remove --purge nvidia-331-updates
如果安装的是官网下载的驱动, 则重新运行run文件来卸载
sh./nvidia.run –uninstall
1. 删除之前安装的nvidia驱动,运行 sudoapt-get purge nvidia-*
2. 删除已有驱动也可用sudo apt-get autoremove nvidia-*命令
3 . 添加第三方驱动源,运行 sudo add-apt-repository ppa:graphics-drivers/ppa 或者 sudoapt-add-repository ppa:xorg-edgers/ppa
4. 更新源,运行 sudoapt-get update
5. 查询nvidia驱动可用版本,运行sudoapt-cache search nvidia-* 查询相应版本
6. 安装驱动,运行 sudoapt-get install nvidia-367
可参考nvidia公司官网的NVIDIA CUDA INSTALLATION GUIDE FOR LINUX.pdf进行安装。
由于cuda8不支持gcc/g++5以后的版本,所以需要做以下更改。
改变系统默认的gcc/g++编译器版本,换成gcc/g++-5
1. sudo su
2. cd ../../usr/bin
3. ln -s /usr/bin/g++-5 /usr/bin/g++ -f
4. ln -s /usr/bin/gcc-5 /usr/bin/gcc -f
这样,gcc就默认成gcc-5,g++也默认成g++-5了。
1 sudo chmod 777 cuda_8.0.44_linux.run
2 sudo ./cuda_8.0.44_linux.run
注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。
打开~/.bashrc文件: sudo gedit~/.bashrc
将以下内容写入到~/.bashrc尾部:
1 exportPATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
2 exportLD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
激活环境变量设置:source ~/.bashrc
编辑计算机文件夹下的/etc/profile,加入CUDA环境变量(下面的2,3句),保存。
1. sudo gedit /etc/profile
2. export PATH=/usr/local/cuda/bin:$PATH
保存后执行下面的命令,使其生效:
1. source /etc/profile
同时,进入/etc/ld.so.conf.d/文件夹,执行下面的命令,新建一个名为cuda.conf的文件。
1. sudo gedit cuda.conf
然后在文件中写入如下内容:
1. /usr/local/cuda/lib64
保存后执行下面的命令,使其生效。
1. sudo ldconfig
进入usr/local/cuda/samples,然后build samples,命令如下:
1. sudo make all -j8
在执行完之后,进入samples/bin/x86_64/linux/release目录下,在终端执行查询命令:
1. ./deviceQuery
如果返回了你电脑显卡的信息,且结尾有Result=PASS,则表示安装成功,否则,建议重启电脑之后再次尝试查询命令。
1 cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
2 make
3 sudo ./deviceQuery
如果显示一些关于GPU的信息,则说明安装成功。
进行上述检测后,如果输入nvcc–version命令后出现nvcc没有安装或"nvcc: No such file ordirectory"等问题,则采用以下措施:
YourPATH environment variable is not set up correctly. Ensure that your PATHincludes the bin directory where you installed the Toolkit, usually/usr/local/cuda-8.0/bin.
1. $ export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
nvcc -V
问题是
The program 'nvcc' is currentlynot installed. You can install it by typing:
sudo apt-get installnvidia-cuda-toolkit
但是我们已经安装了cuda,在 /usr/local 能够看到文件夹 cuda-7.5。 这需要如下设置
执行sudo gedit ~/.bashrc,在最后面,64位的话粘贴以下内容:
export PATH=/usr/local/cuda-7.5/bin:$PATH
exportLD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
接着执行 source ~/.bashrc 使其立即生效
下面查询
nvcc -V
可见如下结果
nvcc: NVIDIA (R) Cuda compilerdriver
Copyright (c) 2005-2015 NVIDIACorporation
Built onTue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release7.5, V7.5.17
- Step 1: 在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/到INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码:
INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include
INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include /usr/include/hdf5/serial/1212
- Step 2: 在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl和 hdf5_serial,也就是把下面第一行代码改为第二行代码:
LIBRARIES += glog gflags protobufboost_system boost_filesystem m hdf5_hl hdf5
LIBRARIES += glog gflags protobufboost_system boost_filesystem m hdf5_serial_hl hdf5_serial1212
# 在多个 GPU 上运行 Caffe 需要使用 NVIDIA NCCL
$ git clonehttps://github.com/NVIDIA/nccl.git
$ cd nccl
$ sudo make install -j4
# NCCL 库和文件头将安装在/usr/local/lib 和/usr/local/include 中
$ sudo ldconfig # 该命令不执行会出现错误: error whileloading shared libraries: libnccl.so.1: cannot open shared object file: No suchfile or directory 123456123456
gedit ~/.bashrc
exportPYTHONPATH=/path/to/caffe/python:$PYTHONPATH
source ~/.bashrc
$ sudo apt-get install python-protobuf
或
可以先下载安装包,自行编译和安装。可参考:http://blog.csdn.net/paynetiger/article/details/8197326
建议使用第一种方法,下面是关键:
如果使用Anaconda,而以上两种方法无论哪一种都会将prototxt相关文件安装到/usr/local/lib/python2.7/dist-packages, 需要将相关文件复制到Anaconda/lib/python2.7/site-packages下,才能正常使用. 1234512345
$ sudo apt-get install graphviz # 安装graphviz
$ sudo pip install pydot # 安装pydot
如果使用Anaconda,需要将相关文件从/usr/local/lib/python2.7/dist-packages复制到Anaconda/lib/python2.7/site-packages下. 123123
$ sudo ldconfig /usr/local/cuda/lib64
$ sudo ldconfig/usr/local/cuda-7.5/lib64
安装命令如下:
[plain] view plain copy
2. sudo apt-get install libatlas-base-dev
配置cuDNN
cuDNN是GPU加速计算深层神经网络的库。
首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。下载版本号如下图:
下载cuDNN5.1之后进行解压:
sudo tar -zxvf./cudnn-8.0-linux-x64-v5.1.tgz
进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:
cd cuda/include
sudo cp cudnn.h/usr/local/cuda/include #复制头文件
cd ..
cd lib64
sudo cp lib*/usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.solibcudnn.so.5 #删除原有动态文件(这个操作慎用)
sudoln -s libcudnn.so.5.0.5 libcudnn.so.5 #生成软衔接(不一定需要)
sudoln -s libcudnn.so.5 libcudnn.so #生成软链接(不一定需要)
安装cudnn比较简单,简单地说,就是复制几个文件:库文件和头文件。将cudnn的头文件复制到cuda安装路径的include路径下,将cudnn的库文件复制到cuda安装路径的lib64路径下。
#解压文件
tar -zxvfcudnn-6.5-linux-x64-v2.tgz
#切换路径
cd cudnn-6.5-linux-x64-v2
#复制lib文件到cuda安装路径下的lib64/
sudo cp lib* /usr/local/cuda/lib64/
#复制头文件
sudo cp cudnn.h /usr/local/cuda/include/
#更新软连接
cd /usr/local/cuda/lib64/
sudo rm -rflibcudnn.so libcudnn.so.6.5
sudo ln -slibcudnn.so.6.5.48 libcudnn.so.6.5
sudo ln -slibcudnn.so.6.5 libcudnn.so
到目前为止,cudnn已经安装完了。但是,是否安装成功了呢,还得通过下面的cudnn sample测试。
#运行cudnn-sample-v2
tar –zxvfcudnn-sample-v2.tgz
cd cudnn-sample-v2
make
./mnistCUDNN
#改程序运行成功,说明cudnn安装成功。
此时可能出现错误:./mnist CUDNN:error while loading shared libraries: libcudart.so.6.5: cannot ope
解决方法参考 https://groups.google.com/forum/#!topic/caffe-users/dcZrE3-60mc
方法1:在命令行中执行
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
方法2:在/etc/profile文件最后添加export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64, 并在命令行中执行source /etc/profile。
准备安装文件,cudnn的安装就是将include和lib文件拷贝到系统的cuda路径里
cudnn-8.0-linux-x64-v5.1.tgz
进入安装文件所在目录
$tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
$cd cuda
$sudo cp lib64/lib* /usr/local/cuda/lib64/
$sudo cp include/cudnn.h/usr/local/cuda/include/
更新软连接,这里最好ls一下lib64的内容,防止版本不一致:
$cd /usr/local/cuda/lib64/
$sudo chmod +r libcudnn.so.5.1.10
$sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
$sudo ln -sf libcudnn.so.5 libcudnn.so
更新设置:
$sudo ldconfig
1、从官网上下载cudnn的安装包。
2、将安装包解压,将此安装包放在home路径下即可,并在当前路径下进行解压,解压后的文件夹名为cuda。
3、在终端上编辑如下代码:
$ cd cuda/include $ sudo cp *.h /usr/local/cuda/include/ (注意这里是你自己的cuda的安装地址,复制*.h文件)
4、关闭终端并重新打开(也可以返回最开始的目录)
$ cd cuda/lib64 $ sudo cp libcudnn* /usr/local/cuda/lib64/
5、终端运行:
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
目录(?)[+]
1.硬件配置
2.禁用nouveau驱动
3.安装NVIDIA驱动
4.注意
5.参考文章
这两天在笔记本(神舟Z7M-SL7D2)下安装ubuntu16.04,
执行ubuntu安装程序时,经常会在最开始选择语言的界面时鼠标键盘无响应,死机概率30%。
安装完成后,点重启按钮也会导致系统无响应,死机概率(99%)。
启动系统后输入密码登录无法显示桌面,鼠标键盘无响应,死机概率(90%).
前面两种死法,还能忍受,但第三种不能忍啊。
反复尝试失败后,感觉似乎ubuntu对这个型号的显卡支持有问题,因为ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,可能就是nouveau对这个型号的显卡支持有问题,需要安装NVIDIA官方驱动解决问题,于是按照网上的教程重装驱动,看了好多文章没有一个能完全解决我的问题,反复尝试,综合几篇文章的的方法,最后还是PPA安装最终解决问题,总算搞定,这里记下安装过程以免下次再走弯路。
CPU Core i7-6700HQ(含集成显卡)
芯片组 Intel Hm170
独立显卡 NVIDIA GTX965M
Ubuntu系统集成的显卡驱动程序是nouveau,我们需要先将nouveau从Linux内核卸载掉才能安装NVIDIA官方驱动。
将nouveau添加到黑名单blacklist.conf中,(关于blacklist参见 《禁用Linux内核驱动》),linux启动时,就不会加载nouveau.
因为nouveau驱动的影响,ubuntu安装后无法登入桌面,所以在ubuntu系统启动显示登录界面后,需要按ctrl+alt+F1进入tty文本模式进入下面的操作
由于blacklist.conf文件的属性不允许修改。所以需要先修改文件属性。
查看属性
/etc/modprobe
.d/blacklist
.conf
修改属性
sudo chmod
666/etc/modprobe
.d/blacklist
.conf
用vi编辑器打开
sudo vi /etc/modprobe
.d/blacklist
.conf
在文件末尾添加如下几行:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
修改并保存文件后,记得把文件属性复原:
sudo chmod
644/etc/modprobe
.d/blacklist
.conf
再更新一下内核
sudo update
-initramfs-u
关于update-initramfs命令的用途,参见 《initramfs 简介,一个新的 initial RAM disks 模型》
修改后需要重启系统。
重启系统确认nouveau是已经被屏蔽掉,使用lsmod命令查看:
lsmod
| grep nouveau
lsmod命令用于显示已经加载到内核中的模块的状态信息,参见《lsmod命令》
因为系统中不光有NVIDIA显卡还有一块集成intel显卡能正常驱动,所以经过上一步禁用nouveau驱动后,再次重启,已经系统可以正常登录进入桌面了。
使用如下命令添加Graphic Drivers PPA
sudo add
-apt-repositoryppa:graphics
-drivers/ppa
sudo apt
-getupdate
寻找合适的驱动版本
ubuntu
-driversdevices
安装NVIDIA driver
如上图显示GTX965M显卡建议的驱动版本是378
按ctrl+alt+F1进入tty文本模式
关闭(图形)桌面显示管理器LightDM
sudo service lightdm stop
安装nvidia driver,如果网速度不好,可能要花比较长的时间
安装完成后重启
sudoapt-get install nvidia-
378
sudo reboot
重启系统后,执行下面的命令查看驱动的安装状态显示安装成功
sudo nvidia-smi
sudo nvidia-setting
安装NVIDIA驱动后,登录死机现象再没出现,一切正常了。
当BIOS中Secure Boot设置为disable,正安装NVIDIAdriver后,如果再将Secure Boot设置为enable,再启动ubuntu则NVIDIA driver则不会工作。
具体原因,参见这篇文章
《UEFI、BIOS、Secure Boot的关系和知识介绍》
如果要在安全启动模式下安装NVIDIA driver,有点麻烦,我没有再尝试,参见这篇文章应该会有帮助:
《Linux secure boot(安全启动)时添加Nvidia显卡驱动》
《ubuntu16.04 NVIDIA显卡驱动安装》
《Ubuntu 16.04 nvidia安装》
进入cuda_8.0.61_375.26_linux.run所在目录
执行:
$sudo chmod +x cuda_8.0.61_375.26_linux.run
$sudo ./ cuda_8.0.61_375.26_linux.run
按q键退出RELU文档,按照如下选择,显卡驱动一定要选n,不装
其他都默认yes
最后,配置环境变量,直接放在系统配置文件profile里面:
$sudo gedit /etc/profile
在最后面加入两行代码:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
保存退出.
执行:$sudo ldconfig
$nvcc –version
查看CUDA ,应该显示8.0,如果没有添加path会显示系统之前的版本
$nvidia-smi 查看驱动信息
在根目录下会出现NVIDIA_CUDA-8.0_Samples,打开终端,进入该目录:
$sudo make –j8 #编译samples,我电脑8线程,全开编译
等待2分钟左右,编译完成,执行下条指令:
$sudo ./1_Utilities/deviceQuery/deviceQuery
出现提示显卡驱动版本等信息的内容,表示安装成功。
sudo apt-get install libatlas-base-dev