ZHCAF23A February 2025 – March 2025 AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM67A , TDA4AEN-Q1
AM6xA 器件支持两种视觉框架:GStreamer 与 OpenVX。确切地说,德州仪器 (TI) 已实施并且符合 OpenVX 标准;该实施方案被命名为德州仪器 OpenVX (TIOVX)。该等框架支持片上硬件加速器(例如:C7xMMA 与 ISP)。在底层架构中,该等框架能够处理 IPC 与数据管理,以便降低应用级复杂性。
GStreamer (GST) 是一个基于 Linux 的开源多媒体流水线框架。流水线由能够实现特定功能的插件构成(例如:采集图像、更改数据格式、缩放大小、压缩或写入文件)。虽然支持使用多种社区插件,但使用德州仪器 (TI) 提供的插件(利用片上加速器)能够获得最佳性能。在 Edge AI SDK 中,可提供该等插件,源代码可用于修改或扩展德州仪器 (TI) 插件。GST 对于快速构建与测试流水线特别有效。除了 C++、Python 以及其他语言支持以外,GST 流水线还可以直接通过命令行运行。例如:
v4l2src device=/dev/video-usb-cam0 ! image/jpeg, width=1280, height=720 ! jpegdec ! video/x-raw, format=NV12 ! kmssink driver-name=tidss sync=true
上述流水线由以“!”分隔符分隔的单个插件组成。该流水线能够从利用 v4l2 的 USB 摄像头读取图像,解码 JPEG 编码图像,将帧编码转换为 NV12,并且通过 Linux 的 KMS/DRM 接口将帧推送到显示子系统 (DSS),以便在显示器上实现可视化。流水线很可能非常庞大和复杂,但仍然可以通过命令行运行,而无需进行其他编码。
TIOVX 是用于在异构 SoC 上构建视觉流水线的底层框架。与 GST 相类似,流水线由非循环图中的节点组成,每个节点能够在目标内核上运行一个函数。例如,在 ISP 上处理原始帧或在 C7xMMA 上运行神经网络。TIOVX 应用采用 C/C++ 编写,且需对 SOC 有更多的了解。在底层架构中,GST 利用 TIOVX 与硬件加速器进行通信。GST 需要与 Linux 进行更多交互,以便传递来自插件的控制信号,而 TIOVX 则允许内核更直接地通信。TIOVX 能够在包括 Linux 与 QNX 的诸多操作系统间移植,适用于功能安全 (FuSa) 认证应用。也正因此,TIOVX 成为汽车级与其他 ASIL 和 SIL 等级用例的绝佳选择。在中断使用方面,TIOVX 框架的效率略高于 GST;但是,在帧速率、加速器利用率以及 DDR 带宽方面,GST 与 TIOVX 几乎不相上下。
请注意,对于深度学习模型,TIOVX 应用将用户限制为使用 TIDL_RT;运行时,不能通过 TIOVX 使用 ONNX Runtime 等开源运行时框架 (OSRT)。OSRT 的作用之一是为 TIDL 不支持的层提供备用实施。因此,通过仅使用 TIOVX 的应用程序直接调用 TIDL_RT,这意味着,对于神经网络中的所有层均必须由 TIDL 提供支持。
大多数情况下,GST 足以在运行 Linux 的 TI AM6xA SoC 上构建视觉处理应用。如果需要功能安全与其他操作系统,TIOVX 是更合适的选择。