TensorRT部署-Windows环境配置

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、安装Visual Studio (2019)
  • 二、下载和安装nvidia显卡驱动
  • 三、下载CUDA
  • 四、下载安装cuDNN
  • 五、安装Anaconda
  • 六、TensorRT安装
  • 七、安装Opencv
  • 八、Cmake 配置
  • 总结


前言

TensorRT部署-Windows环境配置


一、安装Visual Studio (2019)

建议安装2019版本,不然容易和cmake版本不匹配。

下载链接:https://visualstudio.microsoft.com/zh-hans/downloads/

注意:安装时可勾选“Python开发”和“C++开发”

二、下载和安装nvidia显卡驱动

首先要在设备管理器中查看你的显卡型号。打开设备管理器,在显示适配器下查看,如下RTX3050。
在这里插入图片描述
NVIDIA 驱动下载:https://www.nvidia.cn/Download/index.aspx?lang=cn
在这里插入图片描述

下载安装完成之后在cmd中输入执行

nvidia-smi

如果出现以下显卡信息,说明安装成功。在这里插入图片描述
注:图中的 CUDA Version是当前Driver版本能支持的最高的CUDA版本,不是已经安装的版本

三、下载CUDA

cuda下载地址:https://developer.nvidia.com/cuda-downloads?target_os=Windows
在这里插入图片描述

旧版本的CUDA地址:https://developer.nvidia.com/cuda-toolkit-archive
在这里插入图片描述

我的版本是11.6
查看cuda版本命令

nvcc --version

在这里插入图片描述
将cuda运行安装,建议默认路径,安装完成后设置环境变量,系统变量里增加CUDA_PATH和CUDA_PATH_V11_8两个环境变量。
在这里插入图片描述

四、下载安装cuDNN

cudnn下载地址:https://developer.nvidia.com/cudnn(记得先登录nvidia账号)

我的cuDNN版本是cuDNN v8.9.6,查看cuDNN方法如下

先进入C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include,查找include下的
cudnn_version.h文件。

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 6

里面的这个就代表是8.9.6版本
就版本下载地址:https://developer.nvidia.com/rdp/cudnn-archive
在这里插入图片描述
选第一个zip的就行。

安装cuDNN

复制cudnn文件

对于cudnn直接将其解开压缩包,然后需要将bin,include,lib中的文件复制粘贴到cuda的文件夹下
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6。

注意:对整个文件夹bin,include,lib选中后进行复制粘贴

五、安装Anaconda

下载地址:https://www.anaconda.com/
直接安装即可

安装好之后打开Anaconda Prompt,创建虚拟环境。

conda create -n mypytorch python=3.9

安装完成后激活环境

conda activate mypytorch

在所创建的mypytorch环境下安装pytorch, 执行命令

conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia

六、TensorRT安装

官网教程:https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html

下载安装包:https://developer.nvidia.com/tensorrt

在这里插入图片描述
在这里插入图片描述
我下的是8.6.1.6,接下来按照以下步骤配置一下就行。

  1. 将下载的压缩文件拷贝进来解压
  2. 解压得到TensorRT-8.6.1.6的文件夹,将里边的lib绝对路径添加到环境变量Path中,即 D:\TensorRT-TensorRT-8.6.1.6\lib
  3. 将TensorRT解压位置 D:\TensorRT-TensorRT-8.6.1.6\lib下的所有dll文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin目录下

如果要使用python接口的tensorrt,则需要安装pycuda。
先进入刚刚创建的虚拟环境,在mypytorch虚拟环境下执行:

pip install pycuda

测试TensorRT示例代码

  1. 配置VS2019
    用VS2022打开sampleMNIST示例sln文件: D:\TensorRT-8.6.1.6\samples\sampleOnnxMNIST
    在这里插入图片描述
    a. 将D:\TensorRT-8.6.1.6\lib加入 项目->属性->VC++目录–>可执行文件目录
    在这里插入图片描述
    b.将D:\TensorRT-8.6.1.6\lib加入 VC++目录–>库目录
    在这里插入图片描述
    c. 将D:\TensorRT-8.6.1.6\include加入C/C++ --> 常规 --> 附加包含目录
    在这里插入图片描述

d.将nvinfer.lib、nvinfer_plugin.lib、nvonnxparser.lib和nvparsers.lib加入链接器–>输入–>附加依赖项,再添加这个D:\TensorRT-8.6.1.6\lib*.lib
在这里插入图片描述
在这里插入图片描述
配置完成后,点击上面的生成->生成解决方案进行编译
在这里插入图片描述

七、安装Opencv

下载地址:https://opencv.org/releases/
我下的是4.7,安装后记得配置系统环境变量,D:\opencv\build\x64\vc16\bin
在这里插入图片描述

八、Cmake 配置

下载tensorrtx https://download.csdn.net/download/m0_70420861/88754757spm=1001.2014.3001.5503
修改CMakeLists.txt,根据自己电脑上的软件位置和GPU架构做相应的修改。如下,改了opencv和Tensorrt的地址还有这个set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-std=c++11;-g;-G;-gencode;arch=compute_86;code=sm_86)架构,查一下自己的是不是86

cmake_minimum_required(VERSION 3.10)

project(yolov8)

add_definitions(-std=c++11)
add_definitions(-DAPI_EXPORTS)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Release)

#change to your own path
##################################################
set(OpenCV_DIR "D:/opencv/opencv/build")
set(TRT_DIR "D:/TensorRT/TensorRT-8.6.1.6")
##################################################

# setup CUDA
find_package(CUDA REQUIRED)
message(STATUS "    libraries: ${CUDA_LIBRARIES}")
message(STATUS "    include path: ${CUDA_INCLUDE_DIRS}")
include_directories(${CUDA_INCLUDE_DIRS})
include_directories(${Dirent_INCLUDE_DIRS}) 

#change to your GPU own compute_XX
###########################################################################################
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-std=c++11;-g;-G;-gencode;arch=compute_86;code=sm_86)
###########################################################################################

####
enable_language(CUDA)  # add this line, then no need to set up cuda path in vs
####

include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${TRT_DIR}/include)
include_directories(${TRT_DIR}/samples/common)

include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/plugin)
link_directories(${TRT_DIR}/lib)


add_library(myplugins SHARED ${PROJECT_SOURCE_DIR}/plugin/yololayer.cu)
target_link_libraries(myplugins nvinfer cudart)

find_package(OpenCV)
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

include_directories(${OpenCV_INCLUDE_DIRS})


file(GLOB_RECURSE SRCS ${PROJECT_SOURCE_DIR}/src/*.cpp ${PROJECT_SOURCE_DIR}/src/*.cu)
add_executable(yolov8 ${PROJECT_SOURCE_DIR}/main.cpp ${SRCS})

target_link_libraries(yolov8 nvinfer)
target_link_libraries(yolov8 cudart)
target_link_libraries(yolov8 myplugins)
target_link_libraries(yolov8 ${OpenCV_LIBS})

安装cmake:https://cmake.org/

  • 执行cmake-gui来配置project
  • 点击 Configure并设置环境
  • 点击Finish,等待Configure done
  • 点击Generate并等待Generate done
  • 点击Open Project

在这里插入图片描述

总结

学习笔记–TensorRT部署-Windows环境配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/329946.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SDCMS靶场通过

考察核心:MIME类型检测文件内容敏感语句检测 这个挺搞的,一开始一直以为检查文件后缀名的,每次上传都失败,上传的多了才发现某些后缀名改成php也可通过,png图片文件只把后缀名改成php也可以通过,之前不成功…

新版网易全套识别验证

认真往下看,保证这篇文章B格拉满!!!! 距离上次版本更新已经过去好久了,当时只做了滑块,后面朱哥发了一套网易完整版的给我,完事儿也没来得及去看就更新了。 先盘点一下这次更新都做了…

Docker本地私有仓库搭建配置指导

一、说明 因内网主机需要拉取镜像进行Docker应用,因此需要一台带外主机作为内网私有仓库来提供内外其他docker业务主机使用。参考架构如下: 相关资源:加密、Distribution registry、Create and Configure Docker Registry、Registry部署、D…

LabVIEW图像识别检测机械零件故障

项目背景: 在工业生产中,零件尺寸的准确检测对保证产品质量至关重要。传统的人工测量方法不仅耗时费力,精度低,还容易导致零件的接触磨损。为了解决这些问题,开发了一套基于LabVIEW和机器视觉的机械零件检测系统。该系…

UML-活动图

提示:大家可以参考我的状态图博客 UML-活动图 一、活动图的基本概念1.开始状态和结束状态2.动作状态和活动状态(活动)3.分支与合并4.分叉与合并5.活动转换(1)转移(2)判定 6.泳道 二、活动图的例…

Django REST Framework入门之序列化器

文章目录 一、概述二、安装三、序列化与反序列化介绍四、之前常用三种序列化方式jsonDjango内置Serializers模块Django内置JsonResponse模块 五、DRF序列化器序列化器工作流程序列化(读数据)反序列化(写数据) 序列化器常用方法与属…

flink 最后一个窗口一直没有新数据,窗口不关闭问题

flink 最后一个窗口一直没有新数据&#xff0c;窗口不关闭问题 自定义实现 WatermarkStrategy接口 自定义实现 WatermarkStrategy接口 代码&#xff1a; public static class WatermarkDemoFunction implements WatermarkStrategy<JSONObject>{private Tuple2<Long,B…

oracle篇—19c新特性自动索引介绍

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

【python】学习笔记01

一、基础语法 1. 字面量 - 什么是字面量&#xff1f; 在代码中&#xff0c;被写下来的的固定的值&#xff0c;称之为字面量。 - 常用的值类型 Python中常用的有6种值&#xff08;数据&#xff09;的类型。 666 13.14 "程序员"print(666) print(13.14) print(&qu…

前端面试题-html5新增特性有哪些

HTML html5新增特性有哪些 1.新增了语义化标签 标签用法header定义文档或区块的页眉&#xff0c;通常包含标题&#xff0c;导航和其他有关信息nav定义导航链接的容器&#xff0c;用于包裹网站的导航部分section定义文档的一个独立节或区块&#xff0c;用于组织相关的内容art…

前端框架前置学习Webpack(1) 常用webpack配置

什么是Webpack? 定义 本质上,Webpack是用于现代JavaScript应用程序的静态模块打包工具.当webpack处理应用程序时,它会在内部从一个或多个入口点构建一个依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个bundles,它们均为静态资源,用于展示你的内容.…

web开发学习笔记(6.element ui)

1.安装 2.在app.vue中引入ElementView中的内容 3.表格控件&#xff0c;当页大小发生变化&#xff0c;当当前页发生变化 4.对话框组件 5.将form表单中的数据打印出来 6.当遇到日期选择器得到的数据为昨日时&#xff0c;应该加入 value-format"yyyy-MM-dd"即可避免这个…

子类的构造函数和析构函数调用顺序

看代码&#xff1a; class A { public:A() { cout << __FUNCTION__ << endl; }~A() { cout << __FUNCTION__ << endl; } };class B { public:B() { cout << __FUNCTION__ << endl; }~B() { cout << __FUNCTION__ << endl; …

vue 指定区域可拖拽的限定拖拽区域的div(如仅弹窗标题可拖拽的弹窗)

<template><div class"container" ref"container"><div class"drag-box" v-drag><div class"win_head">弹窗标题</div><div class"win_content">弹窗内容</div></div><…

系统配置dns主从服务器

一、准备两台主机&#xff0c;区分主从 二、完全区域传送 1、主DNS服务器配置 #安装相关的包 [rootoula1 ~]# yum install bind -y#关闭防火墙 [rootoula1 ~]# systemctl stop firewalld [rootoula1 ~]# setenforce 0#修改配置主文件 [rootoula1 ~]# vim /etc/named.conf opt…

java大数据hadoop2.9.2 Java编写Hadoop分析平均成绩

1、准备文件&#xff0c;例如score.txt&#xff0c;内容如下&#xff1a; zs k1 88 ls k1 98 ww k1 78 zs k2 88 ls k2 98 ww k2 78 zs k3 88 ls k3 98 ww k3 78 2、创建maven项目 <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common --><d…

【软件测试】学习笔记-精准测试

软件测试行业从最开始的手工测试到自动化测试&#xff0c;从黑盒测试到白盒测试&#xff0c;测试理念和技术都发生了日新月异的变化。现如今&#xff0c;几乎所有的软件公司都有一套强大且复杂的自动化测试用例&#xff0c;用来夜以继日地保证产品的正确性和稳定性。 然而&…

web前端项目-贪吃蛇小游戏【附源码】

web前端项目-贪吃蛇小游戏 【贪吃蛇】是一款经典的小游戏&#xff0c;采用HTML、CSS和JavaScript技术进行开发&#xff0c;玩家通过控制一条蛇在地图上移动&#xff0c;蛇的目的是吃掉地图上的食物&#xff0c;并且让自己变得更长。游戏的核心玩法是控制蛇的移动方向和长度&am…

深度学习记录--梯度检验

数值逼近 为了对梯度进行检验&#xff0c;需要计算近似误差值来接近梯度 对于单边误差和双边误差公式&#xff0c;其中双边误差与真实梯度相差更小&#xff0c;故一般采用双边误差公式 双边误差 公式&#xff1a; 梯度检验(gradient checking) 对于成本函数&#xff0c;求出…

微信小程序之组件和API

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…