OpenVINO~LabVIEW部署yolo8

基于OpenVINOTM2023在LabVIEW中部署YOLOv8目标检测模型, 都是在windows下

什么是LabVIEW

LabVIEW是测试测量与自动化行业常用的图形化开发环境,其优点有:

  • 学习容易入门快,开发计算机视觉应用程序简单方便

  • 自带机器视觉函数库(Vision Development模块),并提供支持GigE、USB3 Vision等标准总线的第三方相机的图像采集驱动程序(NI-IMAQdx),和OpenCV接口工具包(NIVision OpenCV Utilities),完全满足AI机器视觉应用程序的开发要求。

LabVIEW详细介绍,请参考:https://www.ni.com/zh-cn/shop/labview.html。

​使用LabVIEW调用OpenVINO IR模型,可以快速完成深度学习项目开发与交付。 ​

准备开发环境

要完成在LabVIEW中调用OpenVINO格式的YOLOv8模型,需要安装:

  1. LabVIEW、Vision Development模块和NI-IMAQdx

  2. OpenVINO 2023.0

  3. Visual Studio 2022 Community

  4. Ultralytics YOLOv8

安装LabVIEW

LabVIEW请从https://www.ni.com/zh-cn/support/downloads/software-products/download.labview.html,下载LabVIEW安装文件。需要注意的是:请选择LabVIEW 64位版本,并勾选Vision Development模块和NI-IMAQdx。

安装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官网,官网链接如下:

https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/overview.html。

下载并解压Windows版的OpenVINO^TM^ 运行库,如下图所示:

本文将OpenVINO™运行库压缩包解压到了C:\Program Files (x86)\Intel\openvino,如下图所示。

安装Visual Studio 2022 Community

安装Visual Studio 2022 Community详细步骤请参考《在Windows中基于Visual Studio配置OpenVINO C++开发环境》(https://mp.weixin.qq.com/s/USN5UGsONanzTp-JNfHtuA)。

安装Ultralytics并导出YOLOv8模型

YOLOv8是Ultralytics公司基于YOLO框架,发布的一款面向物体检测与跟踪、实例分割、图像分类和姿态估计任务的SOTA(State-Of-The-Art)模型工具套件。

首先,使用命令:pip install ultralytics,完成ultralytics软件包安装。

然后,使用命令:yolo export model=yolov8n.pt format=openvino half=True,导出yolov8n OpenVINO格式模型,如下图所示。

为LabVIEW调用编写OpenVINO dll封装函数

为了满足LabVIEW调用C++ dll函数的规则,需要编写OpenVINO dll封装函数。整个封装工作包括一个数据结构体和四个API函数:

  1. 结构体lv_ov_engine:定义OpenVINO推理时需要传递的数据结构

  2. create_ir():初始化OpenVINO Core对象并创建推理请求

  3. infer():输入预处理后的图像数据,执行推理计算

  4. getResult():获得推理计算结果

  5. release():释放资源

定义结构体lv_ov_engine

定义OpenVINO推理时需要传递的数据结构,如下所示:

*//定义OpenVINO推理时需要传递的数据结构*

typedef struct lv_ov_engine {

    ov::Core ovCore;

    ov::InferRequest infer_request;

} OvEngineStruct;
创建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;

}
创建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\<float\>();

    memcpy(data0, inputData, 1 \* 3 \* 640 \* 640 \* sizeof(float));

    p-\>infer_request.infer();

}
创建getResult()函数

创建getResult()函数,用于获取推理结果,如下所示:  whaosoft aiot http://143ai.com  

*//获取推理后的结果(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\<float\>();

    memcpy(data, f, sizeof(float) \* 1 \* 84 \* 8400);

}
创建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,如下图所示。

使用LabVIEW OpenVINO VI实现YOLOv8目标检测

请读者先克隆本文的源代码到本地:

git clone https://github.com/wangstoudamire/lv_yolov8_openvino

按照README.md文档安装相关工具包,然后运行LabVIEW_OpenVINO_Demo.vi(运行之前请确保电脑已联网),运行结果如下图所示。

 

结论

基于OpenVINO,创建LabVIEW 推理计算VI,实现AI推理计算简单方便。结合LabVIEW图形化开发环境,可以快速开发AI应用程序。更多AI推理计算功能,可以参考VIRoboticsLabVIEW AI工具包。   whaosoft aiot http://143ai.com  

猜你喜欢

转载自blog.csdn.net/qq_29788741/article/details/131465549
今日推荐