AI 智能加速器接口 (AI2) - 英特尔® OpenVINO™ 工具包分发版
|
接口:
|
OpenVINO
|
|
修订:
|
21.05.2.1
|
|
日期:
|
Apr 20, 2023
|
一般情况
本页提供用于英特尔
® OpenVINO
™ 工具包发行版的 HALCON AI
2 接口的文档。
注册 客户可从
MVTec WWW 服务器下载该接口的最新版本。自 HALCON 21.05 版起,该接口已成为 HALCON 软件包本身的一部分。
该 AI2 接口可用于在支持的硬件(如 CPU、Intel® GPU 和 Movidius™ Myriad™ VPU)上执行优化推理。
系统要求
功能
- 经过预训练的交付模型可以优化为 float32 (FP32) 和 float16 (FP16) 精度推理。
- HALCON 支持以下 OpenVINO™ 工具包设备和插件:
- CPU(无需安装步骤)
- GPU
- VPU: HDDL, MYRIAD
- 要获取有关设备和插件的更多信息,请参阅 OpenVINO™ 工具包文档: OpenVINO™ 支持的设备 。
安装
- 该接口的 CPU 插件可作为 HALCON 软件包的一个组件安装。
- 其余组件需要手动安装。这是必要的,因为大多数 OpenVINO™ 工具包插件都需要安装额外的驱动程序和程序,它们随 OpenVINO™ 工具包一起提供。
- 可在此处下载 OpenVINO™ 工具包的安装程序:
OpenVINO™ 安装包
- 可下载以下安装程序并用于此接口:
- 环境:运行时
- 操作系统: Windows, Linux
- OpenVINO™ 版本: 2021.4 LTS
- 语言:Python
- 分发: 离线安装程序
- 下载该工具后,请按照安装程序的说明进行操作。
- 要使用除 CPU 之外的 OpenVINO™ 工具包插件,必须在 OpenVINO™工具包环境中启动用于 OpenVINO™ 工具包的 HALCON AI2 接口。这可以使用随 Windows 或 Linux 版 OpenVINO™ 工具包一起提供的 setupvars.bat 或 setupvars.sh 文件来完成。这些文件位于 OpenVINO™ 工具包安装目录的 bin/ 文件夹中。
- 使用 HDDL 插件时,建议将 HDDL 守护程序 (hddldaemon) 作为单独进程启动,例如在启动操作系统或应用程序时。否则,OpenVINO™ 工具包会在首次使用插件时初始化 hddldaemon。初始化需要一些时间,并且会阻塞调用线程。
故障排除
在 Windows 上使用已安装版本的 OpenVINO
™ 工具包时,可能会与第三方库(如 libprotobuf 或 tbb)发生冲突。该问题在 HALCON 中表现为错误信息或崩溃。
解决这个问题的办法是从
路径变量中移除程序/库,因为这些程序/库可能与 OpenVINO
™ 使用相同的第三方库。
这是一个由第三方库 tbb.dll 冲突引起的错误消息示例:
"The procedure entry point ?internal_current_slotinternal@
interface7@KAHXZ could not be located in the dynamic link library
C:\Program Files\MVTec\HALCON-21.05-Progress\bin\x64-win64\thirdparty\
openvino\inference_engine.dll."
局限性
- HALCON 目前不支持 GNA、多设备、自动设备和异构插件等插件。
- 以下列表概述了某些 OpenVINO™ 工具包插件对 HALCON 中交付的预训练模型的当前模型精度限制:
| 模型 |
CPU |
GPU |
MYRIAD |
文件 |
| FP32 |
FP16 |
FP32 |
FP16 |
FP16 |
| 三维抓取点检测 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_3d_gripping_point.hdl |
| 异常检测 大型 |
✔ |
✔ |
✔ |
✔ |
✔ |
initial_dl_anomaly_large.hdl |
| 异常检测 中型 |
✔ |
✔ |
✔ |
✔ |
✔ |
initial_dl_anomaly_medium.hdl |
| 分类 AlexNet |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_classifier_alexnet.hdl |
| 分类 紧凑型 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_classifier_compact.hdl |
| 分类 增强 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_classifier_enhanced.hdl |
| 分类 MobileNetV2 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_classifier_mobilenet_v2.hdl |
| 分类 ResNet50 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_classifier_resnet50.hdl |
| 分类 ResNet18 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_classifier_resnet18.hdl |
| 计数 |
✔ |
✔ |
✔ |
✔ |
✔ |
使用 create_deep_counting_model 创建的模型,骨干网:pretrained_dl_classifier_resnet50.hdl |
| 物体检测 紧凑型 |
✔ |
✔ |
✔ |
✔ |
✔ |
使用 create_dl_model_detection 创建的模型,骨干:pretrained_dl_classifier_compact.hdl |
| 分割 边缘提取 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_edge_extractor.hdl |
| 全局上下文异常检测 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_gc_anomaly.hdl ('gc_anomaly_networks' = ['local', 'global']) |
| 全局上下文异常检测 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_gc_anomaly.hdl ('gc_anomaly_networks' = ['local']) |
| 全局上下文异常检测 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_gc_anomaly.hdl ('gc_anomaly_networks' = ['global']) |
| 实例分割 |
✖ |
✖ |
✖ |
✖ |
✖ |
使用 create_dl_model_detection创建的模型,所有骨干 |
| OCR 检测 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_deep_ocr_detection.hdl |
| OCR 识别 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_deep_ocr_recognition.hdl |
| 分割 紧凑型 |
✔ |
✖ |
✔ |
✖ |
✖ |
pretrained_dl_segmentation_compact.hdl |
| 分割 增强 |
✔ |
✔ |
✔ |
✔ |
✔ |
pretrained_dl_segmentation_enhanced.hdl |
- 关于用户创建或读入的其他模型(例如,通过 HALCON 算子 read_dl_model 读入 ONNX 格式的模型),请参阅 OpenVINO™ 工具包的层限制文档(英特尔® OpenVINO™ 层文档 )。
算子
下文将详细介绍 OpenVINO™ 工具包在 HALCON 算子集中的使用。本文档侧重于解释 OpenVINO™ 工具包 HALCON AI2 接口的特定参数。如需了解更多信息,请参阅 HALCON 算子文档。
算子 get_dl_device_param 返回所选设备的可用参数值。一般来说,以大写字母书写的参数是 OpenVINO™ 工具包的本地参数。这些参数的文档可在 OpenVINO™ 工具包文档中找到。
- 字典 "info" 包含有关设备和接口的其他信息:
- 'is_available': 该参数表示设备当前可用。
有些设备,例如 MYRIAD 设备,一次只能使用一个模型进行推理。在这种情况下,只要模型还在设备上,该参数就是 "false",也就是说,直到使用算子 set_dl_model_param 更改了模型的 "设备 "或销毁了模型。
MYRIAD 设备无法使用的另一种情况是使用 HDDL 设备。这种伪设备将所有 MYRIAD 芯片绑定到一个虚拟设备中。一旦完成绑定,MYRIAD 设备将不再可用(另请参阅 "is_initialized" 文档)。
从技术上讲,通过调用 OpenVINO™ 工具包 InferenceEngine::Core::GetAvailableDevices() 函数,在调用 query_available_dl_devices 时创建一次 OpenVINO™ 工具包设备列表。之后,所有设备都可用,只要 InferenceEngine::Core::GetAvailableDevices() 报告了这些设备,"is_available" 就会保持为 "true"。
- 'is_initialized': 该参数表示设备已初始化以供使用。
只有在使用 set_dl_device_param 通过将 "settable_device_params" 字典中的 "initialize" 键设置为 "true" 来显式初始化 HDDL 设备之前,该值才会为 "false"。之所以引入这一额外步骤,是因为一旦 HDDL 设备被初始化,所有 MYRIAD 设备都将不可用。
- 'openvino_device_id': 该参数报告 OpenVINO™ 工具包使用的设备 ID。
- 'openvino_version': AI2 接口使用的 OpenVINO™ 工具包版本。
- 其他参数取自 OpenVINO™ 工具包内部接口。更多信息,参见 OpenVINO™ 工具包的 Metrics 文档 。
- 字典 "optimize_for_inference_params" 返回 optimize_dl_model_for_inference 算子的默认定义转换参数。由于 OpenVINO™ 工具包中没有此类参数,因此该字典始终为空。
- 字典 "settable_device_params" 返回一个包含可设置设备参数的字典:
- 'log_level': 插件的日志级别。可能的值有 "error错误"(默认)、"warn警告"、"info信息" 和 "none无"。在 HDevelop 中,日志信息会报告到 HDevelop 输出控制台。
- 'initialize': 使用此参数可显式初始化 HDDL 设备。
请注意,这是一次性操作,在不启动新进程的情况下,设备无法取消初始化。此外,它会导致所有 MYRIAD 设备不可用。要重新启用这些设备,必须停止 hddldaemon 程序,用户必须使用 bsl_reset 工具重置设备(更多信息,请参阅 OpenVINO™ 工具包官方文档)。
- 每个 OpenVINO™ 工具包设备都有几个额外的配置参数。它们与 OpenVINO™ 工具包 SUPPORTED_CONFIG_KEYS 度量所报告的值相对应。这些参数的文档可在 OpenVINO™ 工具包文档中找到。有关示例,请参阅 CPU 插件文档。
请注意,OpenVINO™ 工具包不会报告所有配置参数的实际设置,因此可设置的设备参数并不一定反映当前的设备状态。例如,空字符串通常表示默认值,尽管默认值没有明确说明。只有用户明确设置的参数才会传递给 OpenVINO™ 工具包插件,并在每次使用设备时应用。
要查询所有可用的 OpenVINO™ 工具包深度学习设备,请使用:
| 参数 |
值列表 |
类型 |
描述 |
| 'ai_accelerator_interface' |
'openvino' |
字符串 |
以 DLDeviceHandles 的形式返回所有可用的 OpenVINO™ 工具包设备。 |
HDevelop 示例
该接口有以下示例:
- examples/hdevelop/Deep-Learning/AI2Interfaces/optimize_dl_model_for_inference_classification_openvino.hdev - 使用 OpenVINO™ 工具包设备优化预训练分类模型。
第三方库的使用
发行说明
- 修订 21.05.2.1(2022 年 4 月 20 日):
- 在支持本地 avx512_bf16 指令的 CPU 上,get_dl_device_param 将 bfloat16 作为 cast_precision 返回,但无法在 optimize_dl_model_for_inference 中将其用作精度。该问题已得到修复。现在,bfloat16 不再作为 cast_precision 返回,因为在支持所需指令的 CPU 上总是隐式使用。请注意,可以通过将参数 ENFORCE_BF16 设置为 NO 来禁用它。
- 扩展了文档内容,增加了有关深度计数模型的信息。
- 更新了全局上下文异常检测模型文档中的支持模型和精度表。
- 修订 21.05.2.0(2022 年 11 月 3 日):
- 修订 21.05.1.3(2022 年 5 月 6 日):
- 文档中的某些 HTML 链接不起作用。该问题已得到修复。
- 修订 21.05.1.2(2022 年 3 月 23 日):
- 扩展了文档内容,增加了有关全局上下文异常检测模型的信息。
- 链接已修复
- 修订 21.05.1.1(2021 年 10 月 29 日):
- 修订 21.05.1.0(2021 年 7 月 30 日):
- AI2 OpenVINO™ 工具包初始接口
- 提供的示例是 optimize_dl_model_for_inference_classification_openvino.hdev
- 支持的 OpenVINO™ 工具包英特尔® 注册发行版为 2021.4 LTS 版本。
- OpenVINO™ AI2 工具包接口可与 HALCON Progress 21.05 及更高版本一起使用
- 支持 OpenVINO™ 工具包插件: CPU、GPU、HDDL、MYRIAD
- 支持的模型精度:"float32"、"float16"
关于超链接的免责声明:
用户可通过本页面的超文本链接访问外部非 MVTec 网站。任何此类访问均应理解,非 MVTec 网站的内容不受 MVTec Software GmbH 的控制,MVTec Software GmbH 对此类网站不作任何陈述,用户应自行承担风险。MVTec Software GmbH 不对外部非 MVTec 网站的隐私保护措施或内容负责。
版权说明:
© MVTec Software GmbH 版权所有。保留所有权利。除非另有说明,本页面内容的版权和类似权利,包括但不限于此处出现的所有文本、设计和图像,均为 MVTec Software GmbH 所拥有的版权作品。"MVTec Software GmbH" 和 "HALCON" 是 MVTec Software GmbH 的注册商标。
英特尔®、英特尔®徽标、OpenVINO™ 和 OpenVINO™ 徽标是英特尔®司或其子公司的商标。所有其他国家和国际公认的商标和商号均在此得到承认。
此处提及或使用的所有其他品牌名称、设计、服务标志和商标(无论是否注册)均为其各自所有者的财产。