caffe学习(2):ubuntu18.04安装caffe环境并编译—GPU环境

前提条件:

ubuntu18.04装nvidia440.33+cuda10.2+cudnnV7.65记录

确认编译器版本

首先确定系统所使用的gcc/g++/c++的版本,并且尽量和
“cat /proc/driver/nvidia/version”输出中的gcc版本保持一致。
在这里插入图片描述

查看系统安装了那些编译器版本:

查看系统gcc/g++/c++/cpp所在的目录

which gcc

在这里插入图片描述

查看编译器版本

  1. 查看gcc版本
ll -1 /usr/bin/gcc*

在这里插入图片描述

gcc -v

在这里插入图片描述
上图中的gcc软链接指向的是gcc-5,说明版本正确

  1. 查看g++版本
ll -1 /usr/bin/g++*

在这里插入图片描述

  1. 查看c++版本
ll -1 /usr/bin/c++*

在这里插入图片描述

  1. 查看cpp版本
ll -1 /usr/bin/cpp*

在这里插入图片描述

  1. 如果所需要的编译器版本不存在,则可以安装相应的编译器,安装方法如下:参考文档:https://www.cnblogs.com/L-Arikes/p/3734382.html
sudo apt-get gcc-7
sudo apt-get g++-7

安装anaconda2

实际过程中anaconda2装了导致我之后caffe环境搭不起来。所以建议anaconda2不用装。

参考:

https://docs.anaconda.com/anaconda/install/linux/

安装依赖项

apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6

下载安装程序:

下载网址:https://www.anaconda.com/distribution/#download-section
我挑选了python2.7的版本
在这里插入图片描述
点击图标就能下载。
我这边是windows下载好,然后用FileZilla传到ubuntu的用户根目录下。
在这里插入图片描述

安装

打开终端:

sha256sum /path/filename

bash ~/Anaconda2-2019.10-Linux-x86_64.sh
在这里插入图片描述
按回车。需要输入yes得时候输入yes。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意以上默认安装地址。按回车开始安装。
在这里插入图片描述
输入yes。
在这里插入图片描述
安装完成。
打开终端使命令生效:

source ~/.bashrc

控制每个shell会话都默认激活基本环境:

conda config --set auto_activate_base True

控制每个shell会话都不默认激活基本环境:

conda config --set auto_activate_base False

验证安装

验证方法一:如果安装完成并运行,输入以下命令会出现安装软件包和其版本列表:

conda list

在这里插入图片描述
验证方法二:
命令行输入:

python

能用quit()退出python
在这里插入图片描述
验证方法三:
命令行输入能打开anaconda-navigator:

anaconda-navigator

安装opencv3.4.6

安装依赖

参考:

官网:https://docs.opencv.org/3.4.6/d7/d9f/tutorial_linux_install.html
https://stackoverflow.com/questions/25726768/opencv-3-0-trouble-with-installation
https://www.jb51.net/article/149193.htm
https://blog.csdn.net/csdn_elsa/article/details/80025019
https://blog.csdn.net/yaoweijiao/article/details/51332598
https://blog.csdn.net/u010942902/article/details/88411057
https://blog.csdn.net/JackSparrow_sjl/article/details/81911855

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

报错:OpenCv依赖包libjasper-dev无法安装
解决办法:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

成功的解决了问题,其中第一条命令使/etc/apt/sources.list文件中多了一行。其中libjasper1是libjasper-dev的依赖包。
在这里插入图片描述

下载资源包

我去https://opencv.org/releases/page/4/网址下载opencv3.4.6版本,点Sources。

在这里插入图片描述下载下来是个zip文件,然后传到ubuntu用户根目录,并解压出现opencv-3.4.6目录。

cmake配置

进入opencv-3.4.6目录下:

mkdir build
cd build
sudo apt install cmake-curses-gui #安装cmake图形界面配置工具
ccmake .. #图形化配置,根据提示来
  1. 按c进行初试配置configure。

在这里插入图片描述
报错!!依次根据提示解决错误:在这里插入图片描述
因为连不上外网,无法下载ippicv_2019_lnx_intel64_general_20180723.tgz
解决办法:自己下载ippicv_2019_lnx_intel64_general_20180723.tgz,然后传到opencv/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b/ 目录下即可。
也可以不用管这个问题,只是配置的opencv的少了这个相关的功能。
然后出现如下界面:
在这里插入图片描述

  1. 设置参数

找到如图参数,是指opencv编译后install路径,默认/usr/local。也可以自己设置。我自己在opencv-3.4.6目录下创建了opencv346目录。
在这里插入图片描述
输入后重新configure,并generate

编译安装

然后在build目录下make all -j8,完成后make install。opencv就装好了。

装python_opencv

/home/jqy/opencv/open346/lib/python2.7/dist-packages/cv2/python-2.7/cv2.so拷到/usr/local/lib/python2.7/dist-packages目录下,python即可使用opencv。
在这里插入图片描述

查看

pkg-config --modversion opencv #查看opencv版本

在这里插入图片描述
这里显示了系统自带的opencv,这个在我之后的实验中发现不好用,所以自己下了一个3.4.6版本的,我可以很清楚opencv装了什么,至于版本opencv3的都行。
在~/.bashrc中输入:注意PATH是从左向右读,所以要写在$PATH前才能让自己下载的opencv3.4.6先调用。

export PATH="/home/jqy/opencv/open346/bin:$PATH"
export PKG_CONFIG_PATH="/home/jqy/opencv/open346/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="/home/jqy/opencv/open346/lib:$LD_LIBRARY_PATH

PKG_CONFIG_PATH是之后caffe的Makefile.config中取消#USE_PKG_CONFIG :1注释后调用路径。
这样之后caffe会先调用opencv3.4.6。

安装Protocol

参考:

https://github.com/protocolbuffers/protobuf
https://github.com/protocolbuffers/protobuf/tree/master/src
https://github.com/protocolbuffers/protobuf/tree/master/python

安装依赖

sudo apt-get install autoconf automake libtool curl make g++ unzip

获取安装包:

到https://github.com/protocolbuffers/protobuf/releases下载all版本的protobuf-all-3.11.1.zip
protobuf-cpp-3.11.1.zip传到ubuntu上并解压。

unzip protobuf-all-3.11.1.zip
cd protobuf-3.11.1 #进入根目录

构建和安装C ++ Protocol Buffer运行时和Protocol Buffer编译器(protoc):

./configure --prefix=/usr/local #修改安装路径为/usr/local,默认也是这个
make
make check

make和make check的时候都报了warning,但不知道怎么处理,先没管。
最后make check成功。
在这里插入图片描述

python部分

cd python
python -V #检查python版本,要2.7以上
protoc --version #需要已经完成构建和安装C ++ Protocol Buffer运行时和Protocol Buffer编译器(protoc)
python setup.py build #编译
python setup.py test #测试
cd .. #回到protobuf-3.11.1根目录
sudo make install

在这里插入图片描述
库文件装在/usr/local/lib

刷新共享库缓存

sudo ldconfig # refresh shared library cache.

报错:
在这里插入图片描述

cd /usr/local/cuda/lib64
sudo mv libcudnn.so.7 libcudnn.so.7.bak
sudo ldconfig

在这里插入图片描述变成了在这里插入图片描述

protoc --version #显示版本

在这里插入图片描述成功安装!!!

编译依赖包

要编译使用协议缓冲区的软件包,您需要将各种标志传递给编译器和链接器。从2.2.0版开始,协议缓冲区与pkg-config集成在一起来管理该协议。如果安装了pkg-config,则可以调用它来获取标志列表,如下所示:

pkg-config --cflags protobuf         # print compiler flags
pkg-config --libs protobuf           # print linker flags
pkg-config --cflags --libs protobuf  # print both

在这里插入图片描述

caffe安装

注意:以下步骤其实我后来跑实验的时候没跑通,后来改了其他办法。这边只是记录。
在https://github.com/BVLC/caffe下载caffe包,并解压。
在caffe目录下:

cp Makefile.config.example Makefile.config

make all

make all

会报错缺少hdf5路径,打开makefile.config添加需要的库路径:
在这里插入图片描述
解决:

# Whatever else you find you need goes here.
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/hdf5/serial

重新make all,继续报错:
在这里插入图片描述
解决:
Makefile.config中CUDA_ARCH 设置未按规定设置:
下面两行删除就行:

-gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \

Makefile.config其他部分如下:

USE_CUDNN := 1
# USE_OPENCV := 0  #注意这个默认是1,不取消注释表示使用OPRNCV
OPENCV_VERSION := 3
CUDA_DIR := /usr/local/cuda
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
                -gencode arch=compute_35,code=sm_35 \
                -gencode arch=compute_50,code=sm_50 \
                -gencode arch=compute_52,code=sm_52 \
                -gencode arch=compute_60,code=sm_60 \
                -gencode arch=compute_61,code=sm_61 \
                -gencode arch=compute_61,code=compute_61
BLAS := atlas
PYTHON_INCLUDE := /usr/include/python2.7 \
                /usr/lib/python2.7/dist-packages/numpy/core/include
PYTHON_LIB := /usr/lib /usr/local/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/hdf5/serial
USE_PKG_CONFIG := 1  #注意,在~/.bashrc中得加入PKG路径,以上OPENCV部分已经讲
BUILD_DIR := build
DISTRIBUTE_DIR := distribute
TEST_GPUID := 0
Q ?= @

make test

make test

报错:
在这里插入图片描述
修改了181行:

在这里插入图片描述
修改了425行:
在这里插入图片描述

在这里插入图片描述
修改了Makefile271行左右的内容:加了boost_regex
在这里插入图片描述
LIBRARIES添加boost_regex。
添加完以后make clean,会把刚刚make all和make test的编译文件都清空。
重新编译:

make all -j8 #开启8个进程编译,编译更快
make test -j8
make runtest -j8

一切成功!!!!!!!!

make pycaffe

要想在python中import caffe要采取以下步骤。注意我这边python默认为python2.7,pip默认为python2.7版本。python怎么默认2.7和pip怎么默认2.7,我暂时忘记了,之后补上。

make pycaffe # 这步在caffe跟目录下
cd python
for req in $(cat requirements.txt); do sudo pip install $req; done #pip装的依赖是在/usr/local/lib/python2.7/dist-packages中

在这里插入图片描述
安装依赖出现报错,它默认装python-dateutil-1.5,然后这个版本不兼容,需要修改requirements.txt中python-dateutil>=1.4<2改为python-dateutil,这样默认会安装最新版本。这个坑也是个神坑!!!
然后需要在~/.bashrc中输入入export PYTHONPATH="/home/jqy/jqy_caffe/caffe-gpu/caffe/python:$PYTHONPATH"导入python使用的caffe路径。
检测是否import caffe成功:
在这里插入图片描述
成功!!!

查看caffe

在这里插入图片描述
tools下:
在这里插入图片描述
test下:
在这里插入图片描述
examples下:
在这里插入图片描述

整体总览

我的/.bashrc如下
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值