因为用了18.04 以及 opencv4 cuda10 一切都变了,尤其是caffe的安装
所以下来给出最新的,具体需要根据自身实际情况略加修改,比如相应的文件目录位置等,大体不变,主要参考的是linux公社的两篇博文,希望等帮到大家。
需要注意的是ubuntu18.04下显卡驱动的安装请参考https://blog.csdn.net/Haku_yyf/article/details/90260639
cuda推荐使用.run文件安装(别选驱动,因为我们已经手动安装了,会有冲突,其他默认接受就可以)
cudnn环境配置等还是参考我原来的方法:https://blog.csdn.net/Haku_yyf/article/details/83894110
#######################################################################################
sudo apt-get install libcanberra-gtk-module
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
安装完以后完成的测试代码没跑通,因为opencv版本的问题,api接口不对,看一下报错的文件,把对应文件中的代码用编译安装时候使用的sed命令(上面链接里面的几条sed命令)替换一下就可以了。完美运行测试程序。这已经是我第二次安装成功了,第一次是在16.04上,这次是18.04,但是这只是最原始的caffe,后面学习faster-rcnn等算法的时候,编译不通,我估计是因为opencv,cuda,g++等版本都太高了,这也是caffe的痛点,看起来使用起来简单,但要用别人的代码配置太痛苦了,除非是c/c++大神,而且还会cuda编程,就这也要看各个依赖库的版本吧,我是用不来,怪不得从16年之后就慢慢没落了,感觉研究研究源码还是有意义的,非要跑通部署这些真的算了。或者你觉得docker caffe这样搭配好用也可以,我简单看了下,没有深入研究。感觉现在无论tf, 还是pytorch感觉都有替代方案,不是说非要caffe。
加油↖(^ω^)↗
Ubuntu16.04系统
如果你之前已经编译安装过opencv请先卸载干净(卸载参考)
CUDA + cuDNN 请参考我之前的一篇博客(参考博客)#这里我已经安装了最新的CUDA10.0,以及相应的最新的cuDNN。
安装opencv依赖库
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev libopencv-dev
sudo apt install ffmpeg
安装caffe依赖库
(1) 安装最新的ZLIB库,因为编译caffe需要1.2.9以上的ZLIB库,Ubuntu16.04自带的版本低于这个版本,我们从源码安装最新的即可:
下载ZLIB源码(tar.gz)
编译安装ZLIB:
cd path/to/zlib #切换到解压后的安装文件目录
sudo ./configure
sudo make
sudo make install
(2)安装其他依赖包:
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 libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
从Github下载安装脚本:
git clone https://github.com/jayrambhia/install-opencv
安装:
cd Ubuntu
sudo chmod +x *
sudo ./opencv_latest.sh
静静的等它安装完成就可以了!
使用下面命令检查opencv版本
pkg-config --modversion opencv
(1)从Github下载caffe源码:
git clone https://github.com/BVLC/caffe
(2)修改Makefile.config:
因为make指令只能make Makefile.config文件,而源码里只给出了Makefile.config.example的示例文件。因此,首先应该将Makefile.config.example的内容复制到Makefile.config:
cd caffe
sudo cp Makefile.config.example Makefile.config
打开并修改配置文件:
sudo vim Makefile.config #打开Makefile.config文件,根据个人情况进行修改
a. 若使用cudnn, 则将
#USE_CUDNN:=1
修改成:
USE_CUDNN:=1
b. 因为我们安装的是最新的CUDA10.0,所以要设置CUDA_ARCH,将
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21\
这两行注释或者直接删除,注意注释后在第三行重新加上开头的 CUDA_ARCH :=
c. 若使用的opencv版本是3,则将
#OPENCV_VERSION:=3
修改为:
OPENCV_VERSION:=3
d. 若要使用python来编写layer,则将
#WITH_PYTHON_LAYER:=1
修改成:
WITH_PYTHON_LAYER:=1
e. 很重要的一项,将
#Whatever else you find you need goes here. 下面的
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
这是因为Ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径。
(3)修改Makefile文件
打开Makefile文件,做如下修改,将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC$(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
最后: 编辑/usr/local/cuda/include/host_config.h 将
#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!
改为:
//#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!
(4)编译
sudo make all -j4
(5) 测试
sudo make runtest
如果如图显示一片绿,那就说明配置成功了!
配置好caffe后,我们可以利用MNIST数据集对caffe进行测试,过程如下:
cd ~/caffe
下载数据
./data/mnist/get_mnist.sh
将数据转换为Lmbd数据库格式
./examples/mnist/create_mnist.sh
训练网络
./examples/mnist/train_lenet.sh
参考博客:https://blog.csdn.net/yggaoeecs/article/details/79163789