ubuntu18.04 安装tensoflow-gpu + opencv过程全记录及问题解决

又到了搭环境的时候了,先让我趴一会…

ubuntu18.04 安装tensoflow-gpu + opencv过程全记录及问题解决

  • 原因
  • 安装python
  • 安装tensorflow-gpu
    • 显卡
    • 安装cuda
      • 下载安装
      • 添加环境变量
      • 验证
    • 安装cudnn
    • 安装tensorflow-gpu
  • 安装opencv
    • 下载以及安装依赖项
    • 配置configuration
      • 遇到错误
        • CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
    • 编译
      • 遇到错误
        • error: #error -- unsupported GNU version! gcc versions later than 6 are not supported!
        • 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.
    • 安装及验证
  • 参考

原因

因为要跑论文代码啊,readme给出的依赖项如下所示:

ubuntu18.04 安装tensoflow-gpu + opencv过程全记录及问题解决_第1张图片
这里比较关键的就是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一下呦~
ubuntu18.04 安装tensoflow-gpu + opencv过程全记录及问题解决_第2张图片
选上面这些选项,我下载的文件名是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官网下载
ubuntu18.04 安装tensoflow-gpu + opencv过程全记录及问题解决_第3张图片
选择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月)的最新版,读者看这篇文章的时候可能有更新.
ubuntu18.04 安装tensoflow-gpu + opencv过程全记录及问题解决_第4张图片
在安装之前,我们要先安装一些从这里下载,如下图,下载opencv-3.2.0.zip,这是目前(17年6月)的最新版,读者看这篇文章的时候可能有更新.
ubuntu18.04 安装tensoflow-gpu + opencv过程全记录及问题解决_第5张图片
在安装之前,我们要先安装一些依赖包,命令行输入下面命令:

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.

如下图所示:
ubuntu18.04 安装tensoflow-gpu + opencv过程全记录及问题解决_第6张图片
参考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

你可能感兴趣的:(环境,TensorFlow,linux,深度学习,Python)