IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> RTX3060+Win10+cuda11.1+cuDNN8.0.4+Libtorch1.9.0+Opencv3.4.6+VS2019深度学习C++配置 -> 正文阅读

[人工智能]RTX3060+Win10+cuda11.1+cuDNN8.0.4+Libtorch1.9.0+Opencv3.4.6+VS2019深度学习C++配置

0前言

本博客旨在说明在显卡RTX3060+Win10(显卡RTX3080测试下来也可以)环境下,通过正确安装最新驱动+cuda11.1+cudnn8.0.4来配置深度学习环境,接着在VS2019上使用Libtorch1.9.0(C++版本深度学习框架)来做深度学习的开发任务,比如用C++来部署深度学习模型。

本博客的特点在于:
1.基本上将所有需要的操作都具体地交代了,包括一些可能出现的浪费时间的坑点,适合小白学习并快速上手;如果有已经做好或者会的部分(比如安装VS)请直接跳过。
2.在30系列显卡上来使用Libtorch1.9版本的配置教程,目前网上系统介绍的资料较少,本文尽量做到全面介绍。
3.本教程所有需要下载的安装包或者库都有两种下载方式:
第一种是说明如何在官网上找到对应的版本,自行下载;
第二种是可以直接从本人生成的百度网盘链接下载所需要的安装包。
提取码:6666
打包的文件夹如下图所示,勾选需要的安装包或者库保存下载。
所有安装包

我的环境配置:
显卡RTX3060
Windows10
驱动466.77
cuda11.1
cuDNN8.0.4
Opencv3.4.6
Libtorch1.9.0
Visual Studio Community2019

1检查显卡

搜索"设备管理器",在弹出的界面中点击显示适配器,看显示的是什么
如果显示当前读取到的显卡型号,那么说明显卡可以使用了。
在这里插入图片描述

如果显示的是下图的Microsoft 基本显示适配器
在这里插入图片描述

则说明驱动需要更新,需要安装最新的驱动
而驱动安装只需要记住一个原则:使用最新版本的驱动即可。
最新的驱动一定可以向下兼容。
本人提供的包:
找到466.77-desktop-win10-64bit-international-dch-whql,下载。

官网下载:
可以去NVIDIA官网下载最新驱动
比如RTX3060显卡+Win10,就选择如下图所示的配置
在这里插入图片描述
接着点击搜索,下载即可
在这里插入图片描述
点击466.77-desktop-win10-64bit-international-dch-whql
一路安装到底即可。
等安装成功后再次检查设备管理器的显示适配器,应该会显示当前读取到的显卡型号。

2下载、安装cuda11.1.0

2.1下载cuda11.1.0

本人提供的包:
找到cuda_11.1.0_456.43_win10.exe,下载。

官网下载:
建议百度搜索cuda11.1.0,会显示cuda11.1.0的下载地址,如下图所示。按照下图
在这里插入图片描述

建议不要从英伟达官网进去寻找cuda11.1.0,因为英伟达官网会显示最新版本的cuda(目前是11.3,以后应该会是更高的版本),不是所需要的历史版本,而安装太高的版本就可能需要更高版本的Libtorch。

2.2安装cuda11.1.0

点击cuda_11.1.0_456.43_win10,一路安装到底即可
在这里插入图片描述

PS:最后的界面Launch Samples可以不用勾选,直接关闭。
在这里插入图片描述

3下载、配置cuDNN8.0.4

3.1下载cuDNN8.0.4

个人建议这里直接使用本人网盘里的cuDNN压缩包,因为如果从英伟达官网下载的话需要登录,而且英伟达官网的速度比较慢,所以比较麻烦。
本人提供的包:
找到cudnn-11.1-windows-x64-v8.0.4.30.zip,下载。
在这里插入图片描述

官网下载:
先百度搜索cuDNN下载,进入英伟达官网的cuDNN界面
在这里插入图片描述

点击Download cuDNN,进入以下界面。
如果没有注册过的话先点击Join Now进行注册;如果注册过的话,点击Login来登录。
在这里插入图片描述

登陆上之后,进入以下界面,勾选I Agree To the Terms of the cuDNN Software License Agreement,会弹出Archived cuDNN Releases
在这里插入图片描述

点击Archived cuDNN Releases,在新的界面中找到对应cuda11.1的cudnn8.0.4版本,找到Win10对应的cuDNN Library,点击下载。
在这里插入图片描述

3.2配置cuDNN8.0.4

解压cudnn-11.1-windows-x64-v8.0.4.30文件

打开里面的文件,点击cuda,会有3个文件夹bin、include、lib
在这里插入图片描述

接着打开以下的路径:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1

然后把刚刚解压好的cudnn的3个文件夹bin、include、lib里面的文件分别复制到上面这个目录下对应的bin、include、lib里面去,复制完后应该要有下图所示的文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4确认cuda是否安装成功

键盘按Win+R
在这里插入图片描述

输入cmd,按回车,在弹出的界面输入nvcc -V
在这里插入图片描述

按回车,如果出现以下界面,则说明安装cuda11.1成功。在这里插入图片描述

5下载、安装Visual Studio2019

5.1下载VS2019

进入Microsoft Visual Studio官网
在这里插入图片描述
本人选择社区版本,下载。

5.2安装VS2019

接着安装VS2019,一路安装到底,直到出现以下界面的时候勾选"使用C++的桌面开发"和"Visual Studio扩展开发"。在这里插入图片描述在这里插入图片描述

6下载Opencv3.4.6

Tip:
Opencv版本如果使用太高的版本可能会不兼容,本人使用Opencv3.4.6没有报错。
本人提供的包:
找到opencv-3.4.6-vc14_vc15,下载,安装后生成opencv文件夹。

官网下载:
操作:
进入Opencv官网在Library一栏找到Releases,如下图所示:在这里插入图片描述
找到所需版本,点击Windows,就可以下载opencv-3.4.6-vc14_vc15.exe,点击后就可以生成opencv库。

7下载Libtorch1.9.0

Tip:
这里需要注意由于30系列显卡的关系,所需要的安装cuda就得在11以上,而较高的cuda版本就需要较高的Libtorch版本,具体的关系就需要去Pytorch官网上查看。
结论:
显卡型号决定cuda版本的下限,而cuda版本又决定了torch的库(不管是C++的Libtorch还是Python的Pytorch)是需要和cuda版本匹配的。
PS:
事实上本人在第一次直接在3060显卡上跑由Libtorch1.7.1开发的程序时死活就是没法加载到GPU上,直到后来想下载debug模式的库时候才想起来Libtorch有一个Compute Platform这个要求,所以这才注意到本人之前使用的Libtorch1.7.1是不支持cuda11.1的。

本人提供的包:
找到libtorch-win-shared-with-deps-1.9.0+cu111.zip,下载,解压。

官网下载:
Pytorch官网上可以查到目前Libtorch最新版本1.9.0可以有支持cuda11.1的版本,于是选择最新的这个Libtorch1.9.0的Release版本。在这里插入图片描述
下载,解压。

8VS配置Opencv和Libtorch

VS配置Opencv和Libtorch总共包括头文件,lib文件和dll文件。
操作:
1.打开VS2019,在界面上找到创建新项目,点击后在弹出的界面中,点击空项目在这里插入图片描述
点击右下角的下一步,接着在配置新项目的界面中,输入自己想取的项目名称名字和对应的位置在这里插入图片描述
再点击右下角的创建,这时会弹出项目界面,此时已经产生待会用于C++深度学习开发的项目了。

2.确定自己的编译模式(Debug/Release)和编译平台(x86/x64/Any Cpu)
本人使用的是Release+x64
Tip:
关于编译模式和编译平台的选择,可以参考这个链接

3.配置头文件
在项目界面找到右边的项目名称并右击,找到属性并点击在这里插入图片描述
在弹出的属性页中找到配置属性—>VC++目录
在包含目录中添加opencv和Libtorch的include路径,目的为了调用里面的h文件或者hpp文件
D:\opencv\build\include
D:\libtorch190cu111\include
D:\libtorch190cu111\include\torch\csrc\api\include
点击确定,再点击应用。

4.配置lib文件
还是在刚刚的属性页界面中找到配置属性—>VC++目录
在库目录中添加opencv和Libtorch的lib路径,目的是为了使用里面的lib文件来链接
D:\opencv\build\x64\vc14\lib
D:\libtorch190cu111\lib
(以下图示路径是本人的路径,请修改成自己的opencv和Libtorch的路径)在这里插入图片描述
接着继续在属性页中的左边点击链接器—>输入,点击附加依赖项, 编辑,
弹出的界面中添加opencv和Libtorch的lib路径下的lib文件名
opencv_world346.lib
asmjit.lib
c10.lib
c10d.lib
c10_cuda.lib
caffe2_detectron_ops_gpu.lib
caffe2_module_test_dynamic.lib
caffe2_nvrtc.lib
clog.lib
cpuinfo.lib
dnnl.lib
fbgemm.lib
libprotobuf-lite.lib
libprotobuf.lib
libprotoc.lib
mkldnn.lib
torch.lib
torch_cpu.lib
torch_cuda.lib
torch_cuda_cpp.lib
torch_cuda_cu.lib
此外还需要再加两行
/INCLUDE:?warp_size@cuda@at@@YAHXZ
/INCLUDE:?searchsorted_cuda@native@at@@YA?AVTensor@2@AEBV32@0_N1@Z
(本人是opencv_world346.lib,如果一开始选择了Debug模式就是opencv_world346d.lib)
在这里插入图片描述
这两行链接的作用是保证torch::cuda::is_available()返回True,不加的话有可能返回False
参考资料:
1.Torch::cuda::is_available return false in libtorch 1.5
2.libtorch 1.8.0 precompiled has no CUDA backend linked (Adding “-INCLUDE:?warp_size@cuda@at@@YAHXZ” no longer helps) #54131
至于上面两个链接怎么理解本人也不是很懂,希望有大佬能指出是如何理解的。
最后点击右下角的应用。

5.配置dll文件
配置dll文件可以使用3种方法:
a.将opencv和Libtorch需要调用的dll对应的路径(Opencv的D:\opencv\build\x64\vc14\bin和Libtorch的D:\libtorch190cu111\lib)放入系统环境变量中。
b.将opencv和Libtorch需要调用的dll文件复制到执行程序的当前目录下(本人选择的Release版本,所以就是复制编译通过后生成的D:\Libtorch_test\x64\Release的目录下)。
c.将opencv和Libtorch需要调用的dll对应的路径配置到VS中。
参考资料:
pytorch部署torchscript篇

本人平常由于工作需要,经常需要把做好的软件放到其他工控机上测试,所以会倾向于第二种直接复制dll文件的方式,否则的话放到新的机器上又需要重新配置,会比较麻烦和低效。
而如果是采用第二种方式的话需要在编译通过后生成包含exe的Release目录下去复制。
所以建议读者需要等到后面编译成功后复制dll文件,而此项目需要复制的dll文件包括以下:
在这里插入图片描述
在这里插入图片描述

9代码测试

1.新建cpp
项目—>源文件,右击—>添加—>新建项,弹出的界面如下,然后修改名称改为main.cpp,再点击右下角的添加
在这里插入图片描述
2.代码测试
这里主要测试Libtorch是否能正常使用,可以使用以下代码,如果返回的都是1说明配置成功了。

#include <iostream>
#include <torch/torch.h>

int main() {
    std::cout << "CUDA is available:" << torch::cuda::is_available() << std::endl;
    std::cout << "CUDNN is available:" << torch::cuda::cudnn_is_available() << std::endl;
    std::cout << "GPU counts:" << torch::cuda::device_count() << std::endl;
    return 0;
}

Tip:如果要复制代码到main.cpp的话,建议先复制到记事本里面,然后再复制到main.cpp,否则会出现以下提示,导致cpp文件不能调用Libtorch库。在这里插入图片描述
将代码放入main.cpp后先编译,具体操作是右击项目,点击重新生成,等待一会时间,如果出现全部重新生成:成功1个,失败0个,跳过0个,就说明编译成功。在这里插入图片描述
此时Release目录已经生成。在这里插入图片描述
接着将上面所需要复制的dll文件复制到当前的目录D:\Libtorch_test\x64\Release
然后回到项目界面,按F5运行程序,如果运行成功的话界面如下:在这里插入图片描述

10开源项目推荐

这里给出我师兄的一个Libtorch的开源项目
包含了图像分割从初始化模型、加载权重pt文件、训练模型和预测结果,是本人见到比较完整的Libtorch项目。
可以按照项目里的流程来学习如何使用Libtorch来做深度学习与图像处理的开发任务。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:17:35  更:2021-07-16 11:19:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:22:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码