Ubuntu16.04系统中caffe环境配置

Ubuntu16.04系统中caffe环境配置

一、环境

  1. 系统Ubuntu16.04
  2. caffe
  3. python2和python3
  4. opencv3
  5. 运行环境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

猜你喜欢

转载自blog.csdn.net/duzhongqiang/article/details/113617199