在LabVIEW中部署YOLOv8目标检测模型

作者:英特尔物联网行业创新大使 王立奇
1.1什么是 labview
labview 是测试测量与自动化行业常用的图形化开发环境,其优点有:
学习容易入门快,开发计算机视觉应用程序简单方便;
自带机器视觉函数库(vision development 模块),并提供支持 gige、usb3 vision 等标准总线的第三方相机的图像采集驱动程序(ni-imaqdx),和 opencv 接口工具包(nivision opencv utilities),完全满足 ai 机器视觉应用程序的开发要求。
使用 labview 调用 openvino ir 模型,可以快速完成深度学习项目开发与交付。
1.2 准备开发环境
要完成在 labview 中调用 openvino 格式的 yolov8 模型,需要安装:
labview,vision development 模块和 ni-imaqdx
openvino 2023.0
visual studio 2022 community
ultralytics yolov8
1.2.1安装 labview
请从下方地址下载 labview 安装文件:
*需要注意的是:请选择 labview 64 位版本,并勾选 vision development 模块和 ni-imaqdx。
1.2.2  安装 openvino
openvino分为 openvino 运行库(openvino runtime)和 openvino开发工具集(openvino development tools)。
openvino 运行库:一个提供 c/c++/python api 的 c++ 函数库。
openvino 开发工具集:一套包含模型优化器(model optimizer)、基准测试工具(benchmark tool)、训练后优化工具(post-training optimization tool)、模型下载器(model downloader)等工具的开发工具集。
请先用命令:
pip install openvino-dev
安装 openvino 开发工具集。该命令在安装 openvino 开发工具集时,会同时将提供 python api 的 openvino 运行库作为依赖项进行安装。
然后从 openvino 官网:
下载并解压 windows 版的 openvino 运行库,如下图所示:
本文将 openvino 运行库压缩包解压到了 c:program files (x86)intelopenvino,如下图所示:
1.2.3安装 visual studio 2022 community
安装 visual studio 2022 community 详细步骤请参考《在windows中基于visual studio配置openvino c++开发环境》。
 1.2.4  安装 ultralytics 并导出 yolov8 模型
yolov8 是 ultralytics 公司基于 yolo 框架,发布的一款面向物体检测与跟踪、实例分割、图像分类和姿态估计任务的 sota(state-of-the-art)模型工具套件。
首先,使用命令,完成 ultralytics 软件包安装。
pip install ultralytics
然后,使用命令:
yolo export model=yolov8n.pt format=openvino half=true
导出 yolov8n openvino 格式模型,如下图所示:
1.3为 labview 调用
编写 openvino dll 封装函数
为了满足 labview 调用 c++ dll 函数的规则,需要编写 openvino dll 封装函数。整个封装工作包括一个数据结构体和四个 api 函数:
结构体 lv_ov_engine:定义 openvino 推理时需要传递的数据结构
 create_ir():初始化 openvino core 对象并创建推理请求
 infer():输入预处理后的图像数据,执行推理计算
getresult():获得推理计算结果
release():释放资源
 1.3.1  定义结构体 lv_ov_engine
定义 openvino 推理时需要传递的数据结构,如下所示:
//定义openvino推理时需要传递的数据结构typedef struct lv_ov_engine {    ov::core ovcore;    ov::inferrequest infer_request;} ovenginestruct;  
向右滑动查看完整代码
 1.3.2  创建 create_ir() 函数
创建 create_ir() 函数,实现将 openvino ir 模型载入指定的计算设备,并返回初始化好的推理请求,如下所示:
//将openvino ir模型载入指定的推理设备extern c __declspec(dllexport) ovenginestruct * create_ir(char* xml_file, char* device_name){    ovenginestruct* p = new ovenginestruct();    auto compiled_model = p->ovcore.compile_model(xml_file, device_name);    p->infer_request = compiled_model.create_infer_request();    return p;}  
向右滑动查看完整代码
1.3.3创建 ie_run 函数
创建 infer() 函数,输入预处理后的图像数据,执行推理计算,如下所示:
//输入预处理后的图像数据,执行推理计算extern c __declspec(dllexport) void infer(ovenginestruct * p, float* inputdata){    ov::tensor input_tensor0 = p->infer_request.get_input_tensor(0);    auto data0 = input_tensor0.data();    memcpy(data0, inputdata, 1 * 3 * 640 * 640 * sizeof(float));    p->infer_request.infer();}  
向右滑动查看完整代码
 1.3.4  创建 getresult() 函数
创建 getresult() 函数,用于获取推理结果,如下所示:
//获取推理后的结果(yolov8输出张量的大小为1*84*8400)extern c __declspec(dllexport) void getresult(ovenginestruct * p, float* data){    auto output = p->infer_request.get_output_tensor(0);    const float* f = output.data();    memcpy(data, f, sizeof(float) * 1 * 84 * 8400);}  
向右滑动查看完整代码
1.3.5创建 release 函数
创建 release 函数,用于释放推理引擎资源,如下所示:
//释放推理引擎extern c __declspec(dllexport) void release(ovenginestruct * p){    delete p;}  
向右滑动查看完整代码
完整代码请参考:openvino_vi_wrapper.cpp,在 visual studio 中将 openvino_vi_wrapper.cpp 编译为 dll,然后在 labview 中调用并封装为 4 个 vi,如下图所示:
1.4使用 labview openvino vi
实现 yolov8 目标检测
请读者先克隆本文的源代码到本地:
git clone
 https://github.com/wangstoudamire/lv_yolov8_openvino
按照 readme.md 文档安装相关工具包,然后运行 labview_openvino_demo.vi(运行之前请确保电脑已联网),运行结果如下图所示:
1.5结论 
基于 openvino,创建 labview 推理计算 vi,实现 ai 推理计算简单方便。结合 labview 图形化开发环境,可以快速开发 ai 应用程序。更多 ai 推理计算功能,可以参考 virobotics 的 labview ai 工具包:


区块链的可追溯性应用领域预计将在市场规模方面占据主导地位
中国太阳能光伏产业发展前景预测
OLED显示屏芯片供应不足,苹果遇产能危机
在2018网络管理有哪六大趋势?
九芯电子|语音芯片老化的原因有哪些?
在LabVIEW中部署YOLOv8目标检测模型
区块链去中心化库存管理系统Arcadier介绍
日本制造业为何会遭到阶段性的麻烦
戴尔灵越5000笔记本拆解 内部做工相当出众
C语言算法题:反转一个单向链表
可穿戴耳塞设备中心率监测器的光电机械集成指南
CREAL展示了首款AR/VR头显原型
中国有线总经理沈向军称三网融合本质是两网融合
破茧而出,突破极限:迈来芯的“芯”战略
为凝聚区块链共识消除误解,3大议题16场学术演讲研讨会
当二次侧MOSFET立即关断时的故障对策
戴森推出Dyson Airblade 9kJ干手器,采用Curved Blade弧形气刃设计
英特尔筹划20亿美元创投资金
动力电池梯次利用应用有何价值
Filecoin在区块链中的价值潜力有多大