ZHCACO4 may 2023 AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM68A , AM69A
一旦确认模型可正常工作,即可围绕其构建端到端应用。
端到端应用涉及获取摄像头的实时输入、预处理、运行模型以及使用适合实际用例的输出执行某种操作。在零售扫描仪用例中,上述某种操作 是使用已识别的对象为顾客填充和显示订单。
要在 Linux 中构建数据处理流水线,建议使用 gstreamer (GST)。借助 edgeai-gst-apps 中使用的 GST 插件,除应用程序代码外的所有内容都可以完全通过 GST 流水线来完成。GST 流水线允许以并行流式方式进行不同的处理阶段,与单线程程序相比,这提高了整体性能。TI 提供的插件可与硬件加速器进行交互,以进行图像处理和深度学习。对于最终应用,GST 可以使用 appsink 和 appsrc 插件分别将接口暴露在应用程序代码中和应用程序代码之外。
在零售扫描仪应用中(参阅 gst_configs.py),将检索对 appsink 的引用,并将其用于“提取样本”,该样本包含一个表示数据块的原始字节数组。这可能是神经网络的图像、音频块或输出张量。需要事先了解数据的结构,例如维度和像素格式。对于图像等典型数据(在 GST 术语中,为 raw/x-video),描述 GST 插件输入和输出的“cap”提供了有关分辨率和像素格式的信息。
在首次设计零售扫描仪演示应用程序时,直接的方式是采用 RGB 格式以完整分辨率从相机中拉出输入帧。Python 应用程序代码处理了预处理、推理、后处理,并将收条式图像添加到要显示的最终帧中。该应用程序借用自主 apps_python 代码,但 display.py 中的额外图像处理速度缓慢,并且延迟变化非常大。对于刷新所有元件和测试功能,这没有问题,但对于交互式应用程序而言,在大约 5fps 至 6fps 的帧速率下,延迟长达 3 秒是无法接受的。mobilenetv2SSD 模型在大于 60fps 时识别食物的速度非常快,但 Arm CPU 上的应用程序代码太慢,无法满足模型推理或 30fps 摄像头的需求。