使用英特尔独立显卡上加速HALCON AI推理

作者:张佳骥  MVTec 售前工程师;张晶 英特尔AI开发者市场部经理

1.1  什么是HALCON

MVTec HALCON 是一款在全球范围内使用,综合性的机器视觉标准软件。它有一个专门的集成开发环境(HDevelop),专门用于开发图像处理解决方案。使用 MVTec HALCON,您可以:

  • 受益于灵活的软件架构
  • 加快所有可行的机器视觉应用发展 
  • 保证快速进入市场
  • 持续地降低成本 

作为一个综合工具箱,HALCON 涵盖了机器视觉应用的整个工作流程。其核心是灵活而强大的图像处理库,其中有2100多个算子。HALCON 适用于所有行业,并为图像处理提供卓越性能。官网链接:https://www.mvtec.com/

图片引用自:https://www.mvtec.com/cn/products/HALCON/why-HALCON/compatibility

1.2   什么是OpenVINOTM工具套件

OpenVINO™ 工具套件:一款可轻松实现“一次开发,任意部署”的,用于AI模型优化和部署的开源工具套件。

  • 提高计算机视觉、自动语音识别、自然语言处理和其他常见任务的深度学习性能。
  • 使用经过 TensorFlow、PyTorch、PaddlePaddle 等流行框架训练的模型。
  • 减少资源需求,并在从边缘到云的一系列英特尔®平台上高效部署

1.3 安装HALCON和OpenVINO

从21.05版本开始,HALCON通过全新 HALCON AI 加速器接口 (AI²),支持OpenVINO™工具套件,从而支持AI模型在英特尔的硬件设备上实现推理计算加速。

当前HALCON的AI模型对英特尔的硬件设备支持,如下表所示

要实现使用HALCON AI 加速器接口在英特尔硬件设备上加速AI推理计算,只需要一次安装HALCON和OpenVINO™,然后编写HALCON AI推理程序即可。

1.3.1  安装HALCON

官网注册

登录MVTec官网HALCON软件下载页面(目前HALCON的最新版本是23.11 Progress

https://www.mvtec.com/downloads/halcon,如果没有注册过MVTec用户账号,需要先进行注册个人或企业账号。(请注意此处需要使用 公司邮箱注册,qq邮箱、163邮箱等私人邮箱会注册失败)。也可以查看下面的网页,了解最新版本的更新信息:HALCON 23.11 新功能: MVTec Software

下载并解压

在官网下载完整版的安装包(需要登陆账号), 下载 HALCON: MVTec Software 可以选择产品的版本和操作系统,此处以 Windows平台的最新版本 23.11 progress为例。 点击图中链接会自动开始下载,可自行使用工具加速。

下载完成后,解压缩完成,打开对应的文件夹,点击 som.exe 文件,启动SOM(Software Manager)。

安装设置

SOM 会使用默认浏览器打开安装界面,如果打开界面后未出现可选安装项目,建议重启电脑再次打开 som.exe。

可以 点击“语言” 按钮切换界面语言, 点击“环境” 按钮修改一些设置,如程序和数据安装路径,仓库地址等等,一般使用默认值最好。

然后选择“可获得的“页面,找到安装包,点击“安装”按钮, 上方按钮是为当前用户安装,下方是为所有用户安装(需要系统管理员权限),一般点选上方按钮。

设备空间足够的话(15G以上),建议右侧全选,全部安装;点击后等待安装结束即可。

加载license文件

HALCON软件的运行还需要对应的license加密文件,可以向MVTec官方购买正式版或者申请试用版。

然后,可以直接在 SOM界面中加载license文件,点击上图中的红色按钮,可以打开下方界面进行license文件的安装和管理,将license文件直接拖入即可。

最后,在Windows桌面上找到HALCON集成开发环境HDevelop软件图标,即可正常使用HALCON。

1.3.2  安装OpenVINO 2021.4 LTS

请到OpenVINO官网下载并安装OpenVINO 2021.4.2,如下图所示。

安装完毕后,请将OpenVINO™运行时库的路径添加到Windows的环境变量path中。

第一步,运行:

C:\Program Files (x86)\Intel\openvino_2021.4.752\bin\setupvars.bat

path

获取OpenVINO™运行时库的路径,如下图所示:

第二步,将OpenVINO™运行时库的路径添加到环境变量path中,如下图所示:

到此,下载并安装OpenVINO™,然后将OpenVINO™运行时库的路径添加到Windows环境变量path中的工作全部完成。

注意:若您电脑所使用的CPU包含了集成显卡,请在BIOS中把集成显卡禁用掉。

1.4  编写HALCON AI 推理程序

1.4.1 HALCON AI 推理程序工作流程

关于HALCON AI推理程序工作流程,以HALCON的深度学习图像分类为例,程序代码为HALCON集成开发环境HDevelop的开发语言。

1. 读取已训练完成的深度学习模型和预处理参数:

* Read in the model and Param.

read_dl_model (RetrainedModelFileName, DLModelHandle)

read_dict (PreprocessParamFileName, [], [], DLPreprocessParam)

2. 导入推理图像并生成深度学习样本:

* Read the images of the batch.

read_image (ImageBatch, Batch)

* Generate the DLSampleBatch.

gen_dl_samples_from_images (ImageBatch, DLSampleB atch)

3. 对深度学习样本进行预处理以匹配模型:

* Preprocess the DLSampleBatch.

preprocess_dl_samples (DLSampleBatch, DLPreprocessParam)

4. 执行深度学习推理:

* Apply the DL model on the DLSampleBatch.

apply_dl_model (DLModelHandle, DLSampleBatch, [], DLResultBatch)

5. 处理结果数据:

get_dict_tuple (DLResult, 'bbox_length2', BboxLength2)

get_dict_tuple (DLResult, 'bbox_phi', BboxPhi)

get_dict_tuple (DLResult, 'bbox_class_id', BboxClasses)

6. 显示结果:

dev_display (RectangleSelected)

dev_disp_text (TextResults, 'window', 'top', 'left', BboxColorsResults, 'box', 'false')  

1.4.2  HALCON AI加速器接口 (AI²)

MVTec 的 OpenVINO™工具套件插件基于全新 HALCON AI 加速器接口 (AI²)。通过这一通用接口,客户可以快速方便地将支持的 AI 加速器硬件用于深度学习应用的推理环节。

这些特殊设备不仅在嵌入式环境中得到广泛应用,也越来越多地出现在 PC 环境中。AI 加速器接口从特定硬件中抽象出深度学习模型,因而特别能够适应未来发展。

MVTec 作为机器视觉软件的技术领导者,其软件可以在工业物联网环境中,通过使用3D视觉、深度学习和嵌入式视觉等现代技术,实现新的自动化解决方案。

除 MVTec 提供的插件外,还可以集成客户特定的 AI 加速器硬件。此外,不仅典型深度学习应用可以通过 AI² 加速,所有集成深度学习功能的“经典”机器视觉方法,例如 HALCON 的 Deep OCR,也能从中受益。

1.4.3  使用DLT工具进行深度学习模型的数据标注和训练

DeepLearningTool(DLT)是MVTec推出的一款用于深度学习标注和训练的免费工具。使用深度学习工具,您可以凭借直观的用户界面轻松地标记数据,而无需任何编程知识。 可以将这些数据无缝集成到 HALCON 中,以执行基于深度学习的物体检测,分类,语义分割,实力分割,异常值检测以及 Deep OCR。

以下是我们使用DLT进行例程中模型标注和训练的视频:

使用DLT标注并训练实例分割模型

1.4.4  HALCON 基于OpenVINO的AI推理范例程序

本文中,我们使用的是基于HALCON的深度学习对象检测的官方范例程序。

本文中所使用的基于OpenVINO™HALCON范例代码已分享到MVTec官网,网址为:https://www.mvtec.com/cn/technologies/deep-learning/ai-accelerator-interface

--------------------------------------------------------------------------------------

下载后将该程序保存至任意路径下。

如果推理需要加载重新训练的深度学习模型和预训练参数,需要使用HALCON的开发环境Hdevelop先运行官方路径%HALCONEXAMPLES%/hdevelop/Deep-Learning/Detection/的范例程序,从而可以完成训练并保存模型:

  • dl_detection_with_orientation_workflow.hdev

等待训练和测试程序运行完成后,会在相应路径下保存训练好的模型(model_best.hdl)和图片预处理的参数(DLPreParam.hdict),可以去替换范例程序里的文件。

打开下载好的示例程序,本地路径下对应的模型和预处理参数,如以下代码所示:

RetrainedModelFileName:='model_best.hdl'

PreprocessParamFileName:='DLPreParam.hdict'

例程中用到的演示图片是Halcon数据集中的screws 文件夹,如果HALCON安装正确的话,是在 HALCONEXAMPLES 路径中的,直接使用下面代码可以找到。

list_image_files ('screws', 'default', [], ImageFiles)

接着运行范例(或按F5),首先需要查询HALCON所支持的OpenVINO™设备:

* This example needs the HALCON AI²-interface for the Intel® Distribution of the OpenVINO™ Toolkit * and a installed version of the Intel® Distribution of the OpenVINO™ Toolkit.

query_available_dl_devices ('ai_accelerator_interface', 'openvino', DLDeviceHandlesOpenVINO)

之后,继续执行程序,在可视化界面会依次显示所有查询到的OpenVINO™设备信息,包括本文所需使用的Intel Arc A770独立显卡,这里我们看到支持的推理精度有FP32和FP16,如下所示。

然后,需要选择OpenVINO™设备,目前HALCON AI²接口所支持的OpenVINO™设备包括Intel的CPU,GPU,HDDL以及MYRIAD。在安装HALCON时,只内置安装了CPU插件,需要额外安装OpenVINO™工具套件来支持GPU等其他设备,具体安装参考章节1.3.2。这里我们指定OpenVINO™运行设备为“GPU”,即Intel的独立显卡,如果要选择其他OpenVINO™设备,可以修改设备序号以选择对不同的设备通道。

* Choose a OpenVINO device

DLDeviceOpen :=DLDeviceHandlesOpenVINO[3]

set_dl_model_param (DLModelHandle, 'device', DLDeviceOpen)

此处程序,会针对设备做推理优化,得到经过OpenVINO™加速优化的推理模型。如果没有额外设置,精度上使用的是默认的float32。

--------------------------------------------------------------------------------------

本次例程没有使用C#或者C++来联合编程和编写界面,全部在HALCON中完成;需要按照例程中的说明文字调节下HDevelop中调节下窗口显示;确认调节完成后再次按下F5,例程循环运行至结束。

得到的显示界面和结果如下图所示:

图片中可以看到算法准确地找到了 背景上物体地位置和方向,也标注了对应地类别。在结果显示地部分可以看到检测地数据结果,比如每个类别的得分,种类,详细的坐标和角度。 同事在图片的右上角中,可以看到使用OpenVINO加速后的算法运行速度,每张图片的算法运行时间在15~19ms左右;基本能够满足高节拍生成的需求。

此外,例程中为了增强演示效果,在某些图片处理结果后增加了等待延时,主要是用于显示。

推理的工作流程可以参考1.4.1章节,在执行推理的同时,可以打开任务管理器,观察Intel独立显卡的运行状态。范例中,默认使用FP32精度加速推理,也可以根据具体需要切换成FP16精度进行对比测试。

在英特尔A380显卡上,也有明显的加速性能

在英特尔独立显卡上加速Halcon AI模型推理

1.5  总结

MVTec HALCON AI加速器接口(AI²)可帮助 MVTec 软件产品用户充分利用与OpenVINO™工具套件兼容的 AI 加速器硬件。如此一来,对于关键工作负载,可以在 Intel计算设备上明显缩短深度学习推理时间。

由于支持硬件范围得到扩展,用户现在可以充分利用各种 Intel 设备的性能来加速深度学习应用,不再局限于少数特定设备。同时,这种集成可以无缝进行,不受特定硬件细节约束。现在只需更改参数,即可在 OpenVINO™工具套件支持的设备上执行现有深度学习应用的推理过程。

猜你喜欢

转载自blog.csdn.net/gc5r8w07u/article/details/134941811
今日推荐