This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VM:[TDA4VM-SK]在 Linux SDK 上构建定制摄像头 GUI

Guru**** 2835910 points

Other Parts Discussed in Thread: TDA4VM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1629673/tda4vm-tda4vm-sk-build-custom-camera-gui-on-linux-sdk

器件型号: TDA4VM

尊敬的团队:
我们正在使用 TDA4VM 入门套件。  

目前已实现:
1.我们可以按照 Processor SDK Linus TDA4VM SK(使用 Yocto 构建)中所述的步骤下载和构建 Linux SDK (11.00.00.08) 并刷写 SD 卡。
2.通过 SD 卡映像,我们可以看到 TI Edge AI GUI。
3.我们对设备树覆层进行了必要的更改,并将 imx219 相机连接到入门套件的软件
4.在 TI Edge AI GUI 中、通过使用检测实时摄像头源中物体的 AI 模型、我们可以查看摄像头源。

我们希望实现更进一步的目标
1.现在我们想创建一个自定义 GUI ,在启动时,可以直接看到摄像头馈送,对象检测 AI 模型在摄像头馈送上运行

请同样指导我们。

此致、
Soorya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Soorya:

    请尽管参考 GUI 的源代码: https://git.ti.com/cgit/apps/edgeai-gui-app/tree/README.md

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    藤原孝磨你好 
    感谢您的回复、我能够修改源代码。

    需要有关多个推理视图的流配置的指导。

    我们希望在 edgeai-gui-app 上点击用户按钮时显示该视图、

    我们尝试遵循流水线定义、并将其传递到后端并触发流水线、但该视图根本没有触发、卡住了

    static string j721e_multi_inf_pipeline = "multifilesrc location=/opt/oob-demo-assets/oob-gui-video2.h264 loop=true stop-index=-1 ! h264parse ! v4l2h264dec capture-io-mode=5 ! tiovxmemalloc pool-size=12 ! video/x-raw, format=NV12 ! \
                                                tiovxmultiscaler name=split_01 src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=764 target=0 \
                                                \
                                                split_01. ! queue ! video/x-raw, width=320, height=320 ! tiovxdlpreproc model=/opt/model_zoo/TFL-OD-2020-ssdLite-mobDet-DSP-coco-320x320  out-pool-size=4 ! application/x-tensor-tiovx ! tidlinferer target=1 model=/opt/model_zoo/TFL-OD-2020-ssdLite-mobDet-DSP-coco-320x320 ! post_0.tensor \
                                                split_01. ! queue ! video/x-raw, width=480, height=272 ! post_0.sink \
                                                tidlpostproc name=post_0 model=/opt/model_zoo/TFL-OD-2020-ssdLite-mobDet-DSP-coco-320x320 alpha=0.2 viz-threshold=0.500000 top-N=5 display-model=true ! queue ! mosaic_0. \
                                                \
                                                multifilesrc location=/opt/oob-demo-assets/oob-gui-video2.h264 loop=true stop-index=-1 ! h264parse ! v4l2h264dec capture-io-mode=5 ! tiovxmemalloc pool-size=12 ! video/x-raw, format=NV12 ! \
                                                tiovxmultiscaler name=split_11 src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=768 target=1 \
                                                \
                                                split_11. ! queue ! video/x-raw, width=416, height=416 ! tiovxdlpreproc model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416  out-pool-size=4 ! application/x-tensor-tiovx ! tidlinferer target=1 model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 ! post_1.tensor \
                                                split_11. ! queue ! video/x-raw, width=480, height=272 ! post_1.sink \
                                                tidlpostproc name=post_1 model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 alpha=0.2 viz-threshold=0.500000 top-N=5 display-model=true ! queue ! mosaic_0. \
                                                \
                                                multifilesrc location=/opt/oob-demo-assets/oob-gui-video2.h264 loop=true stop-index=-1 ! h264parse ! v4l2h264dec capture-io-mode=5 ! tiovxmemalloc pool-size=12 ! video/x-raw, format=NV12 ! \
                                                tiovxmultiscaler name=split_21 src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=768 target=0 \
                                                \
                                                split_21. ! queue ! video/x-raw, width=224, height=224 ! tiovxdlpreproc model=/opt/model_zoo/ONR-CL-6360-regNetx-200mf  out-pool-size=4 ! application/x-tensor-tiovx ! tidlinferer target=1 model=/opt/model_zoo/ONR-CL-6360-regNetx-200mf ! post_2.tensor \
                                                split_21. ! queue ! video/x-raw, width=480, height=272 ! post_2.sink \
                                                tidlpostproc name=post_2 model=/opt/model_zoo/ONR-CL-6360-regNetx-200mf alpha=0.2 viz-threshold=0.500000 top-N=5 display-model=true ! queue ! mosaic_0. \
                                                \
                                                multifilesrc location=/opt/oob-demo-assets/oob-gui-video2.h264 loop=true stop-index=-1 ! h264parse ! v4l2h264dec capture-io-mode=5 ! tiovxmemalloc pool-size=12 ! video/x-raw, format=NV12 ! \
                                                tiovxmultiscaler name=split_31 src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=768 target=1 \
                                                \
                                                split_31. ! queue ! video/x-raw, width=512, height=512 ! tiovxdlpreproc model=/opt/model_zoo/ONR-SS-8610-deeplabv3lite-mobv2-ade20k32-512x512  out-pool-size=4 ! application/x-tensor-tiovx ! tidlinferer target=1 model=/opt/model_zoo/ONR-SS-8610-deeplabv3lite-mobv2-ade20k32-512x512 ! post_3.tensor \
                                                split_31. ! queue ! video/x-raw, width=480, height=272 ! post_3.sink \
                                                tidlpostproc name=post_3 model=/opt/model_zoo/ONR-SS-8610-deeplabv3lite-mobv2-ade20k32-512x512 alpha=0.2 viz-threshold=0.500000 top-N=5 display-model=true ! queue ! mosaic_0. \
                                                \
                                                \
                                                tiovxmosaic name=mosaic_0 target=1 src::pool-size=4 \
                                                sink_0::startx=\"<0>\" sink_0::starty=\"<0>\" sink_0::widths=\"<480>\" sink_0::heights=\"<272>\" \
                                                sink_1::startx=\"<480>\" sink_1::starty=\"<0>\" sink_1::widths=\"<960>\" sink_1::heights=\"<272>\" \
                                                sink_2::startx=\"<0>\" sink_2::starty=\"<272>\" sink_2::widths=\"<960>\" sink_2::heights=\"<272>\" \
                                                sink_3::startx=\"<480>\" sink_3::starty=\"<272>\" sink_3::widths=\"<960>\" sink_3::heights=\"<272>\" \
                                                ! video/x-raw,format=NV12, width=1920, height=1080 ! queue ! tiperfoverlay main-title=null title=\"\" ! ";

    请同样指导我们。

    此致、

    Soorya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Soorya:

    几个问题:

    1. 传递到后端时是否运行单个输入和单个推理流水线?
    2. 流水线是否使用 gst-launch-1.0 命令行工具运行?

    作为对 GStreamer 进行故障排除的通用指针、我建议从较小的流水线开始、然后逐渐增加到流水线中、以确定流水线出现故障的位置。 最简单的管道从“视频测试 src ! fakesink“、其中源是文件输出、接收器是“假“接收器、 使用大多数输入格式、不呈现输出。

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     我尝试 在所有 4 个输入上运行相同的模型 ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416、工作正常。 当我尝试更改其他 3 个输入的模型时,它停止工作,我还通过根据模型更新图像分辨率来更正预处理阶段,仍然是相同的结果  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Soorya:

    您是否可以更改管道、使其只是减少故障排除范围的一个推理? 类似于此处的流水线: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-sk-tda4vm/11_00_00/exports/edgeai-docs/common/edgeai_dataflows.html#object-detection

    如果在构建流水线时遇到问题、可以使用 YAML 生成流水线的一些 python /C++脚本: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-sk-tda4vm/11_00_00/exports/edgeai-docs/common/sample_apps.html#python-c-apps

    此致、

    Takuma