sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev
sudo apt-get install libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential
下面进行cuda的安装:
按照Ubuntu16.04安装NVIDIA显卡驱动安装教程进行即可。
进入 官网 下载相应cuda版本,以cuda_8.0.61_375.26_linux.run为例。打开终端,运行如下指令:
sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libs
然后稍等片刻,提示当前信息为0%,按住enter键知道信息为100%,此时提示
Do you accept the previously read EULA?
输入accept;
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
由于按照第一步已经安装了驱动,此时输入n
Install the CUDA 8.0 Toolkit?
输入y
Do you want to install a symbolic link at /usr/local/cuda?
输入y
即可安装结束。
进官网下载相应版本,解压后得到名为cuda文件夹,包括include和lib。进入include执行:
sudo cp cudnn.h /usr/local/cuda/include/
进入lib执行:
sudo cp lib* /usr/local/cuda/lib64/ #复制所有库到usr内
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7 #删除原有库软链接
sudo ln -s libcudnn.so.7.1.10 libcudnn.so.7 #生成新软衔接
sudo ln -s libcudnn.so.7 libcudnn.so #生成新软链接
至此cuda安装结束,按照上述方法安装cuda9.1。
此时系统内存在两个cuda版本,可以在/usr/local下看到3个文件夹,分别为cuda,cuda-8.0,cuda-9.1。其中cuda文件夹是个软链接,查看它的属性即可知道目前它链接的版本,或者运行命令:
cat /usr/local/cuda/version.txt
也可以看到相关信息。
下载cuda.sh文件,运行如下指令,即可进行cuda版本切换:
sudo sh cuda.sh 9 1 切换成9.1版本
sudo sh cuda.sh 8 0 切换成8.0版本
进官网下载安装包后解压,以opencv3.0.0为例:进入解压目录,修改/modules/cudalegacy/src/graphcuts.cpp第45行:
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION>=8000)
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j
sudo make install
当然,不同版本问题不一样,欢迎交流。
进官网下载caffe源码,复制Makefile.config.example 文件该名为 Makefile.config,在caffe目录下打开该文件进行修改:
gedit Makefile.config
1)开启cudnn
去掉 #USE_CUDNN := 1 前面的#号,即取消注释
2)开启opencv
去掉 #OPENCV_VERSION := 3 前面的#号
3)开启python接口
去掉 #WITH_PYTHON_LAYER := 1 前面的#号
4)修改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
接着修改Makefile文件:
将NVCCFLAGS标志位改为
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
这样就可以进行编译了,执行:
make -j
到此caffe配置结束。
opencv和caffe在编译过程中都会遇到很多问题,主要是由于版本不一样,所依赖的库就不一样。后续在用caffe进行训练过程中,可以debug caffe中的每一句话,对于理解整个caffe框架都很有帮助。编译出现任何问题都可以在下留言哦,笔者该踩的坑都踩了。