Caffe,全称Convolutional Architecture for Fast Feature Embedding。是一种常用的深度学习框架,主要应用在视频、图像处理方面的应用上。
近期,需要在Ubuntu底下的Linux虚拟机跑caffe框架,由于过程繁琐且有详细的教程文档,我就不详细介绍每个步骤,将一些过程细节以及自己碰到的问题进行记录。
重点:lspci | grep -i nvidia用于判断是否有显卡,如果没有输出就是没有显卡,虚拟机的显卡也是虚拟的,并不是主机的显卡!!!不能以为主机有显卡,虚拟机就一定有显卡!!!
操作系统:Ubuntu14.04LTS
建议下述各个库都安装最新的版本
一、CUDA7.5安装
1.1、安装包下载https://developer.nvidia.com/cuda-75-downloads-archive,根据自己系统的具体情况进行下载,我下载的是runfile。
1.2、打开虚拟机,“ctrl+alt+F1”进入tty,输入自己用户名和密码,便可以输入指令
1.3、sudo service lightdm stop 停止桌面显示程序(没有这一步会显示”an X server is running“)
1.4、文件夹的建立
- 假设用户名为 usrname,在 /home/usrname/ 目录下,建立
caffe_install 目录。可以通过图形化界面新建,也可以通过命令 sudo mkdir /home/usrname/caffe_install 建立文件夹。 本文所有的依赖库都在该文件夹下进行安装。 - 在 caffe_install 下新建文件夹 cuda_install,并将安装包 cuda_7.5.18_linux.run 复制到cuda_install 内。
- 将工作目录移到 cuda_install 内(cd /home/usrname/caffe_install/
- 输入 sudo ./ cuda_7.5.18_linux.run (或者 sudo sh cuda_7.5.18_linux.run) 运行安装包。
记得要点击空格键或者enter键进行阅读安装说明,我一开始以为是自动安装,等了很久还是0%,后来发现只要一直按空格键就行了。 - 不支持Nvidia驱动的安装:第二项选no
1.5、安装CUDA驱动后可能遇到的问题
安装nVidia驱动后虚拟机输入密码无法进入桌面,一直停留在登陆界面
原因:
安装CUDA7.5后,修改了/etc/profile,一直无法进入桌面,上网查了很多资料,两种可能,1、profile被修改,将profile改回去,考虑到我只是在profile添加两行,所以没有采纳;2、驱动没装好。在登陆界面ctrl+alt+F1进行命令行窗口,输入用户名、密码,在命令行输入:
sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia
等待一段时间,虚拟机重启,即可正常进入。
附:
若CUDA不合适,卸载方法如下
$ sudo service lightdm stop
$ cd /usr/local/cuda-7.5/bin
$ sudo ./uninstall_cuda_7.5.pl
二、CAFFE依赖库----opencv安装
2.1、cmake-gui的安装
sudo apt-get install cmake-qt-gui
2.2、用cmake-gui安装opencv3.0
切记,应使用sudo权限打开cmake。文件路径配置如下,点击configure,出现如下问题:
将手动下载ippicv_linux20141027.tgz复制到
~/caffe_install/opencv-3.0.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b目录底下,覆盖原有文件。
重新打开cmake-gui,将cmake_build_type改为release
配置成功后点击generate,出现如下:
查看opencv库函数路径
pkg-config opencv --libs
查看opencv版本
pkg-config opencv --modversion
附录
cmake各个版本下载https://cmake.org/files/
安装可以参考这篇博客
三、boost安装与配置
3.1 下载
请至 http://sourceforge.net/projects/boost/files/boost/下载最新版的 Boost C++
3.2 安装依赖库 bzlib
在终端输入 sudo apt-get install libbz2-dev
3.3 编译与安装
- 将安装包 boost_1_59_0.tar.gz 复制到 caffe_install 下,并在该文件夹下解压缩。
- 将工作目录移到/caffe_install/boost_1_59_0,建立编译文件夹 build,并在终端中输入./bootstrap.sh
- 在终端中输入 sudo ./b2 --build-dir=./build
- 编译完成后,在终端中输入 sudo ./b2 install
至此, Boost 安装完成。
3.4环境变量设置
把 Boost 的头文件和 lib 文件加入相应的环境变量中。
- 在终端中输入 sudo vi /etc/profile
- 进入 vi 编辑 profile 文件,在文件末尾添加:
export BOOST_INC=/usr/local/include
export BOOST_LIB=/usr/local/lib
- 退出 vi,在终端输入 source /etc/profile
四、Protobuf编译与安装
使用“./configure”命令生成Makefile文件后,使用“sudo make -j”编译protobuf出现:“protobuf-3.0.0-alpha-3/missing: line 81: aclocal-1.14: command not found”
为解决这一问题,在网上寻找方法。有网友表示应该使用以下命令:
sudo autoreconf -ivf
结果command not found,去掉root权限,发现以下提示,又安装了autoconf
期间在一些博客上看到一些解决方法,安装了以下两个:
sudo apt-get install autoconf automake libtool
sudo apt-get install libffi-dev
之后输入sudo autoreconf -ivf,可正常执行,再输入“sudo make -j”可顺利编译,但很奇怪的是编译过程我的虚拟机会重启。
解决方案:
后来我参考了protobuf的README。输入指令如下:
$ sudo ./configure
$ sudo make
$ sudo make check
$ sudo make install
If "make check" fails, you can still install, but it is likely thatsome features of this library will not work correctly on your system.Proceed at your own risk."make install" may require superuser privileges.
五、Glog安装
安装automake后,解压打开文件,一开始没看到configure可执行文件。后来也不知怎么的,出现configure后执行,出现问题:“configure: error: cannot find install-sh, install.sh, or shtool in “.” “./…” “./…/…””
解决方案:
libtoolize --force
aclocal
autoheader
automake --force-missing --add-missing
autoconf
./configure
之后便可顺利编译
六、Gflag安装
Gfalg使用cmake-gui安装的时候,用于使用sudo apt-get install cmake-qt-gui得到的cmake-gui版本过低,无法完成编译,所以选择重新安装cmake和cmake-gui.
sudo apt-get autoremove cmake
cd /usr
sudo wget http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz
tar zxvf cmake-3.2.2.tar.gz
cd cmake-3.2.2/
sudo apt-get install qt4-default
./bootstrap --qt-gui --qt-qmake=/usr/bin/qmake
sudo make
sudo make install
之后重新使用cmake-gui进行编译,顺利进行。
七、cuDNN安装
下载下来的压缩包是cudnn-7.0-linux-x64-v3.0.8-prod.solitairetheme8
cudnn-sample-v3.solitairetheme8,需要先转化为tgz格式。
sudo cp cudnn-7.0-linux-x64-v3.0.8-prod.solitairetheme8 cudnn-7.0-linux-x64-v3.0.8-prod.tgz
解决方案:
不采用软连接,改为赋予权限
sudo chmod a+r /usr/local/cuda-7.5/include/cudnn.h /usr/local/cuda-7.5/lib64/libcudnn*
但后来运行可执行文件时,发现:
nVidia驱动和CUDA不兼容,nVidia显卡驱动下载地址
https://www.nvidia.cn/Download/index.aspx?lang=cn
本文主要原因是Linux虚拟机无法使用GPU,不用GPU就好了
八、caffe安装
8.1依赖库的安装
在终端中运行下面的命令:
sudo apt-get install libleveldb-dev libsnappy-dev libhdf5-serial-dev liblmdb-dev python-numpy
8.2caffe安装包下载
https://github.com/BVLC/caffe 下载源代码,得到压缩包 caffe-master.zip
8.3编译与安装
- 解压
- 复制 Makefile.config 的模板,输入命令:
sudo cp Makefile.config.example Makefile.config
- 输入 sudo gedit Makefile.config,修改以下内容后保存退出:
第 5 行, #USE_CUDNN := 1,取消注释表示开启 cuDNN 加速。读者根据情况选择是否开启 cuDNN。
第 8 行, #CPU_ONLY := 1,如果要使用 GPU,不修改该行。如果不使用 GPU 或者没有 CUDA 支持的 GPU,可以删除注释符”#”,将该行修改为 CPU_ONLY := 1。不过,建议将该行注释,即全部采用 GPU 版本的编译。因为 GPU 版本的caffe 也可以实现纯 CPU 计算。
第 30 行 CUDA_DIR :=/usr/local/cuda ,确认该行 cuda 地址正确。
第 53 行, BLAS :=atlas,根据安装的 BLAS 库,修改该行。 (参考行 49-52 的说明)。本文由于安装的是 OpenBLAS,将该行改为 BLAS := open
第 57 行,删除注释符”#”,设置正确的 BLAS 库 include 地址,本文改为
BLAS_INCLUDE := /opt/OpenBLAS/include
第 58 行,删除注释符”#”,设置正确的 BLAS 库 lib 地址,本文改为 BLAS_LIB:=/opt/OpenBLAS/lib
第 86 行, ”PYTHON_LIB := /usr/lib/”, 为 libpythonX.X.so ( X 为 python 版本号)配置正确路径。在 64 位 Ubuntu 下应配置为”PYTHON_LIB := /usr/lib/x86_64-linuxgnu”。
第 97 行,根据具体情况,增加需要的 include 目录。如果都按本文设置进行安装,本行不需要修改。
第 98 行,根据具体情况,增加需要的 lib 目录。如果都按本文设置进行安装,本行不需要修改。
- sudo gedit Makefile,在末尾添加“opencv_imgcodecs”,如下
- sudo make all
8.4测试是否安装成功
输入“sudo make test”和 “sudo make runtest”
出现下图pass,即正常安装
8.5可能遇到的问题
- unsupported gpu architecture ‘compute_60’
打开Makefile.config,将45-47行注释
- error while loading shared libraries:libcudart.so.7.5主要原因是找不到对应的库文件。
使用find语句查找对应的文件,并将其放到/usr/local/cuda-7.5/lib64底下,使用sudo ldconfig语句使其立即生效。如果继续出现其他文件缺失,重复上诉步骤。