Labview结合Yolov5与TensorRT(wangxingyu版)实现快速并行推理,dll封装与调用,模型转换至Engine并支持视频图片识别,6ms极速响应,Labview结合Yolov5与
资源内容介绍
Labview结合Yolov5与TensorRT(wangxingyu版)实现快速并行推理,dll封装与调用,模型转换至Engine并支持视频图片识别,6ms极速响应,Labview结合Yolov5与TensorRT(Wangxingyu版)实现快速并行推理,dll封装与调用,模型转换及视频图片识别,labview yolov5 tensorrt(wangxingyu版)推理,封装dll, labview调用dll,支持同时加油多个模型并行推理,识别视频和图片,速度6ms内,模型需要pt->wts->engine, 由于不同电脑和平台需要重新wts->engine,所以包含一个wts模型转engine软件,只需要替模型的engin和nameclass即可,关键词提取结果:labview; yolov5; tensorrt; wangxingyu版; 推理; 封装dll; 调用dll; 同时加油多个模型; 并行推理; 识别视频和图片; 速度6ms内; 模型转换; pt->wts->engine; 不同电脑和平台; wts模型转engine软件; 替换模型; enginenamecla <link href="/image.php?url=https://csdnimg.cn/release/download_crawler_static/css/base.min.css" rel="stylesheet"/><link href="/image.php?url=https://csdnimg.cn/release/download_crawler_static/css/fancy.min.css" rel="stylesheet"/><link href="/image.php?url=https://csdnimg.cn/release/download_crawler_static/90432396/2/raw.css" rel="stylesheet"/><div id="sidebar" style="display: none"><div id="outline"></div></div><div class="pf w0 h0" data-page-no="1" id="pf1"><div class="pc pc1 w0 h0"><img alt="" class="bi x0 y0 w1 h1" src="/image.php?url=https://csdnimg.cn/release/download_crawler_static/90432396/bg1.jpg"/><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">【题目】<span class="ff2">LabVIEW<span class="_ _0"> </span></span>中<span class="_ _0"> </span><span class="ff2">Yolov5 TensorRT<span class="_ _0"> </span></span>推理的<span class="_ _0"> </span><span class="ff2">DLL<span class="_ _0"> </span></span>封装与调用</div><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0">【摘要】<span class="_ _1"></span>本文介绍了在<span class="_ _0"> </span><span class="ff2">LabVIEW<span class="_ _0"> </span></span>中使用<span class="_ _0"> </span><span class="ff2">Yolov5 <span class="_ _2"></span>TensorRT<span class="_ _0"> </span><span class="ff1">进行推理的方法。<span class="_ _1"></span>通过封装<span class="_ _0"> </span><span class="ff2">DLL<span class="_ _0"> </span></span>并</span></span></div><div class="t m0 x1 h2 y3 ff1 fs0 fc0 sc0 ls0 ws0">在<span class="_ _0"> </span><span class="ff2">LabVIEW<span class="_"> </span></span>中调用,实现<span class="_ _3"></span>了同时处<span class="_ _3"></span>理多个模<span class="_ _3"></span>型的并行推<span class="_ _3"></span>理,能够<span class="_ _3"></span>对视频和<span class="_ _3"></span>图片进行识<span class="_ _3"></span>别。</div><div class="t m0 x1 h2 y4 ff1 fs0 fc0 sc0 ls0 ws0">该方法的速度快,推理时间在<span class="_ _0"> </span><span class="ff2">6<span class="_"> </span></span>毫秒内。由于不同电脑和平台需要重新生成<span class="_ _0"> </span><span class="ff2">TensorRT<span class="_"> </span></span>引擎</div><div class="t m0 x1 h2 y5 ff1 fs0 fc0 sc0 ls0 ws0">文件,<span class="_ _4"></span>因此提供了一个用于转换模型的<span class="_ _0"> </span><span class="ff2">WTS<span class="_ _0"> </span></span>模型转<span class="_ _0"> </span><span class="ff2">Engine<span class="_ _0"> </span></span>软件。<span class="_ _4"></span>用户只需替换模型的引擎</div><div class="t m0 x1 h2 y6 ff1 fs0 fc0 sc0 ls0 ws0">文件和类别名称即可使用。</div><div class="t m0 x1 h2 y7 ff1 fs0 fc0 sc0 ls0 ws0">【关键词<span class="_ _3"></span>】<span class="ff2">LabVIEW</span>,<span class="ff2">Yolov5<span class="_ _3"></span></span>,<span class="ff2">TensorRT</span>,<span class="ff2">DLL<span class="_ _3"></span></span>,推理,<span class="_ _3"></span>并行处理<span class="_ _3"></span>,视频识<span class="_ _3"></span>别,图片<span class="_ _3"></span>识别,</div><div class="t m0 x1 h2 y8 ff1 fs0 fc0 sc0 ls0 ws0">性能优化</div><div class="t m0 x1 h2 y9 ff1 fs0 fc0 sc0 ls0 ws0">【正文】</div><div class="t m0 x1 h2 ya ff1 fs0 fc0 sc0 ls0 ws0">一、引言</div><div class="t m0 x1 h2 yb ff1 fs0 fc0 sc0 ls0 ws0">近年来<span class="_ _3"></span>,深<span class="_ _3"></span>度学习<span class="_ _3"></span>技术在<span class="_ _3"></span>计算<span class="_ _3"></span>机视觉<span class="_ _3"></span>领域的<span class="_ _3"></span>应用<span class="_ _3"></span>越来越<span class="_ _3"></span>广泛。<span class="_ _3"></span><span class="ff2">Yolov5<span class="_"> </span></span>是目标检<span class="_ _3"></span>测领<span class="_ _3"></span>域的一</div><div class="t m0 x1 h2 yc ff1 fs0 fc0 sc0 ls0 ws0">种经典<span class="_ _3"></span>神经网络<span class="_ _3"></span>模型,它<span class="_ _3"></span>结合了<span class="_ _3"></span>速度和准<span class="_ _3"></span>确率的优<span class="_ _3"></span>势,受<span class="_ _3"></span>到了广大<span class="_ _3"></span>开发者的<span class="_ _3"></span>热情追<span class="_ _3"></span>捧。而</div><div class="t m0 x1 h2 yd ff2 fs0 fc0 sc0 ls0 ws0">TensorRT<span class="_ _0"> </span><span class="ff1">是由<span class="_ _0"> </span></span>NVIDIA<span class="_ _0"> </span><span class="ff1">开发的用于深度学习推理的高性能推理引擎,<span class="_ _5"></span>可以大幅度提升神经网</span></div><div class="t m0 x1 h2 ye ff1 fs0 fc0 sc0 ls0 ws0">络的推理速度。<span class="_ _6"></span>本文将介绍在<span class="_ _0"> </span><span class="ff2">LabVIEW<span class="_ _0"> </span></span>中使用<span class="_ _0"> </span><span class="ff2">Yolov5 TensorRT<span class="_ _0"> </span></span>进行推理的方法,<span class="_ _1"></span>并将其封</div><div class="t m0 x1 h2 yf ff1 fs0 fc0 sc0 ls0 ws0">装成<span class="_ _0"> </span><span class="ff2">DLL<span class="_ _0"> </span></span>供<span class="_ _0"> </span><span class="ff2">LabVIEW<span class="_ _0"> </span></span>调用,实现在<span class="_ _0"> </span><span class="ff2">LabVIEW<span class="_ _0"> </span></span>平台上快速高效地进行目标检测。</div><div class="t m0 x1 h2 y10 ff1 fs0 fc0 sc0 ls0 ws0">二、<span class="ff2">Yolov5 TensorRT<span class="_ _0"> </span></span>推理原理</div><div class="t m0 x1 h2 y11 ff2 fs0 fc0 sc0 ls0 ws0">Yolov5 TensorRT<span class="_"> </span><span class="ff1">推理的基<span class="_ _3"></span>本原理是<span class="_ _3"></span>将<span class="_ _0"> </span></span>Yolov5<span class="_"> </span><span class="ff1">模型转换<span class="_ _3"></span>为<span class="_ _0"> </span></span>TensorRT<span class="_"> </span><span class="ff1">引擎,通过<span class="_ _3"></span>对输入数<span class="_ _3"></span>据</span></div><div class="t m0 x1 h2 y12 ff1 fs0 fc0 sc0 ls0 ws0">进行前向推理,得到目标检测结果。具体步骤如下:</div><div class="t m0 x1 h2 y13 ff2 fs0 fc0 sc0 ls0 ws0">1. <span class="_ _7"> </span><span class="ff1">将<span class="_ _0"> </span></span>PyTorch<span class="_ _0"> </span><span class="ff1">训练好的<span class="_ _0"> </span></span>Yolov5<span class="_ _0"> </span><span class="ff1">模型转换为<span class="_ _0"> </span></span>TensorRT<span class="_ _7"> </span><span class="ff1">引擎所需的权重文件(</span>WTS<span class="_"> </span><span class="ff1">文件)<span class="_ _8"></span>。</span></div><div class="t m0 x1 h2 y14 ff2 fs0 fc0 sc0 ls0 ws0">2. <span class="_ _7"> </span><span class="ff1">使用<span class="_ _0"> </span></span>TensorRT API<span class="_ _7"> </span><span class="ff1">加载<span class="_ _0"> </span></span>WTS<span class="_"> </span><span class="ff1">文件并生成<span class="_ _7"> </span></span>TensorRT<span class="_"> </span><span class="ff1">引擎文件(</span>Engine<span class="_ _7"> </span><span class="ff1">文件)<span class="_ _9"></span>。</span></div><div class="t m0 x1 h2 y15 ff2 fs0 fc0 sc0 ls0 ws0">3. <span class="_ _7"> </span><span class="ff1">在<span class="_ _a"> </span></span>LabVIEW<span class="_"> </span><span class="ff1">中使用<span class="_ _a"> </span></span>DLL<span class="_"> </span><span class="ff1">调用<span class="_ _0"> </span></span>TensorRT<span class="_"> </span><span class="ff1">引擎<span class="_ _3"></span>,对输<span class="_ _3"></span>入数<span class="_ _3"></span>据进<span class="_ _3"></span>行推理<span class="_ _3"></span>,得<span class="_ _3"></span>到目标<span class="_ _3"></span>检测<span class="_ _3"></span>结果<span class="_ _3"></span>。</span></div><div class="t m0 x1 h2 y16 ff1 fs0 fc0 sc0 ls0 ws0">三、封装<span class="_ _0"> </span><span class="ff2">Yolov5 TensorRT<span class="_ _7"> </span></span>推理<span class="_ _0"> </span><span class="ff2">DLL</span></div><div class="t m0 x1 h2 y17 ff1 fs0 fc0 sc0 ls0 ws0">为<span class="_ _3"></span>了<span class="_ _b"></span>在<span class="_ _a"> </span><span class="ff2">LabVIEW<span class="_ _c"> </span></span>中<span class="_ _3"></span>调<span class="_ _b"></span>用<span class="_ _a"> </span><span class="ff2">Yolov5 <span class="_ _b"></span>TensorRT<span class="_"> </span></span>引<span class="_ _b"></span>擎<span class="_ _3"></span>进<span class="_ _b"></span>行<span class="_ _3"></span>推<span class="_ _b"></span>理<span class="_ _3"></span>,<span class="_ _b"></span>我<span class="_ _3"></span>们<span class="_ _b"></span>使<span class="_ _3"></span>用<span class="_ _c"> </span><span class="ff2">C++<span class="_ _3"></span></span>语<span class="_ _b"></span>言<span class="_ _3"></span>封<span class="_ _b"></span>装<span class="_ _3"></span>了<span class="_ _b"></span>一<span class="_ _3"></span>个</div><div class="t m0 x1 h2 y18 ff2 fs0 fc0 sc0 ls0 ws0">DLL<span class="ff1">。该<span class="_ _0"> </span></span>DLL<span class="_ _0"> </span><span class="ff1">提供了以下功能:</span></div><div class="t m0 x1 h2 y19 ff2 fs0 fc0 sc0 ls0 ws0">1. <span class="_ _7"> </span><span class="ff1">加载<span class="_ _0"> </span></span>TensorRT<span class="_ _7"> </span><span class="ff1">引擎文件并创建<span class="_ _0"> </span></span>TensorRT<span class="_"> </span><span class="ff1">推理实例。</span></div><div class="t m0 x1 h2 y1a ff2 fs0 fc0 sc0 ls0 ws0">2. <span class="_ _7"> </span><span class="ff1">输入图像数据,进行目标检测推理,并返回检测结果。</span></div><div class="t m0 x1 h2 y1b ff2 fs0 fc0 sc0 ls0 ws0">3. <span class="_ _7"> </span><span class="ff1">支持同时加油多个模型的并行推理,提高处理速度和效率。</span></div><div class="t m0 x1 h2 y1c ff2 fs0 fc0 sc0 ls0 ws0">4. <span class="_ _7"> </span><span class="ff1">支持视频和图片的识别,满足不同场景的需求。</span></div><div class="t m0 x1 h2 y1d ff1 fs0 fc0 sc0 ls0 ws0">四、<span class="ff2">LabVIEW<span class="_ _0"> </span></span>中的<span class="_ _0"> </span><span class="ff2">DLL<span class="_ _0"> </span></span>调用</div><div class="t m0 x1 h2 y1e ff1 fs0 fc0 sc0 ls0 ws0">在<span class="_ _0"> </span><span class="ff2">LabVIEW<span class="_ _0"> </span></span>中调用<span class="_ _0"> </span><span class="ff2">Yolov5 TensorRT<span class="_ _7"> </span></span>推理<span class="_ _0"> </span><span class="ff2">DLL</span>,可以通过以下步骤实现:</div><div class="t m0 x1 h2 y1f ff2 fs0 fc0 sc0 ls0 ws0">1. <span class="_ _7"> </span><span class="ff1">将<span class="_ _0"> </span></span>DLL<span class="_ _0"> </span><span class="ff1">文件导入到<span class="_ _0"> </span></span>LabVIEW<span class="_ _0"> </span><span class="ff1">中,创建函数节点。</span></div><div class="t m0 x1 h2 y20 ff2 fs0 fc0 sc0 ls0 ws0">2. <span class="_ _7"> </span><span class="ff1">配置输入参数,包括图像数据、模型引擎文件和类别名称。</span></div><div class="t m0 x1 h2 y21 ff2 fs0 fc0 sc0 ls0 ws0">3. <span class="_ _7"> </span><span class="ff1">调用函数节点进行推理,获取检测结果。</span></div><div class="t m0 x1 h2 y22 ff2 fs0 fc0 sc0 ls0 ws0">4. <span class="_ _7"> </span><span class="ff1">根据需要,对检测结果进行后续处理,如可视化、保存等。</span></div><div class="t m0 x1 h2 y23 ff1 fs0 fc0 sc0 ls0 ws0">通过在<span class="_ _a"> </span><span class="ff2">LabVIEW<span class="_"> </span></span>中调用<span class="_ _a"> </span><span class="ff2">Yolov5 TensorRT<span class="_"> </span></span>推理<span class="_ _0"> </span><span class="ff2">DLL<span class="_ _3"></span></span>,开<span class="_ _3"></span>发者可<span class="_ _3"></span>以方便<span class="_ _3"></span>地使<span class="_ _3"></span>用<span class="_ _0"> </span><span class="ff2">Yolov5<span class="_"> </span></span>模型进</div><div class="t m0 x1 h2 y24 ff1 fs0 fc0 sc0 ls0 ws0">行目标检测,<span class="_ _2"></span>并对多个模型进行并行推理,<span class="_ _d"></span>提高处理速度。<span class="_ _d"></span>同时,<span class="_ _2"></span>可以根据实际需求,<span class="_ _d"></span>对输</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>