news 2026/4/16 17:17:51

Labview结合Yolov5与TensorRT(Wangxingyu版)实现快速并行推理,d...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Labview结合Yolov5与TensorRT(Wangxingyu版)实现快速并行推理,d...

labview yolov5 tensorrt(wangxingyu版)推理,封装dll, labview调用dll,支持同时加油多个模型并行推理,识别视频和图片,速度6ms内,模型需要pt->wts->engine, 由于不同电脑和平台需要重新wts->engine,所以包含一个wts模型转engine软件,只需要替换模型的engin和nameclass即可

这次折腾的是LabVIEW结合YOLOv5和TensorRT的高性能推理方案。别看LabVIEW长得像儿童编程玩具,配合C++ DLL玩起多模型并行推理,速度直接干到6ms以内,摄像头实时处理完全没压力。

模型转换踩坑记

YOLOv5的pt模型转TensorRT engine是个技术活。wangxingyu版的转换脚本比官方方案更适配LabVIEW环境,不过要注意模型输出层的命名规范。举个栗子:

with open('yolov5s.wts', 'w') as f: f.write('{}\n'.format(len(model.state_dict().keys()))) for k, v in model.state_dict().items(): vr = v.reshape(-1).cpu().numpy() f.write('{} {} '.format(k, len(vr))) f.write(' '.join(['%f' % x for x in vr]) + '\n')

这段代码把PyTorch的权重拍平成文本格式,注意reshape(-1)可能会改变某些层的维度顺序,遇到推理异常先检查这里。

DLL封装那些事儿

C++侧用了双缓冲+内存共享的黑科技处理多模型并行。核心推理函数长这样:

__declspec(dllexport) void InferParallel( unsigned char* img_data, int model_index, Result* results) { auto& context = g_contexts[model_index]; // 不同模型实例隔离 cudaMemcpy(context.input_buffer, img_data, INPUT_SIZE, cudaMemcpyHostToDevice); context.stream->infer(); // 异步流执行 post_process(context.output_buffer, results); // 零拷贝结果回传 }

重点在于每个模型有自己的cuda流和内存空间,避免多线程打架。LabVIEW调用时通过模型索引切换,实测开4个模型也能稳定在15ms内。

LabVIEW调教指南

前面板放个多线程队列处理器,配合DLL的异步接口直接起飞:

While循环(并行) Dequeue获取图像数据 调用库函数节点(DLL路径, "InferParallel") 结果分析Cluster解包 图像标注叠加 End循环

注意设置执行选项为"在UI线程外运行",否则前面板会卡成PPT。视频流处理建议用生产者-消费者结构,DMA传输能省30%时间。

手搓转换工具

由于TensorRT engine和CUDA版本强相关,我们搞了个傻瓜式转换器(C# WinForm)。核心转换命令:

trtexec --onnx=yolov5s.onnx --saveEngine=yolov5s.engine --fp16 --workspace=4096

工具自动替换模型名称和类别文件,支持拖拽操作。实测不同显卡生成engine速度差异极大,RTX4090转换比1060快8倍你敢信?

整套方案在工业质检场景跑了三个月,日均处理20万张图片没翻车。要说遗憾就是LabVIEW的异常处理比较蠢,C++侧得自己加内存泄漏检测。最近在研究用OpenVINO替代TensorRT,等有进展再来唠。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 7:07:15

Ehercat代码解析中文摘录<4>

8. 邮箱 EtherCAT 邮箱(MBX)用于传输非周期性数据,SSC 支持多种邮箱协议,本章介绍 FoE 和 EoE 的实现与使用。 8.1 FoE(EtherCAT 文件传输) FoE 用于在主站和从站间传输文件(如配置文件、固件…

作者头像 李华
网站建设 2026/4/15 16:43:42

HunyuanOCR支持梵文与巴利文吗?古老宗教语言识别能力调研

HunyuanOCR支持梵文与巴利文吗?古老宗教语言识别能力调研 在文化遗产数字化的浪潮中,越来越多的研究者和机构开始将目光投向那些尘封千年的贝叶经、石刻碑文与手抄佛典。这些文献承载着人类文明的重要记忆,但其文字系统——如梵文&#xff08…

作者头像 李华
网站建设 2026/4/16 7:03:44

HunyuanOCR能否识别表情符号含义?Emoticon语义理解附加层开发

HunyuanOCR能否识别表情符号含义?Emoticon语义理解附加层开发 在社交媒体、即时通讯和用户生成内容(UGC)泛滥的今天,一段文字是否“带情绪”,往往不取决于字面本身,而在于结尾那个小小的😊或&am…

作者头像 李华
网站建设 2026/4/16 7:06:13

HunyuanOCR能否识别摩斯电码?特殊编码文字转换功能设想

HunyuanOCR能否识别摩斯电码?特殊编码文字转换功能设想 在一场密室逃脱游戏中,你发现墙上刻着一串奇怪的点和划:“ – – – – – – ”。没有工具手册,也没有信号灯对照表——如果手机里的 OCR 应用能像人一样“看懂”…

作者头像 李华
网站建设 2026/4/16 7:03:44

智能快递柜集成HunyuanOCR:包裹面单信息自动录入系统

智能快递柜集成HunyuanOCR:包裹面单信息自动录入系统 在“双十一”高峰期,一个中型社区的智能快递柜每小时要处理超过200个包裹。传统流程下,用户投递后需手动输入运单号或扫码登记——这不仅耗时,还常因拍照模糊、手写潦草、多语…

作者头像 李华
网站建设 2026/4/16 7:05:06

课程1——恋爱聊天话题

此篇文章,用于恋爱、闲聊、酒局中,没话题的时候找话题用!当然,主要用于恋爱。不过,最重要的还是接话的能力,会接话,1个话题都能聊1天。不会接话,这里的所有话题一会儿就聊完了&#…

作者头像 李华