Ubuntu16.04安装.Flownet2.0 caffe 版本 教程【详细,从最最开始的装机之后开始】

花费了两天配置了Flownet2.0caffe版本,有的教程描述的含糊不清,我将我的实践过程记录在此,希望能帮助到更多的需要flownet2.0的小伙伴。

开始

1.Anaconda安装

首先装机成功后,或者电脑干净也行(没有其他caffe干扰,成功率高一些,我是从重新装Ubuntu16.04之后开始的),先装anaconda,如下图所示操作,等待下载完成即可。

下载完成后,找到下载位置,右击,选择在终端打开,在终端输入(过程如图)

bash Anaconda3-2019.03-Linux-x86_64.sh

根据提示按回车键阅读,注意按一次回车之后左下角会显示一个“--More--”,意思是许可信息还没显示完,一直按回车,直到最后许可信息显示完出现下面提示:

Please answer 'yes' or 'no':

然后终端输入:

yes

然后接下来会提示安装的路径,回车,剩下的一直回车即可。

到这里,Anaconda安装完成,检验一下:关闭当前的终端(一定要关闭再重新打开新的终端),如下图所示,在新终端中输入 : python,会出现Anaconda的标示,这样就成功了。

或者是这样,在前边多了个(base),base是系统默认的启动环境:

这时,也可以输入以下命令,查看当前有哪些环境。如图所示:

conda info --env

路径前的星号 * 表示当前处于什么环境,后边的路径是环境所在的路径,例如上图就是当前正处于base环境。

=======================================================================================

2.安装NVIDIA驱动

提供一种简单的安装方法:

终端输入以下命令,升级驱动:

sudo add-apt-repository ppa:graphics-drivers/ppa && sudo apt update

当终端出现以下内容时:

更多信息: https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa
按回车继续或者 Ctrl+c 取消添加

点一下 回车 继续,等待添加完成就行了。

这时,打开 设置-》 软件和更新-》附加驱动,选择...396这一项,点击 应用更改,等待一会,然后重启系统。

默认选择的应该是 X.Org X server - Nouveauy.... 这一项,这时需要选择NVIDIA的显卡驱动,选择跟我一样的选项就行,切记不要选择下图中的最后一项,编译老是出问题,也就是 ...384(专有)这一项不要选,其他的NVIDIA驱动应该都是可以的,避免出错还是跟我选一样的吧。

重启完成后,打开终端,输入以下命令,会显示你的显卡信息以及占用情况。如图。

nvidia-smi

这时,英伟达驱动已经安装成功了。

===================================================================================================

3.安装Cuda8.0(貌似Anaconda有简介安装,我没有尝试,你可以试试==.)

首先,下载cuda8.0 链接:https://developer.nvidia.com/cuda-80-ga2-download-archive

做如下选择,然后点击下方的 Download(1.9GB)。

等待下载完成后,打开下载位置。右击 在终端打开,依次输入以下五行命令。第三行可能会报错,公钥秘钥什么的不可用,不用管,继续就行,不影响。

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-key add /var/cuda-repo-8-0-local-ga2/7fa2af80.pub
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

执行完上述命令后,将路径加入到环境变量:终端输入

sudo gedit ~/.bashrc

在bashrc文件最后两行追加以下两行:

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存,在终端输入以下命令,使其生效。

source ~/.bashrc

安装 Persistence Daemon,终端输入:

/usr/bin/nvidia-persistenced --verbose

这个我也不是很懂,个人觉得不加这一句也没错,保险起见还是运行一下吧,我下方运行出错是因为之前运行过了,忽略即可。记得输入之后好像是没有什么反应。守护进程的作用,可以自己看一下:https://www.jianshu.com/p/8594c1afe380

这时,继续输入以下命令,会显示相应的cuda版本信息等,这样就表示安装成功了。

cat /proc/driver/nvidia/version && nvcc -V

此时,可以测试以下,再终端输入以下命令,会显示出相应的cuda信息,说明安装成功了。

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery

上图由于我编译过了,所以输入 make 的时候出现了Nothing to be done..

================================================================================================

4.安装Cudnn 5.1

点击这里下载:https://developer.nvidia.com/rdp/cudnn-archive,这个需要注册,不想注册的我给你提供一份:

链接: https://pan.baidu.com/s/1Jy4gYLPFE0XCb7J8MzK-eQ

提取码: spiv

复制这段内容后打开百度网盘手机App,操作更方便哦

滑到最下边,选择对应cuda8.0的cuDNN5.1版本,我们选择源码安装,而不是deb。

进入到下载文件夹中,右击选择“在终端中打开” ,依次输入以下命令:

tar -xzvf cudnn-8.0-linux-x64-v5.0-ga.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
cd  #退出文件夹即可

这时,不出意外,应该安装成功了,检验一下,输入:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

若出现了cudnn的版本,则安装成功了。

============================================================================================

5.使用Anaconda创建虚拟flownet2需要的环境

5.1创建python2.7的虚拟环境

依次在终端输入:

conda create -n flownet2 python=2.7   #创建环境
conda info --env #查看环境是否创建成功
conda activate flownet2  #激活环境


#####添加一些必要的库文件,追求宁滥勿缺。。。。
conda install scikit-image

pip install msgpack

sudo pip install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo pip install --no-install-recommends libboost-all-dev

sudo pip install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags cython ipython

sudo pip install protobuf-c-compiler protobuf-compiler

sudo pip install libatlas-base-dev1

sudo pip install libgflags-dev libgoogle-glog-dev liblmdb-dev

这时,输入python会发现是2.7版本(我们配置的flownet2.0需要这个版本)的,输入import cv2会报错,因为此时还没有安装opencv.....。

5.2 安装opencv和opencv-contrib

提供一个简单的安装方法,指定安装的版本,直接在终端输入:

pip install opencv-python==3.3.1.11
pip install opencv-contrib-python==3.3.1.11

pip下载速度慢的可以先停止安装,修改源进行加速,可以参考这篇文章:pip加速:https://blog.csdn.net/yucicheung/article/details/79095742

下边只是个图片====///////

下载安装完成后,我们可以测试一下,如图(安装opencv-contrib的没有截上,输入上边的命令行就行),输入python,然后引用cv2.不报错说明安装成功。

5.3下载编译flownet2.0

首先在home下新建一个文件夹:github,进入到github文件夹中,如图所示

继续输入以下命令,因为我下载过了就不截图了

git clone https://github.com/lmb-freiburg/flownet2
cd flownet2
cp Makefile.config.example Makefile.config  #复制一份配置文件

接下来就是修改配置文件了,很重要的一步,然后修改 Makefile.config 中文件中的 python 相关变量,终端输入以下命令,打开文件,按照以下文字部分修改即可。

sudo gedit Makefile.config

修改了以下几个地方

(1).取消USE_CUDNN:=1的注释(即把前边的#删掉)。

(2).取消OPENCV_VERSION := 3 的注释,取消CUDA_DIR的注释,换成自己的cuda路径,这个应该我们路径都一样。

(3).将CUDA_ARCH=...换成包含61的版本

(4).注释掉PYTHON_INCLUDE := /usr/include/python2.7 \这一行

(5).取消ANACONDA_HOME与它下方的PYTHON_INCLUDE(PYTHON_INCLUDE有三行注释,三个#号都要去掉)的注释,同时,将路径更换为自己的Anaconda 的ANACONDA_HOME与Python路径。其中ANACONDA_HOME路径可以通过输入以下命令查看。

conda info --env

(6).注释这一行: PYTHON_LIB := /usr/lib,打开这一行的注释:PYTHON_LIB := $(ANACONDA_HOME)/lib。并在下方添加一句
 LINKFLAGS := -Wl,-rpath,$(PYTHON_LIB)。

(7).取消  WITH_PYTHON_LAYER := 1  这一行的注释

(8).在 # USE_PKG_CONFIG := 1下方追加:LDFLAGS += -Wl,-rpath,$CUDA_DIR/lib64。

可能上述叙述有疏漏,你按照下边我的文件内容比对一下就行。

修改好了保存,关闭即可。

粘贴出我的文档供参考,见下方文字部分

::::::::::=======以下为我当时用的配置文件的内容=== 文字部分===============:::

## Refer to http://caffe.berkeleyvision.org/installation.html
# Contributions simplifying and improving our build system are welcome!

# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1

# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1

# uncomment to disable IO dependencies and corresponding data layers
# USE_OPENCV := 0
# USE_LEVELDB := 0
# USE_LMDB := 0

# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
#	You should not set this flag if you will be reading LMDBs with any
#	possibility of simultaneous read and write
# ALLOW_LMDB_NOLOCK := 1

# Uncomment if you're using OpenCV 3
OPENCV_VERSION := 3

# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
# CUSTOM_CXX := g++

# CUDA directory contains bin/ and lib/ directories that we need.
CUDA_DIR := /usr/local/cuda-8.0
# On Ubuntu 14.04, if cuda tools are installed via
# "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
# CUDA_DIR := /usr

# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 lines for compatibility.
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_61,code=sm_61 \
    -gencode arch=compute_61,code=compute_61

# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas

# Homebrew puts openblas in a directory that is not on the standard search path
# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
# BLAS_LIB := $(shell brew --prefix openblas)/lib

# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
# MATLAB_DIR := /usr/local
# MATLAB_DIR := /Applications/MATLAB_R2012b.app

# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
#PYTHON_INCLUDE := /usr/include/python2.7 \
#		/usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
ANACONDA_HOME := $(HOME)/.conda/envs/flownet2.0
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
		 $(ANACONDA_HOME)/include/python2.7 \
		 $(ANACONDA_HOME)/lib/python2.7/site-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

# We need to be able to find libpythonX.X.so or .dylib.
#PYTHON_LIB := /usr/lib
 PYTHON_LIB := $(ANACONDA_HOME)/lib
 LINKFLAGS := -Wl,-rpath,$(PYTHON_LIB)
# Homebrew installs numpy in a non standard path (keg only)
# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
# PYTHON_LIB += $(shell brew --prefix numpy)/lib

# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1

# 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

# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
# INCLUDE_DIRS += $(shell brew --prefix)/include
# LIBRARY_DIRS += $(shell brew --prefix)/lib

# Uncomment to use `pkg-config` to specify OpenCV library paths.
# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
# USE_PKG_CONFIG := 1
LDFLAGS += -Wl,-rpath,$CUDA_DIR/lib64
# N.B. both build and distribute dirs are cleared on `make clean`
BUILD_DIR := build
DISTRIBUTE_DIR := distribute

# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
# DEBUG := 1

# The ID of the GPU that 'make runtest' will use to run unit tests.
TEST_GPUID := 0

# enable pretty build (comment to see full commands)
Q ?= @

再修改一下Makefile 文件,终端输入:

sudo gedit Makefile

修改两个地方:

(1).修改LIBRARIES +=.......(大约在183行附近,点击某一行,在窗口的右下角会显示当前是几行几列,很方便)这一行为以下第一行内容

(2).修改NVCCFLAGS +=......(大约在410行附近)这一行为以下第二行内容

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

修改完成,保存关闭即可。

------编译安装pycaffe-----

继续终端输入:

make -j `nproc` all tools pycaffe

这一步可能会出现各种错误,我当时遇见了很多错误,有什么错误解决不了,可以在下边评论,我忘记记录了,有错误可以帮你回忆回忆。。。。解决解决。。。。。

如果没报错,那说明你编译成功。译成功之后, 将 pycaffe 加入 $PYTHONPATH 中

即输入sudo gedit ~/.bashrc,在文件最下方追加下边的内容:

export PYTHONPATH=:$PYTHONPATH:~/github/flownet2/python

配置环境, 每次使用 flownet2.0 时, 都要进行如下操作:(这一步是我抄的,不知道为啥这么做,我再使用的时候也并没有每次输入,你们随意吧。。。确保万一,还是输入一下吧)

source set-env.sh 

下一步,下载模型

输入:

cd models 
./download-models.sh 

下载可能慢一些,下载完成后进行测试:

为了方便,我们把测试图片copy到models文件夹下,目录换成你自己的:

cp /home/chiehwang/github/flownet2/data/FlyingChairs_examples/0000000-* /home/chiehwang/github/flownet2/models/

将 flownet2.0/script 目录加入 PATH 中, 便于我们任何目录下使用 script 下的脚本。命令行输入:

sudo echo export PATH=$PATH:"/home/wangbin/github/flownet2/scripts" >> ~/.bashrc

然后进入到models 文件夹下,测试。输入以下两行命令。

cd models
run-flownet.py FlowNet2/FlowNet2_weights.caffemodel.h5 FlowNet2/FlowNet2_deploy.prototxt.template  0000000-img0.ppm 0000000-img1.ppm 0000000-pre.flo

出现以下提示界面说明成功了。

(flownet2) chiehwang@chiehwang-ZHENGJIUZHE-REN7000-28ICB:~/github/flownet2/models$ run-flownet.py FlowNet2/FlowNet2_weights.caffemodel.h5 FlowNet2/FlowNet2_deploy.prototxt.template  0000000-img0.ppm 0000000-img1.ppm 0000000-pre.flo
Network forward pass using FlowNet2/FlowNet2_weights.caffemodel.h5.
Succeeded.

这时打开models文件夹,会看到输出文件0000000-pre.flo:

.flo文件没法直接打开,需要可视化工具,这里我就不写了,自己操作以下就能可视化出来正常的图片了,感兴趣的可以看这篇博客的下方:https://www.cnblogs.com/nowgood/p/FlowNet2_install.html。

完结,整理不易,喜欢的可以帮忙点个赞或者来个评论。

书写过程中,参考了以下几篇博客:

https://blog.csdn.net/QLULIBIN/article/details/80722788

https://www.cnblogs.com/nowgood/p/FlowNet2_install.html

发布了36 篇原创文章 · 获赞 25 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Kansas_Jason/article/details/95944320
今日推荐