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.

[参考译文] SK-TDA4VM:关断负载到 C7x 时的 YOLOPv2通道线路检测失真

Guru**** 2358920 points
Other Parts Discussed in Thread: SK-TDA4VM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1493749/sk-tda4vm-yolopv2-lane-line-detection-distortion-when-off-loading-to-c7x

器件型号:SK-TDA4VM

工具/软件:

您好、

我使用 edgeai-tidl-tools 版本10_01_04_00为 SK-TDA4VM 编译了 YOLOPv2。 如果我在没有卸载到 C7x 的情况下运行模型、则结果是正确的。 但是、如果我使用卸载、驾驶区域分段和物体检测都可以正常工作、但车道线检测在所有输入上始终输出/检测到整个"类似逻辑块"的模式。 随附示例图像。

    

  

用于推理和编译的代码在 sample.py 中提供

e2e.ti.com/.../sample.py.txt  e2e.ti.com/.../utils_5F00_onnx.py.txt

用于转换的模型是 yolopv2.onnx 的修改版本。 修改是、我将其更改为固定形状、而不是对输入使用 dynamic_axes。

修改后的模型随附在 e2e.ti.com/.../yolopv2.zip 中

如果能提供任何帮助来说明为什么会发生这种情况、我们将非常感激。

需要帮助的其他一些要点包括:

  • 使用/dev/video2作为输入时、我得到了  
    [ WARN:0@2.156] global cap_gstreamer.cpp:2838 handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Could not read from resource.
    [ WARN:0@2.157] global cap_gstreamer.cpp:1698 open OpenCV | GStreamer warning: unable to start pipeline
    [ WARN:0@2.157] global cap_gstreamer.cpp:1173 isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
  • 尝试使用 CV2.videoWriter 保存时出现错误(打开 mp4视频源时)
    [ WARN:0@3.155] global cap_gstreamer.cpp:1750 open OpenCV | GStreamer warning: frame count is estimated by duration and fps
    [ WARN:0@3.498] global cap_gstreamer.cpp:2617 open OpenCV | GStreamer warning: cannot link elements
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Charanjit Singh

    我已经邀请了我们的 TIDL 专家来查看您的模型、但我可以在 GStreamer 方面提供帮助。 在查看您提供的代码时、您能否分享您使用的传感器作为输入?

    谢谢您、

    法比亚纳

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

    尊敬的 Fabiana:

    感谢您转发模型。

    对于 GStreamer 问题:

    • 我当前正在尝试将 USB 输入与捕获器件(EZCAP331)一起用于测试。
    • 从使用模型输出的函数(不包括在上面的示例中)中打印出一些信息表明、尽管仍会显示警告、但仍会捕获视频。
    • 我只是无法验证输入是否正确、因为我没有输出视频。 Cv2.VideoWriter 也不会写入视频。
    • 在 tidl-tools 中为 TDA4提供的 OpenCV 版本不支持 CV2.imshow。

    问题

    • 因此、我想我必须使用 GStreamer 来获得输出??
    • 我是否可以将 GStreamer 流水线直接添加到 sample.py 中的 python 推理代码中以显示输出? 您能提出一种输出结果的方法吗?

    • 最后一个目标是使用类似 Optiflow 示例这样的模型与 GStreamer 流水线读取输入、将其转换为适当的大小并进行所需的预处理、将其馈送到模型并获取结果进行后处理。 虽然我仍然需要研究整个 Optiflow 结构以及如何使用它。

    此致、

    Charanjit

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

    尊敬的 Charanjit:

    是的、GStreamer 流水线可轻松用于 python 应用中。 我建议您查看/opt/edgeai-gst-apps/apps_python/gst_wrapper.py 或/opt/edgeai-gst-apps/optiflow/gst_wrapper.py 以了解如何实现这一目标。 这些应用通过解析配置文件来工作、配置文件 定义输入、模型、输出和流、以生成并运行到生成的 GStreamer 流水线。  我 认为我们没有任何有关硬编码流水线外观的 python 示例、但网络上有许多示例演示了如何设置该流水线。

    如果您在对应用实施流水线时遇到任何问题、敬请告知。

    谢谢你

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

    您好、

    对不起,延迟的回复,我上周休假,并感谢链接到 GST_Wrapper。

    我将查看 GStreamer 部分的 gst_wrappers。

    您是否对模型本身有任何更新? 主要问题是模型的输出失真/不正确。 gst_wrapper 仅解决部分问题。

    谢谢。此致、

    Charanjit

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

    尊敬的 Charanjit:

    指定的 TIDL 专家目前已离职、预计本周将回来。 感谢您迄今为止的耐心。 如果您对问题的 GStreamer 方面有任何其他问题、请告诉我。

    谢谢您、

    法比亚纳

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

    尊敬的 Fabiana:

    在尝试运行 OptiFlow 示例时、我经常会收到以下错误、这些错误有时会在电源循环后得到解决。 我无法可靠地重现错误、而且在重启后也不一定能解决错误。

    root@tda4vm-sk:/opt/edgeai-gst-apps/optiflow# ./optiflow.py ../configs/object_detection.yaml
    APP: Init ... !!!
      1228.531477 s: MEM: Init ... !!!
      1228.531513 s: MEM: Initialized DMA HEAP (fd=17) !!!
      1228.531662 s: MEM: Init ... Done !!!
      1228.531690 s: IPC: Init ... !!!
      1228.594515 s: IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
      1228.603047 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
      1228.603127 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_ERROR
      1228.603138 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_WARNING
      1228.603147 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_INFO
      1228.603899 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-0 
      1228.604028 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-1 
      1228.604236 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-2 
      1228.604358 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-3 
      1228.604370 s:  VX_ZONE_INFO: [tivxInitLocal:126] Initialization Done !!!
      1228.604377 s:  VX_ZONE_INFO: Globally Disabled VX_ZONE_INFO
    APP: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... Done !!!
      1228.655485 s: IPC: Deinit ... !!!
      1228.656094 s: IPC: DeInit ... Done !!!
      1228.656124 s: MEM: Deinit ... !!!
      1228.656130 s: DDR_SHARED_MEM: Alloc's: 14 alloc's of 20643840 bytes 
      1228.656139 s: DDR_SHARED_MEM: Free's : 14 free's  of 20643840 bytes 
      1228.656145 s: DDR_SHARED_MEM: Open's : 0 allocs  of 0 bytes 
      1228.656156 s: MEM: Deinit ... Done !!!
    APP: Deinit ... Done !!!
    APP: Init ... !!!
      1228.660467 s: MEM: Init ... !!!
      1228.660526 s: MEM: Initialized DMA HEAP (fd=8) !!!
      1228.660618 s: MEM: Init ... Done !!!
      1228.660629 s: IPC: Init ... !!!
      1228.723911 s: IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
      1228.730614 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
      1228.730809 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_ERROR
      1228.730857 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_WARNING
      1228.730877 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_INFO
      1228.731133 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-0 
      1228.731319 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-1 
      1228.731507 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-2 
      1228.731684 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-3 
      1228.731697 s:  VX_ZONE_INFO: [tivxInitLocal:126] Initialization Done !!!
      1228.731765 s:  VX_ZONE_INFO: Globally Disabled VX_ZONE_INFO
    libtidl_onnxrt_EP loaded 0x3f72ed80 
    Final number of subgraphs created are : 1, - Offloaded Nodes - 283, Total Nodes - 283 
    
    multifilesrc location=/opt/edgeai-test-data/videos/video0_1280_768.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=768 target=0 \
    \
    split_01. ! 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_0.tensor \
    split_01. ! queue ! video/x-raw, width=1280, height=720 ! post_0.sink \
    tidlpostproc name=post_0 model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 alpha=0.200000 viz-threshold=0.600000 top-N=5 display-model=true ! queue ! mosaic_0. \
    \
    \
    tiovxmosaic name=mosaic_0 target=1 src::pool-size=4 \
    sink_0::startx="<320>" sink_0::starty="<150>" sink_0::widths="<1280>" sink_0::heights="<720>" \
    ! video/x-raw,format=NV12, width=1920, height=1080 ! queue ! tiperfoverlay title="Object Detection" overlay-type=graph ! kmssink driver-name=tidss sync=false
    
    Traceback (most recent call last):
      File "/opt/edgeai-gst-apps/optiflow/./optiflow.py", line 69, in <module>
        main(sys.argv)
      File "/opt/edgeai-gst-apps/optiflow/./optiflow.py", line 50, in main
        optiflow.run()
      File "/opt/edgeai-gst-apps/optiflow/optiflow_class.py", line 175, in run
        self.gst_pipe.run()
      File "/opt/edgeai-gst-apps/optiflow/gst_wrapper.py", line 76, in run
        msg = self.bus.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.MessageType.ERROR)
              ^^^^^^^^
    AttributeError: 'GstPipe' object has no attribute 'bus'
      1229.575127 s:  VX_ZONE_ERROR: [vxGetStatus:1178] Reference is NULL
    APP: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... Done !!!
      1229.587189 s: IPC: Deinit ... !!!
      1229.588280 s: IPC: DeInit ... Done !!!
      1229.588310 s: MEM: Deinit ... !!!
      1229.588316 s: DDR_SHARED_MEM: Alloc's: 8 alloc's of 5052688 bytes 
      1229.588327 s: DDR_SHARED_MEM: Free's : 8 free's  of 5052688 bytes 
      1229.588336 s: DDR_SHARED_MEM: Open's : 0 allocs  of 0 bytes 
      1229.588348 s: MEM: Deinit ... Done !!!
    APP: Deinit ... Done !!!

    出现此错误的原因可能是什么?

    此致、

    Charanjit

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

    尊敬的 Charanjit:

    我目前出差外出。 请预计我的回复会延迟~1-2天。

    谢谢您、

    法比亚纳

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

    尊敬的 Fabiana:

    别担心。 我自己在 gst_wrapper.py 上浏览了代码,发现第76行有一个多余的自我,这导致了错误。

    msg = self.bus.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.MessageType.ERROR)
    
    should be
    
    msg = bus.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.MessageType.ERROR)

    通过更正此内容、我现在得到了

    [ERROR] Could not get allowed GstCaps of device

    我已尝试运行 configs/object_detection.yaml、configs/semantic segmentatio.yaml 和 configs/image_category.yaml、结果相同。

    所以现在的问题是为什么它突然找不到允许的 GstCap 和哪种设备

    此致、

    Charanjit

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

    尊敬的 Charanjit:

    关于该模型、我需要进一步了解、但我认为这可能是因为您将其从动态切换到固定、这会导致值发生变化、从而导致平铺问题。 我将研究如何在我这边重现这个问题

    此致、

    Christina

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

    尊敬的 Charanjit:

      运行 apps_python 应用程序而不是 OptiFlow 时、您是否看到相同的 GstCap 错误?

    谢谢您、

    法比亚纳

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

    尊敬的 Fabiana:

    GstCaps 的问题似乎已经解决。 我怀疑由于某些原因 TDA 的输出端口未正确初始化、这意味着虽然我可以通过 ssh 连接到器件、但连接到 HDMI 端口时看到的 GUI 不可见。

      

    然而,当使用 gstreamer 运行一个简单的测试管道时,屏幕确实从黑色变为测试屏幕,所以我认为这可能是 OptiFlow 应用程序的问题。 奇怪的是、上述行为在重新引导之间仍然存在、这种情况通过发送 reboot 命令和重新启动电源来实现。 当我再次看到屏幕时、OptiFlow 代码开始再次工作。

    此外,我想问一问,这款车型是否有更新?

    谢谢。此致、

    Charanjit

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

    Charanjit,

    请对模型更新问题使用单独的主题。  我们希望将所有 E2E 主题限制为一个主题。

    此致、

    Chris

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

    尊敬的 Charanjit:

    很高兴 GStreamer 问题已得到解决。 根据 Chris 的要求、请为您的 YOLOPv2 模型问题创建新主题。 您可以链接到此线程以添加上下文。

    谢谢您、

    法比亚纳

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

    您好、Chris、

    这实际上是模型的线程、GStreamer 错误是输出的一部分。 但我仍将为模型启动一个新线程。

    此致、

    Charanjit