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.

[参考译文] AM62A7:AM62A7:"Object Detection"命令在我们的定制板上使用"AR0235"摄像头传感器随机失败

Guru**** 2481465 points
Other Parts Discussed in Thread: AM62A7, SK-AM62A-LP

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1452115/am62a7-am62a7-object-detection-command-failed-randomly-on-our-custom-board-with-ar0235-camera-sensor

器件型号:AM62A7
主题中讨论的其他器件: SK-AM62A-LP

工具与软件:

团队成员、您好!

我们按照以下命令在基于 AM62A7处理器的定制器件上的 DSP 处理器上运行边缘 AI-Dataflow。  

链接:- https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM62AX/09_01_00/exports/edgeai-docs/common/edgeai_dataflows.html?highlight=dsp#object-detection

创建目标配置 "AR0235" 摄像头传感器模块与定制板。 因此、我们对进行了修改 "物体检测" 根据摄像头传感器兼容性的次要命令。  

使用 DSP 模型的修改后的物体检测命令:-

media-ctl -V '"ar0235 2-0036":0 [fmt:SRGGB8_1X8/1920x1200 field:none]'


gst-launch-1.0 -v v4l2src device=/dev/video-rpi-cam0 io-mode=5 ! queue leaky=2 ! video/x-bayer, width=1920, height=1200, format=rggb ! tiovxisp dcc-isp-file=/opt/imaging/ar0235/dcc_viss_8bit_1920x1200.bin format-msb=7 sink_0::dcc-2a-file=/opt/imaging/ar0235/dcc_2a_8bit_1920x1200.bin sink_0::device=/dev/v4l-rpi-subdev0 ! video/x-raw, format=NV12 ! tiovxmultiscaler name=split_01 src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1920 src_0::roi-height=1200 target=0 split_01. ! queue ! video/x-raw, width=480, height=416 ! tiovxmultiscaler target=1 ! video/x-raw, width=416, height=416 ! tiovxdlpreproc model=/media/userdata/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 out-pool-size=4 ! application/x-tensor-tiovx ! tidlinferer target=1 model=/media/userdata/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=/media/userdata/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 alpha=0.4 viz-threshold=0.6 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 ! v4l2h264enc extra-controls="controls, frame_level_rate_control_enable=1, video_bitrate=10000000, video_gop_size=30" ! h264parse ! matroskamux ! tcpserversink host=172.25.3.171 port=5000

我们在定制电路板上运行上述命令时观察到随机故障。 请检查下面的屏幕截图中是否相同。 还观察到该命令在电路板上随机工作(成功) "那就好。 成功率很低 在 大多数情况下、当在板上运行上述命令时、我们会观察到故障和板冻结问题。

问题:-  SSH 可能断开连接或在终端上出现内存冻结问题。 在这种情况下、需要重新启动设备。 如果上述命令未能执行、我们需要多次硬重新启动器件。

重要说明:-  . 由于我们定制电路板上 eMMC 的大小受限、用于定制电路板的 Rootfs 极少。 我们添加了最少的额外包、以在 DSP 上运行 TI 提供的可用 AI 模型。

请查看上述详细信息、并让我们知道如何解决上述问题并在定制电路板上稳定使用此命令。  

我们需要在具有稳定性的定制板上运行上述命令、以便使用"perf_stats"实用程序检查 DSP 负载。  

请提供有关上述问题的修复。  

谢谢!

Nisarg

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

    您好 Nisarg:

    为了帮助我们了解问题、您是否可以在没有深度学习的情况下执行以下测试:

    1. 运行仅具有 v4l2src 和 ISP 的管道、
    2. 运行具有 v4l2src、isp、编码和流到以太网的管道。

    请告知我们您是否能够可靠地运行上述管道。

    谢谢你。

    建中

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

    您好、 

    [报价 userid="35284" url="~/support/processors-group/processors/f/processors-forum/1452115/am62a7-am62a7-object-detection-command-failed-randomly-on-our-custom-board-with-ar0235-camera-sensor/5569629 #5569629"]

    为了帮助我们了解问题、您是否可以在没有深度学习的情况下执行以下测试:

    1. 运行仅具有 v4l2src 和 ISP 的管道、
    2. 运行具有 v4l2src、isp、编码和流到以太网的管道。

    请告知我们您是否能够可靠地运行上述管道。

    [报价]

    1)对于案例1:-(运行一个只有 v4l2src 和 isp 的管道)

    我们使用以下命令:-  

    ==================================================

    媒体-ctl -V "ar0235 2-0036":0 [fmt:SRGGB8_1X8/1920x1200字段:none]"

    gst-launch-1.0 -v v4l2src device=/dev/video-rpi-cam0 io-mode=dmabuf! video/x-bayer、width=1920、height=1200、帧速率=60/1、format=rggb! tiovxisp sink_0::device=/dev/v4l-rpi-subdev0 dcc-isp-file=/opt/imaging/ar0235/dcc_viss_8bit_1920x1200.bin sink_0::dcc-2a-file=/opt/imaging/ar0235/dcc_2a_8bit_1920x1200.bin format-msb=9 sink_0:ae-mode=2! 链接

    ==================================================

     e2e.ti.com/.../Command_2D00_op_2D00_log.txt

    2)对于案例2:-(运行具有 v4l2src、isp、编码和流到以太网的流水线)

    ==================================================

    媒体-ctl -V "ar0235 2-0036":0 [fmt:SRGGB8_1X8/1920x1200字段:none]"


    gst-launch-1.0 -v v4l2src device=/dev/video-rpi-cam0 io-mode=dmabuf-import! video/x-bayer、width=1920、height=1200、帧速率=60/1、format=rggb! tiovxisp sink_0::device=/dev/v4l-rpi-subdev0 dcc-isp-file=/opt/imaging/ar0235/dcc_viss_8bit_1920x1200.bin sink_0::dcc-2a-file=/opt/imaging/ar0235/dcc_2a_8bit_1920x1200.bin format-msb=9 sink_0:ae-mode=2! video/x-raw、格式=NV12、宽度=1920、高度=1200、帧速率=60/1! v4l2jpegenc output-io-mode=dmabuf-import! tcpserversink host = 172.25.4.251 port=5000

    ==================================================

    e2e.ti.com/.../Stream_2D00_output_2D00_2.txt

    请验证上述数据。 我们可以 使用上述命令可靠地运行上述流水线。 如果您需要更多数据来调试问题、请告知我们。

    谢谢!

    Nisarg

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

    您好 Nisarg:

    感谢您完成这些测试。 该问题似乎与运行 AI 模型有关。

    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1452115/am62a7-am62a7-object-detection-command-failed-randomly-on-our-custom-board-with-ar0235-camera-sensor "] 重要说明:-  . 由于我们定制电路板上 eMMC 的大小受限、用于定制电路板的 Rootfs 极少。 我们添加了最少的额外包、以在 DSP 上运行 TI 提供的可用 AI 模型。 [报价]

    我怀疑这可能是根本原因。

    是否可以在 TI EVM (SK-AM62A-LP)上使用 AI 模型运行流水线并查看其是否正常运行?

    此致、

    建中

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

    您好、 

    [报价 userid="35284" url="~/support/processors-group/processors/f/processors-forum/1452115/am62a7-am62a7-object-detection-command-failed-randomly-on-our-custom-board-with-ar0235-camera-sensor/5581587 #5581587"]

    是否可以在 TI EVM (SK-AM62A-LP)上使用 AI 模型运行流水线并查看其是否正常运行?

    [报价]

    根据您的建议、我们已选中 TI-EVK (SK-AM62A-LP) 或者会与 "tisdk-edgeai-image-am62axx-evm.wic"  SD 卡映像和 imx219摄像头 传感器发现该流水线已成功运行 AI 模型。 (未发现问题)

    命令(链接:- https://software-dl.ti.com/processor-sdk-linux-rt/esd/AM62AX/09_01_00/exports/edgeai-docs/common/edgeai_dataflows.html?highlight=dsp#object-detection)

    gst-launch-1.0 -v v4l2src device=/dev/video-rpi-cam0 io-mode=5 ! queue leaky=2 ! video/x-bayer, width=1920, height=1080, format=rggb ! \
    tiovxisp sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss.bin format-msb=7 sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a.bin sink_0::device=/dev/v4l-rpi-subdev0 ! video/x-raw, format=NV12 ! \
    tiovxmultiscaler name=split_01 src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1920 src_0::roi-height=1080 target=0 \
    \
    split_01. ! queue ! video/x-raw, width=480, height=416 ! tiovxmultiscaler target=1 ! 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.4 viz-threshold=0.6 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 ! v4l2h264enc extra-controls="controls, frame_level_rate_control_enable=1, video_bitrate=10000000, video_gop_size=30" ! \
    h264parse ! matroskamux ! filesink location=/opt/edgeai-test-data/output/output_video.mkv

    上述命令的 o/p 也显示在下方  

    附加的完整日志文件:-  e2e.ti.com/.../DSP_2D00_Log_2D00_File.txt

    (带有 EVK 和 AI 模型流水线命令的 imx219)

     

    谢谢!

    Nisarg

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

    您好、 

    我们已经测试了其他东西 TI-EVK (SK-AM62A-LP)  或者会与  "tisdk-edgeai-image-am62axx-evm.wic"  SD 卡映像和  imx219摄像头  传感器和检查管线使用 具有不同 RAM 大小的 AI 模型运行(使用内核命令行参数控制 RAM 大小)

    我们已经尝试运行上述模型 (物体检测) 或使用具有1GB RAM 的 EVK。 我们已使用内核参数缩减了 EVM RAM 的大小 "MEM=1GB" . 当我们将 EVM 的 RAM 大小保持为1GB 时、 模型无法运行 . 但型号在2GB 和4GB RAM 中成功运行。

    那么、这是否意味着提到的模型需要至少2GB 的 RAM 才能成功运行? 您能否确认此行为?

    RAM 大小控制使用以下内容:-  

    printenv args_all
    setenv args_all "setenv optargs ${optargs} earlycon=ns16550a,mmio32,0x02800000 ${mtdparts} mem=1G"
    printenv args_all
    boot

    1) 1-GB RAM 日志和屏幕截图:-  (对于的 AI 模型、管道失败  imx219摄像头)

    e2e.ti.com/.../3515.EVK_2D00_Result_2D00_Edge_2D00_AI_2D00_Image_2D00_imx219_2D00_1GB_2D00_RAM_2D00_2nd_2D00_result.txt

    e2e.ti.com/.../EVK_2D00_Result_2D00_Edge_2D00_AI_2D00_Image_2D00_imx219_2D00_1GB_2D00_RAM.txt

    2) 2 GB RAM 日志和屏幕截图:-  ( 使用的 AI 模型成功运行流水线  imx219摄像头)

    e2e.ti.com/.../EVK_2D00_Result_2D00_Edge_2D00_AI_2D00_Image_2D00_imx219_2D00_2GB_2D00_RAM.txt

     

    是否有任何其他型号或方法可以在使用1GB RAM 的情况下运行(定制板仅具有1GB RAM)并提供 DSP 负载。 我们将在不同的温度下使用50% DSP 负载测试我们的器件。 如果我们可以使用其他方法通过1GB RAM 在 DSP 中提供负载、将会很有帮助。

    谢谢!

    Nisarg

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

    您好 Nisarg:

    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1452115/am62a7-am62a7-object-detection-command-failed-randomly-on-our-custom-board-with-ar0235-camera-sensor/5588331 #5588331"]

    我们已经尝试运行上述模型 (物体检测) 或使用具有1GB RAM 的 EVK。 我们已使用内核参数缩减了 EVM RAM 的大小 "MEM=1GB" . 当我们将 EVM 的 RAM 大小保持为1GB 时、 模型无法运行 . 但型号在2GB 和4GB RAM 中成功运行。

    [报价]

    选择的模式将影响您看到的行为、是的。 我建议使用更小的分类模型、如/opt/model_zoo/TFL-CL-0000-mobileNetV1-mlperf.模型 这也是一个更小的输入/输出、因此模型本身的 DDR 分配以及预处理/缩小级也较少。

    执行此操作时、还请在后台运行日志记录二进制文件/opt/vx_app_arm_remote_log.out。 下面将显示有关某些边缘 AI 软件+ TIOVX 的更多记录信息。

    [报价 userid="598515" url="~/support/processors-group/processors/f/processors-forum/1452115/am62a7-am62a7-object-detection-command-failed-randomly-on-our-custom-board-with-ar0235-camera-sensor/5588331 #5588331"]

    那么、这是否意味着提到的模型需要至少2GB 的 RAM 才能成功运行? 您能否确认此行为?

    [报价]

    这取决于型号、是的。 我不会说这种 yolox 模型需要2 GB 才能运行、而是我们讨论了与存储器映射相关的更复杂的主题。 请允许我进一步解释:

    存储器映射

    AM62A (和其他 AM6xA 和 TDA4x SoC)具有相当复杂的存储器映射、允许 TI OpenVX 中间件通过预先设置的 DDR 分割来分配和共享缓冲区。 Linux OS 必须知道这些区域、并且 Linux 也不会"拥有"整个 DDR 存储器映射。 描述存储器映射的 dts 文件也反映了这一点。 名义上、默认存储器映射会将 edgeai_区域放置在0xc000 0000以下、并将 Linux CMA 放置在0xc000 0000及以上

    这些相同的存储器映射消耗在处理器的 C7x 和其他远程内核的固件中。 这些都需要保持一致、边缘 AI 应用程序(使用 TIOVX)才能运行。 如果 DDR 低于2GB、就需要修整 Linux DDR 大小、还需要修整一些其他分割区(主要是像堆这样的大型分割区)。 这也意味着您必须:为 C7x 和 DMR5、Linux 中的一些库和 DTS/dtb 重新构建固件。

    要对存储器映射进行此类更改、需要使用 AM62A 的固件构建器。 这就需要您申请访问权限以及该 TI 批准的上述申请

    BR、
    Reese