windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程

文章目录

  • 前言
  • 准备
    • --> 全过程会很久,做好心理准备
    • --> Tools:
  • 环境配置
    • 1. Anaconda3
    • 2. Visual Studio 2019
    • 3. CUDA10.1
      • ----> 安装:
      • ---> 测试
    • 4. tensorflow2.0
    • 5. tbb (Threading Building Blocks)
    • 6. cmake16
    • 7. opencv4.2.0(with_cuda)
      • --> 第一次configure
      • --> 第二次configure
      • --> 第三次configure
      • --> generate
      • --> VS2019——build&install
      • --> 完成

————————————————————————————————————

前言

这篇文章将会演示windows下详细的用VS2019+CUDA10.1+tensorflow2.0+tbb+opencv4.2.0(gpu——with_cuda)环境的配置全过程。如果按本文讲到的避坑方式做的话,应该是可以成功配置的,本文的配置顺序也是个人踩坑多年觉得最合适的路线,所以话不多说,直接开始。

准备

–> 全过程会很久,做好心理准备

注意:在全部配置过程之前,一定要确保环境是干净的(即下面要用到的工具没安装过,如果有一定要卸载干净,包括环境变量、注册表等)。

–> Tools:

  1. Anaconda3(python3.7):下载地址
  2. Visual Studio 2019:下载地址
  3. CUDA10.1:下载地址
  4. tensorflow2.0:下载链接
  5. tbb:下载地址
  6. cmake16:下载地址
  7. opencv-4.2.0 + opencv-conrtib-4.2.0:opencv下载地址 opencv-contrib下载地址

环境配置

1. Anaconda3

这个的安装过程就不详细讲了,因为没有太重要的点。下载好64位的exe文件后,双击打开按提示安装就好了,很简单。
ps:最后有一步有两个选项的(已安装好没截图了),第一个选项是是否添加环境变量,选上可以不用手动添加环境变量,第二个选项是python是否会被其他用到python的软件检测到,如果安装anaconda之前已经安装过python,可以不点,不然就要选上。
环境变量:
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第1张图片

2. Visual Studio 2019

这个的安装依旧不讲解,官网下载就好了,但是这里要求版本要 2019.3 以上,因为是要和后面的tensorflow.whl文件匹配下。
注意:如果没有 Microsoft Visual C++ Redistributable for Visual Studio 2019 的话 也要下载安装(exe文件,双击安装就行), 否则会出现下面的错误,安装好后就不会有这样的错误了,当然也有可能是cuda版本不对(这里应该是10.1)或cuda没安装的原因.

ImportError: DLL load failed: 找不到指定的模块。

Failed to load the native TensorFlow runtime.

下面是环境变量的添加(3个),可能不需要,但添加上应该没什么坏处吧:
VS2019的环境变量

3. CUDA10.1

这里稍微讲下cuda:
① VS2019支持cuda10.1/cuda10.2,但是VS2017支持的最高版本为cuda10.0。
TensorFlow2.0官方是只支持CUDA10.0(直接pip install tensorflow安装的话就要注意选用CUDA10.0版本了)的,但是这里选的CUDA10.1是因为下面安装的tf是大神从源码编译的,是只支持CUDA10.1(我安装的时候还不支持10.2)的,如果是安装其他的tf版本,也可以看看大神的github里的说明再选配置。

----> 安装:

(1)同意协议,选自定义安装
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第2张图片
如果已经有比cuda10.1更新的显卡driver驱动,就把下面三个选项去掉,只选第一个就行。
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第3张图片
安装路径,可以默认C盘,也可以自定义,然后下一步就开始安装了
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第4张图片
后面就下一步或关闭就可以完成安装了。
注意:安装完之后,可以添加cudnn库,下载对应版本,解压,然后把里面的文件复制到CUDA的安装目录下就可以了。
下面是环境变量的设置
① 如下图,绿色框框中的是安装完之后默认就添加的,红色框里的自己添加到系统变量中设置为变量, 注意下面的CUDA_SDK其实就是NVCUDASAMPLES_ROOT,一样的,自己仔细看看,最好不要直接复制。
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第5张图片
② 在 系统变量-path 中添加如下内容:
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第6张图片

—> 测试

打开samples目录,如 F:\NVIDIA GPU Computing Toolkit\CUDA Samples\v10.1, 双击打开Samples_vs2019.sln,第一次打开导入项目会比较久, 耐心等待一下,打开之后右键 1_Utilities 生成/重新生成
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第7张图片
成功生成后是下面这样的,这里也可能会报错:如果是 could not set up environment for …(balabalabala什么的),那就是环境问题,仔细查看自己的cuda环境变量是否正确,再次强调环境真的很重要。
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第8张图片
然后终端/shell进入这个目录中的bin文件夹,里面有个debug和release,生成时选的是哪个,就进入哪个目录,然后执行deviceQuery.exe和bandwidthTest.exe,看图操作,出现图中的结果就说明安装成功了, samples里面还有其他的例子,同理生成可测试。
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第9张图片
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第10张图片

4. tensorflow2.0

在安装tensorflow之前先检查下下面这些是否已经具备:
-> Visual Studio 2019.3或以上
-> Microsoft Visual C++ Redistributable for Visual Studio 2019
-> CUDA 10.1
-> 对应CUDA版本的cudnn
-> python3.7

前面的都弄好了之后就很简单了,在shell里cd进入下载好的whl文件目录,pip install 就好了,如下面演示:

# 进入whl文件下载的目录
cd F:\SetupFiles\tensorflow 2.0

# pip 安装cpu版的或者gpu版的
# pip install tensorflow-2.0.0-cp37-cp37m-win_amd64.whl
pip install tensorflow_gpu-2.0.0-cp37-cp37m-win_amd64.whl

注意:第一次执行tensorflow时,需要等待一段时间用于编译初始化

测试是否安装成功:

# 这里在shell中进入ipython测试
import tensorflow as tf
tf.test.is_built_with_cuda()
tf.test.is_gpu_available()

5. tbb (Threading Building Blocks)

一个用于并行进程的C++库,官方介绍:
Intel® Threading Building Blocks (Intel® TBB) is a widely used C++ library for shared memory parallel programming and heterogeneous computing (intra-node distributed memory programming). The library provides a wide range of features for parallel programming that include:
· Generic parallel algorithms
· Concurrent containers
· A scalable memory allocator
· Work-stealing task scheduler
· Low-level synchronization primitives
Use this library-only solution for task-based parallelism. It does not require any special compiler support and has ports to multiple architectures that include Intel® architectures and Arm*.

安装文件是个压缩文件,解压后设置一下环境变量就可以了:
tbb的环境变量

6. cmake16

进入下载地址,下载64位的msi文件,双击安装即可,自动添加环境变量。

7. opencv4.2.0(with_cuda)

注意:如果不需要支持cuda的opencv(一般是没有gpu的情况下),在cmake中(下面操作对应部分)取消勾选with_cuda即可。

下面进入需要编译三四个小时的gpu加速的opencv配置过程。。。。。。
(Linux其实是同样的编译过程的,如果没有install cmake-gui,那就用命令参数的方式选择,如果有GUI就同下)

–> 第一次configure

首先,打开cmake,添加源码目录,和需要存放build生成的文件的目录。
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第11张图片
点击configure后需要选择编译器,也就是VS2019 x64了,点finish之后就开始第一次configure了。
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第12张图片
第一次configure done之后,是一片红的,然后勾选下表中的的选项,勾选完之后点击configure。
(注意:如果configure的时间很长,且有红色信息输出,多半是ippicv、ffmpeg等文件下载不成功,解决办法请参考:传送门)

必选项 value
WITH_CUDA True
WITH_TBB True
OPENCV_EXTRA_MODULES_PATH F:/opencv_4.2.0/opencv_contrib-master/modules
OPENCV_ENABLE_NONFREE True
可选项 value
BUILD_DOCS True
BUILD_EXAMPLES True
INSTALL_C_EXAMPLES True
INSTALL_PYTHON_EXAMPLES True
BUILD_opencv_world True

(BUILD_opencv_world选项的作用是将所有lib文件融合为一个world.lib文件,我没选,个人觉得不同的模块都有对应名字的lib,这样比较好管理,出错也好排查)

–> 第二次configure

configure done之后,手动填入tbb的路径,如下。
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第13张图片
然后选一下cuda的computing capacity(好像这么叫的), 如下,例如我这里 RTX2080对应的就是7.5,设置完之后再次点击configure。
无需设置上面这个computing capacity,直接检查其他无误之后点击configure就可以了。

–> 第三次configure

这次就只有一个红色选项了,就是 TBB_VER_FILE,value是文件路径,一般自动填入的,检查一下有没有错误,没有就再次点击configure。
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第14张图片

–> generate

configure done之后,可以往上翻一翻,看看configure的信息是否正确,如果没有问题就点击左下方的第二个选项 Generate,生成之后输出 Generating done,到这里就完成了cmake的使命了,点击 Open Project 选项直接打开 OpenCV.sln项目了(如果没有点这个选项关闭了cmake,也可以在build目录下找到这个文件打开)。
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第15张图片

–> VS2019——build&install

打开 OpenCV.sln 之后,先找到 解决方案资源管理器-modules-opencv_core/opencv_cudacodec,先分别右键点击这两项生成,看看有没有什么错误,如果这两个可以生成,并不报错,那就是基本成功的了。
在这里插入图片描述
基本上是最后一步了:点击菜单栏 生成-批生成选中All_BUILD跟INSTALL,点击重新生成,就是漫长的等待编译完成的娱乐时间了。
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第16张图片
windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第17张图片

–> 完成

出现下面这图时,说明编译已经成功完成了。整个编译过程有很多很多的警告(C4819),是因为编译 ANSI 源文件上使用不能表示文件中的所有字符的代码页的系统时,所以出现 C4819。不用理会,不影响结果,只有没有error就没问题。
ps:编译过程中也有可能错误: 无法打开 python37_d.lib, 需要简单修改一下pyconfig.h文件,具体操作:解决办法。

windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第18张图片windows下详细配置VS2019+CUDA10.1+tensorflow2.0+tbb+gpu支持的opencv4.2.0(with_cuda)编译全过程_第19张图片

你可能感兴趣的:(机器视觉环境配置)