ZHCACO4 may   2023 AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM68A , AM69A

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 目标读者
    2. 1.2 主机信息
  5. 2创建数据集
    1. 2.1 收集图像
    2. 2.2 标记图像
    3. 2.3 增强数据集(可选)
  6. 3选择模型
  7. 4训练模型
    1. 4.1 输入优化(可选)
  8. 5编译模型
  9. 6使用模型
  10. 7构建最终应用
    1. 7.1 使用 TI 的 Gstreamer 插件优化应用
    2. 7.2 使用原始 MIPI-CSI2 摄像头
  11. 8总结
  12. 9参考文献

构建最终应用

一旦确认模型可正常工作,即可围绕其构建端到端应用。

端到端应用涉及获取摄像头的实时输入、预处理、运行模型以及使用适合实际用例的输出执行某种操作。在零售扫描仪用例中,上述某种操作 是使用已识别的对象为顾客填充和显示订单。

要在 Linux 中构建数据处理流水线,建议使用 gstreamer (GST)。借助 edgeai-gst-apps 中使用的 GST 插件,除应用程序代码外的所有内容都可以完全通过 GST 流水线来完成。GST 流水线允许以并行流式方式进行不同的处理阶段,与单线程程序相比,这提高了整体性能。TI 提供的插件可与硬件加速器进行交互,以进行图像处理和深度学习。对于最终应用,GST 可以使用 appsinkappsrc 插件分别将接口暴露在应用程序代码中和应用程序代码之外。

在零售扫描仪应用中(参阅 gst_configs.py),将检索对 appsink 的引用,并将其用于“提取样本”,该样本包含一个表示数据块的原始字节数组。这可能是神经网络的图像、音频块或输出张量。需要事先了解数据的结构,例如维度和像素格式。对于图像等典型数据(在 GST 术语中,为 raw/x-video),描述 GST 插件输入和输出的“cap”提供了有关分辨率和像素格式的信息。

在首次设计零售扫描仪演示应用程序时,直接的方式是采用 RGB 格式以完整分辨率从相机中拉出输入帧。Python 应用程序代码处理了预处理、推理、后处理,并将收条式图像添加到要显示的最终帧中。该应用程序借用自主 apps_python 代码,但 display.py 中的额外图像处理速度缓慢,并且延迟变化非常大。对于刷新所有元件和测试功能,这没有问题,但对于交互式应用程序而言,在大约 5fps 至 6fps 的帧速率下,延迟长达 3 秒是无法接受的。mobilenetv2SSD 模型在大于 60fps 时识别食物的速度非常快,但 Arm CPU 上的应用程序代码太慢,无法满足模型推理或 30fps 摄像头的需求。