ubuntu18.04 安裝tensoflow-gpu + opencv過程全記錄及問題解決

又到了搭環境的時候了,先讓我趴一會…

原因

因爲要跑論文代碼啊,readme給出的依賴項如下所示:

代碼依賴
這裏比較關鍵的就是python2.7(因爲ubuntu18.04只自帶python3,沒有python2,所以2要自己安裝)以及tensorflow。另外,在跑代碼的過程中發現有幾個個依賴項這裏沒有列出,分別是opencv,panda還有scipy.
panda用下面語句安裝即可,注意要在安裝完pip2之後安裝(請看安裝python2部分)

pip install pandas 

其他的庫,比如numpy等用這個指令也可以安裝,PIL注意一下包名是“pillow”, os模塊是python內置模塊,不需要安裝

安裝python

安裝python2以及對應版本的pip用下面兩個語句就ok。

sudo apt install python
sudo apt install python-pip

安裝tensorflow-gpu

這裏爲了使用GPU的優良性能,這裏我安裝tensorflow-gpu版本的,論文代碼readme中要求tensorflow1.2版本,不過只要是1.幾的版本都是向後兼容的,當前最新的穩定版就是1.10了,所以,果斷安裝這個版本。安裝之前要先確保安裝計算機有支持cuda的顯卡以及顯卡驅動已經安裝。
tensorflow1.10的配套cuda是9.0,cudnn就去官網下載相應的版本就ok,下面是安裝步驟

顯卡

首先確保自己電腦的顯卡支持cuda,用下面命令查看顯卡型號:

lspci | grep -i nvidia

這裏寫圖片描述
上圖是爲計算機終端輸出的結果,像我的顯卡型號就是GeForce GTX 1050 Ti。
有了型號時候到nvidia官網查詢,CUDA-Enabled Products列表中有的都可以嘍~
驅動安裝過程參考我的另一篇文章:ubuntu下安裝NVIDIA顯卡:問題解決記錄

安裝cuda

下載安裝

去官網下載啦,這裏我沒有放鏈接(後面可能會加上),麻煩看管百度或者google一下呦~
在這裏插入圖片描述
選上面這些選項,我下載的文件名是cuda_9.0.176_384.81_linux.run,放在~也就是home目錄下。
進入該目錄運行下面命令:

sudo chmod +x cuda_9.0.176_384.81_linux.run
sudo ./cuda_8.0.61_375.26_linux.run

安裝cuda的時候有可能會遇到報錯:cuda:Missing recommended library: libGLU.so,libX11.so,libXi.so,libXmu.so
參考文末第二條
接下來要選擇一些選項:
這裏注意Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?要選n
因爲顯卡驅動已經安裝過了這裏不能安裝。
Do you want to install a symbolic link at /usr/local/cuda?這個也選n
因爲後面,或許爲會安裝其他的cuda版本。其他是y或者默認就ok了。

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n

Do you wish to run the installation with 'sudo'?
(y)es/(n)o: y

Please enter your password: 
Do you want to install the OpenGL libraries?
(y)es/(n)o/(q)uit [ default is yes ]: 

Do you want to run nvidia-xconfig?
This will update the system X configuration file so that the NVIDIA X driver
is used. The pre-existing X configuration file will be backed up.
This option should not be used on systems that require a custom
X configuration, such as systems with multiple GPU vendors.
(y)es/(n)o/(q)uit [ default is no ]:  

Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
 [ default is /usr/local/cuda-9.0 ]: 

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n 

Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit: y

Enter CUDA Samples Location
 [ default is /home/linlf ]: /home/linlf/tools/cuda9.0

---------------------

本文來自 七爺OK 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/weixin_32820767/article/details/80421913?utm_source=copy 

添加環境變量

sudo gedit ~/.bashrc

在文件最後添加以下兩行:

export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH

保存文件,接着執行如下命令使路徑生效:

. ~/.bashrc

驗證

nvcc -V

如果輸出類似下圖中的信息則說明安裝成功~
在這裏插入圖片描述

安裝cudnn

NVIDIA官網下載
在這裏插入圖片描述
選擇Library for Linux得到一個tgz文件,我下載的文件的名字是cudnn-9.0-linux-x64-v7.1.tgz

tar -xzvf cudnn-9.0-linux-x64-v7.1.tgz 
sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*

ok了就~

安裝tensorflow-gpu

保險起見,還是執行以下下面命令,確保有pip

sudo apt-get install python-pip python-dev 

接着執行下面命令,安裝1.10.1版本的tensorflow-gpu,下面等號後的版本如果是一個不存在的版本號,比如55,終端會看到tensorflow-gpu目前已有的版本號。

pip install tensorflow-gpu==1.10.1

tensorflow-gpu目前有以下版本:

0.12.0rc0, 0.12.0rc1, 0.12.0, 0.12.1, 1.0.0, 1.0.1, 1.1.0rc0, 1.1.0rc1, 1.1.0rc2, 1.1.0, 1.2.0rc0, 1.2.0rc1, 1.2.0rc2, 1.2.0, 1.2.1, 1.3.0rc0, 1.3.0rc1, 1.3.0rc2, 1.3.0, 1.4.0rc0, 1.4.0rc1, 1.4.0, 1.4.1, 1.5.0rc0, 1.5.0rc1, 1.5.0, 1.5.1, 1.6.0rc0, 1.6.0rc1, 1.6.0, 1.7.0rc0, 1.7.0rc1, 1.7.0, 1.7.1, 1.8.0rc0, 1.8.0rc1, 1.8.0, 1.9.0rc0, 1.9.0rc1, 1.9.0rc2, 1.9.0, 1.10.0rc0, 1.10.0rc1, 1.10.0, 1.10.1, 1.11.0rc0, 1.11.0rc1, 1.11.0rc2

安裝opencv

下載以及安裝依賴項

如果你只想安裝python版本opencv,可以不用編譯,執行以下命令就行(如果提示缺包,可以參考下文依賴項,不過我在anaconda環境下直接安裝沒有問題。):

pip install opencv-python

然後後面是通過編譯安裝opencv,如果只安裝python版本(編譯的話,配置好可以c++也可以用)就可以跳過了。
這裏下載,如下圖,下載opencv-3.2.0.zip,這是目前(17年6月)的最新版,讀者看這篇文章的時候可能有更新.
這裏寫圖片描述
在安裝之前,我們要先安裝一些從這裏下載,如下圖,下載opencv-3.2.0.zip,這是目前(17年6月)的最新版,讀者看這篇文章的時候可能有更新.
這裏寫圖片描述
在安裝之前,我們要先安裝一些依賴包,命令行輸入下面命令:

sudo apt-get install build-essential
sudo apt-get install  libgtk2.0-dev libavcodec-dev libavformat-dev  libtiff5-dev  libswscale-dev libjasper-dev

配置configuration

好了,現在把下載的zip解壓,我解壓到home路徑下的.
命令行輸入已下命令進行安裝
1.進入opencv解壓的目錄,對於解壓到home路徑,就是cd opencv-3.2.0/
2.新建文件夾,用於存放編譯文件

mkdir release

3.進入文件夾並配置

cd release

或許需要安裝cmake

sudo apt install cmake

接着就是配置:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CUDA_GENERATION=Kepler CMAKE_INSTALL_PREFIX=/usr/local ..

遇到錯誤

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.

由於我安裝的是cuda9.0,9.0與opencv3.2有一些兼容問題。在用cmake配置的時候會出現一堆問題。xox
參考這裏,我就不粘貼過來了哈。
簡單說一下要找的文件的目錄,這裏我的opencv是放在home下的:

文件 目錄
FindCUDA.cmake ~/opencv-3.2.0/cmake
OpenCVDetectCUDA.cmake ~/opencv-3.2.0/cmake

對於OpenCVDetectCUDA.cmake文件,參考另一篇

set(__cuda_arch_bin "2.0 3.0 3.5 3.7 5.0 5.2 6.0 6.1") 

去掉2.0

按照上面參考改完相關文件之後再重新cmake就行。

編譯

make

下面是可能會遇到的錯誤,解決之後重新make就ok。

遇到錯誤

error: #error – unsupported GNU version! gcc versions later than 6 are not supported!

可以用gcc --verison 查看本機的gcc,我當時的版本是7.幾,但是報錯說gcc版本不能超過6,那就卸載之前的,重新安裝6.如果提示不行,先進入symbolic link所在的位置/usr/bin再試

sudo apt-get auto-remove gcc
sudo apt-get install gcc-6
sudo apt-get install g++-6
sudo ln -s g++-6 g++

最後一句是給g+±6添加鏈接,讓輸入g++直接能找到g+±6

error: calling a constexpr host function(“abs”) from a device function(“abs”) is not allowed. The experimental flag ‘–expt-relaxed-constexpr’ can be used to allow this.

如下圖所示:
在這裏插入圖片描述
參考ubuntu下安裝opencv,cuda9.0下文末。
找到文件opencv-3.2.0/modules/core/include/opencv2/core/cuda/vec_math.hpp
對vec_math.hpp做如下修改(把203行和205行的 ::abs 也註釋掉):

CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, /*::abs*/, uchar, uchar)
CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, ::abs, char, char)
CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, /*::abs*/, ushort, ushort)
CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, ::abs, short, short)

改爲

CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, /*::abs*/, uchar, uchar)
CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, /*::abs*/, char, char)
CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, /*::abs*/, ushort, ushort)
CV_CUDEV_IMPLEMENT_VEC_UNARY_FUNC(abs, /*::abs*/, short, short)

安裝及驗證

sudo make install

至此opencv安裝完畢.

這裏我在安裝的時候opencv的編譯過程比較慢,本人電腦大概用了1個小時.

python
import cv2

直接進python環境,import一下即可

參考

tensorflow-gpu的安裝主要是第4和第5兩個參考。
opencv的安裝參考爲6以後。

  1. cuda Error: unsupported compiler
  2. cuda:Missing recommended library
  3. cuda各種版本
  4. Ubuntu安裝Tensorflow(GPU版)
  5. ubuntu 同時安裝cuda8.0與cuda9.0,cuda9.1
  6. ubuntu下Atom環境搭建:c++ & opencv & curl & jsoncpp
  7. OpenCV3.3+CUDA9.0+Cmake3.9 環境搭建
  8. ubuntu下安裝opencv,cuda9.0下
  9. Ubuntu環境下如何安裝指定版本的Gcc,比如Gcc4.4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章