OpenVX便携式、高能效的视觉处理
OpenVX 1.3.1 来了!
OpenVX 1.3.1 规范于 2022 年 2 月 2 日发布
OpenVX™ 是一种开放、免版税的标准,用于计算机视觉应用程序的跨平台加速。OpenVX 支持性能和功耗优化的计算机视觉处理,这在嵌入式和实时用例中尤为重要,例如面部、身体和手势跟踪、智能视频监控、高级驾驶辅助系统 (ADAS)、物体和场景重建、增强现实、视觉检查、机器人等。
OpenVX:视觉加速
OpenVX 通过可重用的视觉加速功能轻松扩展到每个低功耗领域。这为OpenVX和开发人员提供了一个关键优势,促进了广泛的采用,这提供了以下内容:
免版税开放标准 API,由硬件供应商可靠地加速,并严格定义一致性测试。
面向低功耗实时应用,包括移动和嵌入式平台。
跨各种异构处理器的可移植性,包括 ISP、专用硬件、DSP 和 DSP 阵列、GPU、多核 CPU 等。
不需要高功率 CPU/GPU 复合体。低功耗主机可以设置和管理帧速率视觉处理管道。
OpenVX 图形
OpenVX 允许图形级处理优化,这允许实现在可能的情况下融合节点以实现更好的整体性能。该图还允许自动图级内存优化,以实现低内存占用。OpenVX 图形优化工作负载可以部署在各种计算机硬件上,包括小型嵌入式 CPU、ASIC、APU、独立 GPU 和异构服务器。
OpenVX 开发人员表示一个称为“节点”的图像操作图,它可以位于任何以任何语言编码的任何硬件或处理器上。
OpenVX Graphs 使实施能够优化功耗和性能。实现可以融合节点以消除内存传输,并且可以平铺处理以将数据完全保存在本地内存/缓存中。
在帧速率图执行期间,OpenVX Graph 将主机交互降至最低。主机处理器可以设置一个图形,然后几乎可以自主执行。
分层视觉处理生态系统
实现者可以使用 OpenCL 或计算着色器在可编程处理器上实现 OpenVX 节点。开发人员可以使用 OpenVX 轻松地将这些节点连接到图形中。OpenVX 图形使实施者能够优化不同硬件架构的执行。OpenVX 使图形能够扩展,以包括不支持可编程 API 的硬件架构。
一致性实施
硬件供应商提供优化的 OpenVX 驱动程序,其架构旨在从其芯片架构中获得最佳性能,并可供开发人员使用。以下供应商提供符合要求的 OpenVX 驱动程序:
OpenVX 1.3 的新增功能
现在 OpenVX API 已经发展到一组广泛的功能,人们有兴趣创建针对一组功能的实现,而不是涵盖整个 OpenVX API。为了在提供此选项的同时仍管理 API,以防止在哪些实现提供哪些功能方面出现过度碎片化,OpenVX 1.3 规范定义了一组功能集,这些功能集构成了 OpenVX API 的连贯且有用的子集。这些功能集包括:
基本功能集(基本图形基础结构)
视觉(OpenVX 1.1 等效视觉功能)
增强视觉(OpenVX 1.2 中引入的视觉功能)
神经网络(OpenVX 1.2 等效的神经网络函数,以及神经网络扩展和张量对象)
NNEF(内核导入加上张量对象)
二进制映像支持 (U1)
部署功能集(用于安全关键用途)
随着 OpenVX 1.3 的发布,流水线、神经网络和导入内核扩展也在更新。有关所有扩展和功能的列表,请转到 OpenVX 注册表 。
OpenVX 历史
OpenVX 规范和一致性测试于 2014 年发布。随后是 2015 年的 1.0.1 版规范和开源示例实现,2016 年嵌入式视觉峰会的 1.1 版,以及 2017 年嵌入式视觉峰会的 1.2 版。
OpenVX 功能集
为了在避免碎片化的同时实现部署灵活性,OpenVX 1.3 定义了许多针对常见嵌入式用例的功能集。硬件供应商可以在其实施中包含一个或多个完整的功能集,以满足其客户的需求并完全符合要求。OpenVX 的灵活性支持在各种加速器架构上部署,并且功能集有望显著增加可用 OpenVX 实现的广度和多样性。定义的 OpenVX 1.3 功能集包括:
图形基础结构(其他功能集的基线),
默认愿景,
增强视觉(OpenVX 1.2 中引入的功能),
神经网络推理(包括张量对象),
NNEF 内核导入(包括张量对象),
二进制图像,
安全关键(减少功能,以便更轻松地进行安全认证)。
OpenVX 和 OpenCV 是互补的
|
OpenCV |
OpenVX |
实现 |
社区驱动的开源库 |
由硬件供应商实施、优化和交付的可调用 API |
范围 |
100 多种成像和视觉功能 |
紧紧关注数十个核心硬件加速功能以及扩展和加速自定义节点。 |
一致性 |
广泛的 OpenCV 测试套件,但没有正式的 |
实施必须通过 Khronos 一致性测试套件才能使用商标 |
知识产权保护 |
没有。源代码在 BSD 下获得许可。 |
受 |
加速度 |
OpenCV |
实现免费使用任何底层 API,例如 |
效率 |
OpenCV |
所有节点的基于图形的执行。 |
推理 |
深度神经网络模块,用于从层构建网络,仅用于前向传递计算。 |
直接在 OpenVX Graph 中表示的神经网络层和操作。 |
参考文献链接
https://www.khronos.org/openvx/