因为系分大作业需要做一个点餐系统,里面的创新功能为摇一摇点餐推荐,会根据用户以前的点餐记录和其他用户的点餐选择来为用户做餐品推荐,所以如果数据量过大可能会用到深度学习,故开此博客记录ubuntu 16.04环境下安装caffe的过程。
参考的是caffe官方的Guide:ubuntu 16.04 Caffe Installation Guide
以及该篇博客ubuntu 16.04 caffe
因为我是在虚拟机的环境下进行安装的,所以前半部分为失败的尝试:
第一步:安装依赖包:
安装过程中可能会出现各种错误,所以需要保证apt-get 版本为最新,使用sudo apt-get update来使apt-get更新到最新的版本。
依赖包安装命令依次为
sudo apt-get update
sudo apt-get upgrade
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 git cmake build-essential
如果出现如下提示,说明安装成功:
如果失败可以看看哪些包没有装成功,重新安装一遍。
第二步:禁用 nouveau
只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动,禁用方法就是在 /etc/modprobe.d/blacklist-nouveau.conf 文件中添加一条禁用命令,首先需要打开该文件,通过以下命令打开:
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
打开后发现文件是空的,写入如下配置:
blacklist nouveau option nouveau modeset=0
保存后关闭,这时终端会报warning,无视即可:
执行以下命令使禁用 nouveau 生效:
sudo update-initramfs -u
第三步:配置环境变量
用gedit 命令打开配置文件:
sudo gedit ~/.bashrc
打开后在文件最后加入以下两行内容:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
保存并退出。
第四步:下载CUDA
进入 https://developer.nvidia.com/cuda-downloads ,依次选择 CUDA 类型然后下载即可。
第五步:安装CUDA
下载的 CUDA 安装文件移动到 HOME 路径下,然后通过 Ctrl + Alt + F1 进入文本模式,输入帐号密码登录,通过 Ctrl + Alt + F7 可返回图形化模式,在文本模式登录后首先关闭桌面服务:
sudo service lightdm stop
然后通过 Ctrl + Alt + F7 发现已无法成功返回图形化模式,说明桌面服务已成功关闭,注意此步对接下来的 nvidia 驱动安装尤为重要,必需确保桌面服务已关闭。
因为CUDA安装包里包含了Nvidia的显卡驱动,所以需要先把原来的显卡驱动先删除,使用如下命令可以删除旧显卡驱动:
sudo apt-get purge nvidia*
接下来安装CUDA,Ctrl + Alt + F1 进入文本模式,然后运行 CUDA 安装文件进行安装,之前我们已经把 CUDA 安装文件移动至 HOME,直接通过 sh 命令运行安装文件即可:
sudo sh cuda_9.1.85_387.26_linux.run --no-opengl-libs
这里把文件名换成下载的对应的CUDA安装文件即可。
执行此命令约1分钟后会出现 0%信息,此时长按回车键让此百分比增长,直到100%,然后按照提示操作即可,先输入 accept ,然后让选择是否安装 nvidia 驱动,这里的选择对应第5步开头,若未安装则输入 “y”,若确保已安装正确驱动则输入“n”。
为了避免麻烦我只选择了安装显卡驱动,其他都是no,但是还是出现了问题,显示找不到kernel source。
后来查询资料才发现,虚拟机的显卡是虚拟显卡,并不是直接的物理显卡,只是利用了物理显卡的计算性能来模拟显卡,直接用如下命令查询Nvidia显卡信息:
lspci | grep -i nvidia
发现并没有显示显卡的信息,印证了虚拟机是使用的虚拟显卡:
这样的情况只好改为安装CPU only的caffe,过程相比于有GPU加速版本的caffe少去了安装CUDA和CuDNN、OpenCV的步骤。
参考
第一步:安装必要工具
先更新软件,再安装必要的辅助工具:
使用如下命令:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential
sudo apt-get install -y cmake
sudo apt-get install -y git
sudo apt-get install -y pkg-config
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
安装过程中出现失败可重新安装。
第二步:安装依赖包
安装依赖包使用如下命令:
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 python-dev
安装过程中出现失败可重新安装。
第三步:下载并配置caffe
从github clone caffe:
git clone https://github.com/BVLC/caffe.git
安装pip,方便之后安装python库:
sudo apt-get install python-pip
使用pip -V可以查看python的版本,一般为2.7
安装必要的库:
cd caffe
cat python/requirements.txt | xargs -L 1 sudo pip install
添加软链:
sudo ln -s /usr/include/python2.7/ /usr/local/include/python2.7
sudo ln -s /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ /usr/local/include/python2.7/numpy
配置Makefile.config
进入caffe目录
cp Makefile.config.example Makefile.config
vim Makefile.config
#去掉CPU_ONLY:=1的注释
#在PYTHON_INCLUDE下把
# /usr/lib/python2.7/dist-packages/numpy/core/include
#改为
# /usr/local/lib/python2.7/dist-packages/numpy/core/include
使用make caffe编译caffe,发现有一项错误,提示没有hdf5.h头文件,发现hdf5
.h文件的位置发生了变化,所以需要修改Makefile.config 94行,修改如下:
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
然后继续编译caffe:
make all
make test
make runtest
make pycaffe
一切顺利的话就已经配置好了caffe
但是此时在命令行输入python,然后输入import caffe还是显示找不到module,因为并没有把python的环境变量定位到/python/文件夹中,所以最后一步还需要添加环境变量:
gedit ~/.bashrc
在最后添加python的环境变量:
然后使之生效:
source ~/.bashrc
这样在任何目录下输入python之后import caffe module都不会报错了:
最后再装一下好用的jupyter notebook,用pip安装即可:
sudo pip install jupyter
配置完毕:
命令行输入:
jupyter notebook
即可调出notebook界面:
notebook是个交互式的python工具,功能很强大,详情见: