Ubuntu16.04系统中caffe环境配置
一、环境
- 系统Ubuntu16.04
- caffe
- python2和python3
- opencv3
- 运行环境gpu,NVIDIA GTX960M
二、安装相关依赖项
1) sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
2) sudo apt-get install --no-install-recommends libboost-all-dev
3) sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
4) sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
三、安装NVIDIA驱动
3.1 下载NVIDIA驱动
(1) 首先去官网 http://www.nvidia.com/Download/index.aspx?lang=en-us 查看适合自己显卡的驱动并下载:
(2)我下载后的驱动文件是:NVIDIA-Linux-x86_64-440.82.run
3.2 安装驱动
1) 在终端下输入: sudo gedit /etc/modprobe.d/blacklist.conf
2) 输入密码后在最后一行加上 blacklist nouveau . 这里是将Ubuntu自带的显卡驱动加入黑名单。
3) 在终端输入: sudo update-initramfs -u
4) 重启电脑~
5) 这里要尤其注意,安装显卡驱动要先切换到文字界面,(按Ctrl+Alt+F1~F6).所以,启动电脑后,先进入文字界面
6) 然后,输入命令 sudo service lightdm stop
7) 现在可以安装驱动了,先进入家目录 cd ~ ,然后:
8) 执行sudo chmod 755 NVIDIA-Linux-x86_64-440.82.run(修改权限,否则无法访问)
9) 执行sudo ./ NVIDIA-Linux-x86_64-440.82.run -no-x-check -no-nouveau-check -no-opengl-files,按照提示一步步来~
-no-x-check 关闭服务
-no-nouveau-check 禁用nouveau
-no-opengl-files 不安装opengl文件(不加这个,安装后会循环在登录界面,无法进入图形界面)
10) 完成后,sudo update-initramfs -u,
11) sudo reboot
12) 安装完成之后输入以下指令进行验证: sudo nvidia-smi ,若列出了以下GPU的信息列表则表示驱动安装成功
四、安装CUDA
CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda
4.1下载CUDA
首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA
4.2安装
下载完成后执行以下命令:
1) sudo chmod 777 cuda_8.0.44_linux.run(输入自己下载的cuda文件名,因为软件要进行更新优化,所以过一段时间名字就会略有不同)
2) 安装:sudo ./cuda_8.0.44_linux.run
执行后,会出现进度0%,要一直按回车到100%,然后选择accept,选择是否安装nvidia367驱动时,一定要选择否:Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。
4.3配置环境变量
1) 打开~/.bashrc文件: sudo gedit ~/.bashrc
2) 将以下内容写入到~/.bashrc尾部:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
4.4测试CUDA的samples
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
如果显示一些关于GPU的信息,则说明安装成功
五、配置cuDNN
cuDNN是GPU加速计算深层神经网络的库
5.1下载cuDNN
首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载
5.2 下载cuDNN5.1之后进行解压
sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz
5.3 进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:
cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include #复制头文件
再将进入lib64目录下的动态文件进行复制和链接:
cd ..
cd lib64
sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
请注意,请到自己解压后的lib64文件夹看这个文件是否为libcudnn.so.5.0.5 ,电脑配置不同后面的数字型号不同,进行相应的修改,否则会报错。
5.4 安装完成后可用 nvcc -V 命令验证是否安装成功,若出现以下信息则表示安装成功:
六、安装 opencv3.1
6.1 进入官网 : http://opencv.org/releases.html , 选择 3.1.0 版本的 source , 下载 opencv-3.1.0.zip
6.2 首先安装依赖环境
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install --assume-yes libopencv-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev
6.3 安装
1) 解压unzip opencv-3.1.0.zip,有contribute文件解压后可以放在opencv目录下,contribute里面是一些库,比如人脸识别
2) 修改 ~/opencv/modules/cudalegacy/src/graphcuts.cpp文件内容
其中, #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000)
是我们修改的
3) 进入已解压的文件夹 opencv-3.1.0 目录下,执行:
mkdir build # 创建编译的文件目录
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
4) 这时会报错,把ippicv_linux_20151201.tgz 放到错误提示对应的路径
5) 重新cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
6) 编译:sudo make -j4 (j后面的数组时线程数)
7) 安装sudo make install
8) 安装完成后通过查看 opencv 版本验证是否安装成功:pkg-config --modversion opencv
9) 验证python2和python3,是否能够import cv2
七、安装caffe
7.1 首先在你要安装的路径下 clone
git clone https://github.com/BVLC/caffe.git
7.2 进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 :sudo cp Makefile.config.example Makefile.config(复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe)
7.3 然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:sudo gedit Makefile.config
修改 Makefile.config 文件内容:
1.应用 cudnn:# USE_CUDNN := 1 修改成: USE_CUDNN := 1
2.应用 opencv 版本 # OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3
3.使用 python 接口# WITH_PYTHON_LAYER := 1 修改为 WITH_PYTHON_LAYER:=1
4 #USE_OPENCV := 0 修改成 USE_OPENCV :=1
5 #USE_LEVELDB := 0 修改为 USE_LEVELDB:=1
6 #USE_LMDB := 0 修改位 USE_LMDB :=1
7. 修改 python 路径
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
7.4 然后修改 caffe 目录下的 Makefile 文件:
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
将:
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
7.5 然后修改 /usr/local/cuda/include/host_config.h 文件 :
将
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!(即注释)
7.6 make all -j4
7.7 这时可能会出错需要Caffe .build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0
执行
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
7.8 编译成功后可运行测试:sudo make runtest -j4
7.9 安装python-numpy(pip或者sudo apt-get install python-numpy),pip install -U scikit-image #若没有安装pip: sudo apt install python-pip
7.10 编译 pycaffe : cd caffe, sudo make pycaffe -j4
7.11 sudo apt-get install gfortran 安装 pip install protobuf
7.12 python2 中import caffe
8. 安装caffe3
caffe对python3的支持并不好,只支持python2.7,要安装python3执行
前面的修改保持不变
重新编译caffe前,可以通过更改caffe目录下的makefile.config文件:
# Uncomment to use Python 3 (default is Python 2)
#PYTHON_LIBRARIES := boost_python3 python3.5m
#PYTHON_INCLUDE := /usr/include/python3.5m \
# /usr/lib/python3.5/dist-packages/numpy/core/include
将上面的语句后三行的#号注释掉,如下:
# Uncomment to use Python 3 (default is Python 2)
PYTHON_LIBRARIES := boost_python3 python3.5m
PYTHON_INCLUDE := /usr/include/python3.5m \
/usr/lib/python3.5/dist-packages/numpy/core/include
创建一个libboost_python-py35.so的符号链接
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libboost_python-py35.so libboost_python3.so
如果没有boost这时就需要自己去安装一个:
sudo apt-get install libboost-all-dev
//头文件一般安装在
/usr/include
//下面有一个目录boost,里面是头文件。而库文件一般都放在
/usr/lib/x86_64-linux-gnu
//如何查看当前安装的boost版本
dpkg -S /usr/include/boost/version.hpp
//通过上面的命令,你就可以发现boost的版本了,查看结果可能如下:
libboost1.58-dev: /usr/include/boost/version.hpp
安装 pip install protobuf
编译make all -j4 , sudo make runtest -j4和上面一样的操作
安装python-numpy(pip或者sudo apt-get install python-numpy),pip install -U scikit-image #若没有安装pip: sudo apt install python-pip
编译 pycaffe : cd caffe, sudo make pycaffe -j4
测试python3 中import caffe