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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章