ZHCAF23A February   2025  – March 2025 AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM67A , TDA4AEN-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2构建 RGB-IR 视觉流水线模块
    1. 2.1 CSI 接收器
    2. 2.2 图像信号处理器
    3. 2.3 视频处理单元
    4. 2.4 德州仪器 (TI) 深度学习加速技术
    5. 2.5 GStreamer 与 TIOVX 框架
  6. 3性能注意事项与基准测试工具
  7. 4参考设计
    1. 4.1 摄像头模块
    2. 4.2 传感器驱动程序
    3. 4.3 CSI-2 Rx 驱动程序
    4. 4.4 图像处理
    5. 4.5 适用于驾驶员与乘员监控的深度学习
    6. 4.6 参考代码与应用
  8. 5应用示例与基准测试
    1. 5.1 应用 1:利用 GST 进行单数据流采集与可视化
    2. 5.2 应用 2:利用 GST 与 TIOVX 框架进行双流采集与可视化
    3. 5.3 应用 3:GStreamerr 的代表性 OMS-DMS + 视频电话流水线
  9. 6总结
  10. 7参考资料
  11. 8修订历史记录

GStreamer 与 TIOVX 框架

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 是更合适的选择。