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-AM62A-LP:apps_python 帧速率问题

Guru**** 2544290 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1559392/sk-am62a-lp-apps_python-framerate-question

器件型号:SK-AM62A-LP


工具/软件:

尊敬的专家:

我正在使用 IMX219、IMX335 和 Fingers 1080p 高分辨率 USB 摄像头和 apps_python。 您能否提及 apps_python 的每秒帧数上限兼容性。 帧率中是否有任何限制符。

我检查了 APP_CONFIG.YAML 输入和输出部分的帧速率设置在 15 到 30 之间、但似乎是 20 帧或每个视频中的某个内容。 有时应用程序在运行时崩溃。
IMX219 的文档。 似乎有 30fps @ 1920x1080。

此致、
Sajan

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

    您好、Sajan、

    指定的专题专家目前已离职、将于 9 月 2 日返回。 请预计响应会延迟。 感谢您的耐心。

    此致、
    Johnson

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

    您好、Sajan、

    在 AM62A 上使用 apps_python 应该意味着您正在电路板上运行分析。 在这种情况下、推理会限制输出的帧速率。 如果应用崩溃、您能共享 YAML 配置吗?

    此致、
    Jay

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

    您好、Jay、

    您可以共享 YAML 配置

    title: "Preview"
    inputs:
        input0:
            source: /dev/video-imx219-cam0
            subdev-id: /dev/v4l-imx219-subdev0
            format: rggb
            width: 1920
            height: 1080
            framerate: 15
    models:
        model0:
            model_path: /opt/model_zoo/samplemodel
            topN: 1
    outputs:
        output0:
            sink: kmssink
            width: 1920
            height: 1080
    flows:
        flow0: [input0,model0,output0]

    将限制输出的帧速率

    但根据我的发现、修改输入和输出帧速率时、似乎没有变化影响。 它将以 20fps 的速率录制视频。

    此致、
    Sajan

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

    您好、Sajan、

    问题似乎与 apps_python 构造的流水线有关。 中使用的 gstreamer 节点不尊重帧速率、并以可能的最大帧速率发送数据。 如果限制帧速率很重要、则可以添加视频元素。 如果帧速率下降、这将产生帧重复的问题。 例如、如果您将帧速率设置为 30、然后降至 26、则 videorate 将通过复制某些帧来强制管道达到 30fps。

    如果这满足您的要求、下面是相应的补丁 (SDK 11.01):

    --- gst_wrapper.py
    +++ gst_wrapper.py
    @@ -1198,6 +1198,8 @@
    
         element = make_element("appsrc", property=property)
         post_proc_elements += element
    +    element = make_element("videorate", property={"max-rate": int(eval(flow.input.fps))})
    +    post_proc_elements += element
    
         caps = "video/x-raw, format=NV12, width=%d, height=%d" % (
             flow.sensor_width,
    

    不过、我已提出一份错误报告、并会留意报告的进展。

    此致、
    Jay

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

    您好、Jay、

    我尝试使用您提供的补丁更新 gst_wrapper.py。 但这对我来说是行不通的。 当应用程序启动时、绿屏闪烁、并显示以下错误。

    libtidl_onnxrt_EP loaded 0x43b6680 
    Final number of subgraphs created are : 1, - Offloaded Nodes - 124, Total Nodes - 124 
    APP: Init ... !!!
       697.510398 s: MEM: Init ... !!!
       697.510479 s: MEM: Initialized DMA HEAP (fd=5) !!!
       697.510672 s: MEM: Init ... Done !!!
       697.510704 s: IPC: Init ... !!!
       697.528775 s: IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
       697.533507 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
       697.533663 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_ERROR
       697.533679 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_WARNING
       697.533690 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_INFO
       697.535168 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-0 
       697.535467 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-1 
       697.535760 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-2 
       697.536063 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-3 
       697.536100 s:  VX_ZONE_INFO: [tivxInitLocal:126] Initialization Done !!!
       697.536131 s:  VX_ZONE_INFO: Globally Disabled VX_ZONE_INFO
    ==========[INPUT PIPELINE(S)]==========
    
    [PIPE-0]
    
    v4l2src device=/dev/video-imx219-cam0 io-mode=5 pixel-aspect-ratio=None ! queue leaky=2 ! capsfilter caps="video/x-bayer, width=(int)1920, height=(int)1080, format=(string)rggb;" ! tiovxisp dcc-isp1
    split_01. ! queue ! capsfilter caps="video/x-raw, width=(int)1920, height=(int)1080;" ! tiovxdlcolorconvert out-pool-size=4 ! capsfilter caps="video/x-raw, format=(string)RGB;" ! appsink max-buffer0
    split_01. ! queue ! capsfilter caps="video/x-raw, width=(int)1188, height=(int)668;" ! tiovxmultiscaler target=1 ! capsfilter caps="video/x-raw, width=(int)454, height=(int)256;" ! tiovxdlcolorconv0
    
    
    ==========[OUTPUT PIPELINE]==========
    
    appsrc do-timestamp=True format=3 block=True name=post_0 ! videorate max-rate=20 ! tiovxdlcolorconvert ! capsfilter caps="video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080;" ! kms6
    
    ^C[ERROR] GStreamer error: negotiation problem.
    APP: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... Done !!!
    


    此致、
    Sajan

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

    您好、Sajan、

    似乎您需要将 appsrc 属性“is-live"设置“设置为 true。 我似乎错过了补丁中的同样内容。 同样的。 以下是更新的补丁:

    --- gst_wrapper.py
    +++ gst_wrapper.py
    @@ -1188,6 +1188,7 @@
             "block": True,
             "do-timestamp": True,
             "name": flow.gst_post_sink_name,
    +        "is-live": True,
         }
    
         for o in flow.outputs:
    @@ -1197,6 +1198,8 @@
                 break
    
         element = make_element("appsrc", property=property)
    +    post_proc_elements += element
    +    element = make_element("videorate", property={"max-rate": int(eval(flow.input.fps))})
         post_proc_elements += element
    
         caps = "video/x-raw, format=NV12, width=%d, height=%d" % (

    如果问题仍然存在、请同时共享您的 SDK 版本。

    以下是有关 gstreamer wiki 中实时源代码的一些信息、 可供参考:https://gstreamer.freedesktop.org/documentation/additional/design/live-source.html?gi-language=c

    此致、
    Jay

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

    尊敬的 Jay:

    它现在正在运行、但似乎存在框架问题。 当我将输入和输出帧速率设置为 30 时、帧速率变为 3fps 至 5fps。 我在 20fps 和 24fps 下获得了几乎正确的帧速率。

    此致、
    Sajan

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

    您好、Sajan、

    我看到了这个问题。 作为一种变通方法,您可以将一个大小为 1920x1080 的马赛克设置为 0、0。 这似乎可以改善延迟。 生成的流程(在 YAML 配置中)应如下所示:

    flow0: [input0, model0, output0, [0, 0, 1920, 1080]]

    最后、在测试配置中将帧速率设置为 30 时、我可以获得大约 22fps 的帧速率。 我仍然建议使用基本的 SDK 代码来获得最佳性能、因为视频似乎对性能有一般性影响。

    同时、我将尝试找出此问题的实际来源、并找出更完整的解决方案。

    此致、
    Jay