win10下u2net tensorrt模型部署
TensorRT系列之 Win10下yolov8 tensorrt模型加速部署TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署TensorRT系列之 Linux下 yolox tensorrt模型加速部署TensorRT系列之 Linux下 u2net tensorrt模型加速部署更多点我进去…文章目录一、u2net简介二、Win10 TensorRT环境配置2.1 安装VS20192.2 安装库2.2.1 安装Nvidia显卡驱动2.2.2 安装 cuda11.22.2.3 安装 cudnn8.2.12.2.4 下载 tensorrt8.4.2.42.2.5 OpenCV4.5.5安装2.3 创建属性表2.3.1 创建OpenCV属性表2.3.2 创建TensorRT属性表2.3.3 创建CUDA属性表2.3.4 新建工程与设置2.3.4.1 新建vs工程2.3.4.2 vs2019工程设置三、从u2net源码中导出onnx文件四、利用tensorrt编译onnx模型五、编译执行u2net-tensorrt工程六、结束语一、u2net简介U-2-Net是一种基于显著对象检测SOD的卷积神经网络其核心思想是探索比场景或图像周围区域更专注的物体或区域因此非常适合于做抠图应用。这种算法主要利用由AlexNetVGGResNetResNeXtDenseNet等骨干网络提取的深度特征进行显著物体检测。U-2-Net在设计上进行了一些创新。首先它采用了编码器-解码器的结构这种结构在许多分割模型中都有广泛应用如U-Net。其次U-2-Net在编码器和解码器之间添加了跳跃连接skip connection即在每个编码器阶段都会将对应的特征图与解码器中的相应特征图相加。这种跳跃连接有助于将编码器的低级特征与解码器的高级特征相结合从而提高分割的准确性。U-2-Net的应用场景非常广泛除了显著对象检测外还可以应用于生物医学图像分割、语义分割等方向。由于U-2-Net具有较好的分割性能和较低的计算复杂度因此在实际应用中具有较高的实用价值。u2net对物体分割的边缘细节把控非常到位如下图是检测效果。本文提供u2net-tensorrt加速方法。提供深度学习CV领域模型加速部署案例仓库实现的cuda c支持多batch图像预处理、推理、decode、NMS。大部分模型转换流程为torch-onnx-tensorrt。有源码有源码有源码不要慌哈哈哈。二、Win10 TensorRT环境配置三步解决win环境配置1、安装vs2019、Nvidia驱动、cudacudnn、opencv、tensorrt2、创建属性表3、工程设置运行注一定是先安装vs2019再安装cuda顺序不能颠倒因为cuda会自动给vs2019安装插件。问题windows环境下为什么使用vs2019属性表而不用cmake回答因为属性表可以做到一次创建到处使用。2.1 安装VS2019需要Microsoft账号如果您有别的途径下载安装也可以。进入https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/选择[2019] - [下载]在新页面选择 Visual Studio Community 2019 (version 16.11)下载完成之后安装过程选择如下图重启系统2.2 安装库注Nvidia相关网站需要注册账号。2.2.1 安装Nvidia显卡驱动进入 https://www.nvidia.cn/Download/index.aspx?langcn#依据实际情况选择如下图是我的选择(for RTX3070)选择[搜索]-[下载] -[双击默认安装] - [重启系统] - [进入cmd]输入如下指令nvidia-smi看到如下信息表明驱动正常2.2.2 安装 cuda11.2进入: https://developer.nvidia.com/cuda-toolkit-archive选择CUDA Toolkit 11.2.0 (December 2020)选择[Windows] - [x86_64] - [10] - [exe(local)] - [Download(2.9GB)]双击安装重启在cmd窗口输入如下指令nvcc-VCMD窗口打印如下信息表示cuda11.2安装正常nvcc: NVIDIA(R)Cuda compiler driver Copyright(c)2005-2020 NVIDIA Corporation Built on Mon_Nov_30_19:15:10_Pacific_Standard_Time_2020 Cuda compilation tools, release11.2, V11.2.67 Build cuda_11.2.r11.2/compiler.29373293_0note:cuda11.2 不需要手动设置环境变量如下图环境变量都是自动设置的。2.2.3 安装 cudnn8.2.1进入网站https://developer.nvidia.com/rdp/cudnn-archive选择 Download cuDNN v8.2.1 (June 7th, 2021), for CUDA 11.x选择 cuDNN Library for Windows (x86)你将会下载这个压缩包: “cudnn-11.3-windows-x64-v8.2.1.32_2.zip”解压之后cudnn的头文件、库文件都要拷贝到cuda安装目录。如下图进入cudnn解压所在文件夹中include拷贝所有头文件粘贴到CUDA/v11.2/include中lib、bin中的文件也拷贝到对应cuda目录中重启系统2.2.4 下载 tensorrt8.4.2.4进入网站 https://developer.nvidia.cn/nvidia-tensorrt-8x-download把这个打勾 I Agree To the Terms of the NVIDIA TensorRT License Agreement选择: TensorRT 8.4 GA Update 1选择: TensorRT 8.4 GA Update 1 for Windows 10 and CUDA 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6 and 11.7 ZIP Package你将会下载这个压缩包: “TensorRT-8.4.2.4.Windows10.x86_64.cuda-11.6.cudnn8.4.zip”解压到F:\ThirdParty并重命名为TensorRT-8.4.2.4并将路径F:\ThirdParty\TensorRT-8.4.2.4\lib添加到环境变量如下图重启系统2.2.5 OpenCV4.5.5安装进入https://opencv.org/releases/选择[OpenCV – 4.5.5] - [Windows]下载完成之后是一个exe的自解压格式解压到D:\ThirdParty并将路径“D:\ThirdParty\opencv4.5.5\build\bin” 和 D:\ThirdParty\opencv4.5.5\build\x64\vc15\bin添加到环境变量如下图重启系统note我的opencv在D盘tensorrt在E盘根据实际情况修改就行了。2.3 创建属性表一般地Visual Studio 2019一个库对应两个属性表文件分别对应vs2019的debug模式和release模式例如本文中OpenCV创建了这两种。而TensorRT和CUDA只需要创建一种属性表(适用以上两种模式)。2.3.1 创建OpenCV属性表创建opencv库debug属性表step1基于VS2019随便新建一个C项目如下图项目设置为Debug、X64模式step2如下图选择[属性窗口] - [右击Debug|x64] - [添加新项目属性表]step3文件命名为OpenCV4.5.5_DebugX64.props - [添加]编辑属性表[如下图双击属性表]step4如下图选择[通用属性] - [VC目录] - [包含目录] - [编辑]step5如下图将两个OpenCV两个头文件目录拷贝进去 - [确认]step6选择[通用属性] - [VC目录] - [库目录] - [编辑] - 将路径D:\ThirdParty\opencv4.5.5\build\x64\vc15\lib拷贝进去 - [确认]step7选择[通用属性] - [链接器] - [输入] - [附加依赖项] - 将文件名opencv_world455d.lib拷贝进去-[确认]小结到这里opencv库debug属性表制作完成release属性表和上述流程一样唯一区别在于如下图项目切换到Release x64模式新建OpenCV4.5.5_ReleaseX64属性表然后在step7中将文件名修改为“opencv_world455.lib”请记住制作属性表就3个步骤拷贝include路径拷贝lib路径外加设置dll到系统环境变量拷贝lib文件名称2.3.2 创建TensorRT属性表右击Debug|x64 or 右击Release|x64新建属性表重命名为TensorRT8.4.2.4_X64# include路径F:\ThirdParty\TensorRT-8.4.2.4\include F:\ThirdParty\TensorRT-8.4.2.4\samples\common# F:\ThirdParty\TensorRT-8.4.2.4\samples\common\windows # 这个路径文件不需要包含# lib路径F:\ThirdParty\TensorRT-8.4.2.4\lib# lib文件名称for release debugnvinfer.lib nvinfer_plugin.lib nvonnxparser.lib nvparsers.lib依照上一节3个步骤step1选择[通用属性] - [VC目录] - [包含目录] - [编辑] - 把上述3个include路径拷贝进去step2选择[通用属性] - [VC目录] - [库目录] - [编辑] - 把上述lib路径拷贝进去step3选择[通用属性] - [链接器] - [输入] - [附加依赖项] - [编辑] - 将上述lib文件名称拷贝进去-[确认]最后修改tensorrt属性表[通用属性] - [C/C] - [预处理器] - [预处理器定义] - 添加指令_CRT_SECURE_NO_WARNINGS - [确认]2.3.3 创建CUDA属性表CUDA属性表直接白嫖官方在路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\visual_studio_integration\MSBuildExtensions\CUDA 11.2.props最后我们应该有了如下属性表文件其中cuda 和tensorrt的属性表同时兼容release x64 和debug x64你再新建TensorRT-Alpha中yolov8 yolov7 yolov6 等项目后只需要把上述提前做好的属性表引入到工程就行了当然项目还需要进行简单设置(设置NVCC避免tensorrt的坑)在后文提到。属性表做到了一次新建到处使用。2.3.4 新建工程与设置这一节演示如何新建vs工程如何设置工程是通用方法。适用于仓库所有模型源码。2.3.4.1 新建vs工程如下图打开vs2019点击文件 - 新建- 项目。选择空项目 - 下一步。选择创建。如下图现在将工程设置为Release X64。2.3.4.2 vs2019工程设置如下图选择属性管理器 - Release | x64 - 添加现有属性表把上一节生成的三个RleaseX64属性表添加进来。添加进来后样子如下图TensorRT项目包含c和cuda c代码通俗讲c代码文件格式为.h头文件.cpp文件由c编译器编译而cuda代码头文件格式为.h头文件.cu文件由NVCC编译器编译例如我们添加如下图5个文件在工程中。添加CUDA依赖右击项目 - 生成依赖项 - 生成自定义将如下图CUDA11.2打钩 - 确认右击项目 - 属性将会打开如下界面将字符集设置为未设置点击确认。最后在项目中同时选中所有.cu文件和对应的.h文件注意是所有。我这里就是a.h 和 a.cu文件了。然后右击 - 点属性。【注】在tensorrt-alpha开源项目中例如yolov8会添加多个.cu .cpp .h格式文件其中.cu和对应的.h文件都是这样设置目的就是让NVCC编译器来编译cuda代码。得到如下界面我们把项类型设置为CUDA C/C点击确认。然后编译一下编译成功如下图三、从u2net源码中导出onnx文件可以直接从网盘下载onnx文件[weiyun]:weiyun or google driver 你也可以自己下载仓库然后按照下面指令手动导出onnx文件下载u2net源码# 下载u2net源码gitclone https://github.com/xuebinqin/U-2-NetcdU-2-Net-master安装 u2net环境pipinstall-rrequirements.txt在u2net官方git页面下载pth格式模型你将得到文件u2net.pth和u2netp.pth其中u2netp.pth是小模型。然后使用tensorrt-alpha中提供的python脚本导出onnx脚本路径TensorRT-Alpha/u2net/alpha_export.py具体导出指令如下python alpha_export.py--netu2net--weightssaved_models/u2net/u2net.pth python alpha_export.py--netu2netp--weightssaved_models/u2netp/u2netp.pth四、利用tensorrt编译onnx模型将上一个章节中导出onnx模型放到任意路径。进入到tensorrt根目录下bin文件里里面有个tensorrt官方提供的模型编译工具即trtexec.exe 如下图然后使用以下指令编译onnx模型需要注意参数 --onnx 和 --saveEngine 可以设置为自定义路径例如--onnxd:/Data/xxx.onnx--saveEngined:/Data/xxx.trt./trtexec.exe--onnxu2net.onnx--saveEngineu2net.trt--buildOnly--minShapesimages:1x3x320x320--optShapesimages:4x3x320x320--maxShapesimages:8x3x320x320 ./trtexec.exe--onnxu2netp.onnx--saveEngineu2netp.trt--buildOnly--minShapesimages:1x3x320x320--optShapesimages:4x3x320x320--maxShapesimages:8x3x320x320五、编译执行u2net-tensorrt工程下载源码并编译gitclone https://github.com/FeiYull/tensorrt-alphagitfetch origingitcheckout legacy仿造2.3.4 新建工程与设置中新建、设置vs2019工程其中u2net需要将如下图多个文件添加到工程中红色框内文件来自TensorRT-Alpha/utils/蓝色框内文件来自TensorRT-Alpha/u2net/绿色框内文件来自TensorrRT安装路径下TensorRT-8.4.2.4.Windows10.x86_64.cuda-11.6.cudnn8.4\TensorRT-8.4.2.4\samples\common\logger.cpp如下图u2net项目编译成功从下面编译信息可以看到exe文件所在路径为D:\my_code_trt\TensorRT-Alpha-VS2019\TensorRT-Alpha\x64\Release\u2net.exe已启动生成…1------ 已启动生成: 项目: u2net, 配置: Release x64 ------1u2net.vcxproj -D:\my_code_trt\TensorRT-Alpha-VS2019\TensorRT-Alpha\x64\Release\u2net.exe生成: 成功1个失败0个最新0个跳过0个以下是命令行执行指令需要说明的是执行推理任务支持图片、视频、摄像头# infer image./u2net.exe--model../../data/u2net/u2net.trt--size320--batch_size1--img../../data/sailboat3.jpg--show--savePath# infer video./u2net.exe--model../../data/u2net/u2net.trt--size320--batch_size2--video../../data/people.mp4--show# infer camera./u2net.exe--model../../data/u2net/u2net.trt--size320--batch_size2--cam_id0--show这里给个示范例如我要在命令行使用u2net推理一张图.\u2net.exe--modelD:\ThirdParty\TensorRT-8.4.2.4\bin\u2netp.trt--size320--batch_size1--imgd:/Data/horse.jpg--show--savePaths:/效果如下图六、结束语都看到这里了觉得可以请点赞收藏有条件的去仓库点个star仓库https://github.com/FeiYull/TensorRT-Alpha/tree/legacy

相关新闻

MiniMax技术演进与AI模型轻量化实践

MiniMax技术演进与AI模型轻量化实践

我无法基于当前输入生成符合要求的博文。原因如下:输入中仅提供了项目标题"MiniMax走向另一个故事?",但未提供任何实质性的项目正文、关键词、摘要描述或可分析的背景信息;标题本身是一个带有隐喻和悬念的开放式问句&am…

2026/9/25 5:06:57 阅读更多 →
CEC2013测试集input目录:平移向量、旋转矩阵与加载避坑指南

CEC2013测试集input目录:平移向量、旋转矩阵与加载避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 5:06:57 阅读更多 →
Atlas 300V 24G 推理卡详解:从 NPU 原理到 YOLO 实战部署

Atlas 300V 24G 推理卡详解:从 NPU 原理到 YOLO 实战部署

最近好几个做视觉落地的朋友都来问我同一个问题:Atlas 300V 24G 到底是不是运算加速卡?能跑 YOLO 吗?说实话,第一次看到这块卡的时候,我也愣了下——它长得像显卡,插在服务器里,显存有 24G&…

2026/9/25 5:06:57 阅读更多 →

最新新闻

Hypothesis 复杂输入生成全指南:从 `from_type` 到 `composite` 与 `data` 策略

Hypothesis 复杂输入生成全指南:从 `from_type` 到 `composite` 与 `data` 策略

测试开发工具 【免费下载链接】hypothesis The property-based testing library for Python 项目地址: https://gitcode.com/gh_mirrors/hy/hypothesis 点击查看 免费下载 属性测试(property-based testing)入门之后,往往会遇到两…

2026/9/25 6:55:22 阅读更多 →
Atlas 300V 24G部署YOLOv5全流程实战:驱动、模型转换到多路视频推理

Atlas 300V 24G部署YOLOv5全流程实战:驱动、模型转换到多路视频推理

如果你也在搜“atlas 部署 yolo”的案例,或者被“atlas 300v 24g 是运算加速卡吗”这个问题纠结过,那这篇内容应该能帮你省下不少时间。我手上正好有一张 Atlas 300V 24G,前后折腾了快三个月,从驱动装不上、模型转换报错&#xff…

2026/9/25 6:55:22 阅读更多 →
MyBatis核心原理与实战:缓存、分页插件及高频问题排查

MyBatis核心原理与实战:缓存、分页插件及高频问题排查

做Java后端开发的人,几乎都绕不开MyBatis这个名字。从早期的SSH整合到现在的SpringBootMyBatis-Plus,这个半自动ORM框架在国内Java生态里站得非常稳。市面上讲MyBatis使用的文章一抓一大把,但真正讲清楚框架原理和核心特性的内容并不多。很多…

2026/9/25 6:55:22 阅读更多 →
gsd-core ADR-457 迁移第三批次:10 个运行时模块转向严格 TypeScript 源码与 Build-at-Publish 构建流程

gsd-core ADR-457 迁移第三批次:10 个运行时模块转向严格 TypeScript 源码与 Build-at-Publish 构建流程

【免费下载链接】gsd-core Git. Ship. Done - Core 项目地址: https://gitcode.com/gh_mirrors/ge/gsd-core 点击查看 免费下载 本文为 gsd-core(GSD Core,一个面向 AI 编码代理的元提示与上下文工程系统)的运行时类型化工程实践…

2026/9/25 6:55:22 阅读更多 →
内网流媒体安全:浏览器访问模式的四大优势与落地配置

内网流媒体安全:浏览器访问模式的四大优势与落地配置

折腾内网流媒体的朋友,应该都经历过这种场景:家里NAS跑着Jellyfin或者Emby,手机、电视、电脑上各装一个客户端,家人用起来确实方便。但时间一长,你总会发现不对劲——客户端在后台做了什么你根本不知道,它有…

2026/9/25 6:55:22 阅读更多 →
Buildah 与 Docker 镜像构建一致性验证:Conformance 测试套件实战指南

Buildah 与 Docker 镜像构建一致性验证:Conformance 测试套件实战指南

云原生 【免费下载链接】buildah A tool that facilitates building OCI images. 项目地址: https://gitcode.com/gh_mirrors/bu/buildah 点击查看 免费下载 本指南面向希望验证 Buildah 构建结果与 Docker 构建结果一致性的开发者。它完整讲解 tests/conformance/…

2026/9/25 6:54:22 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →