工具/软件:
您好、
我使用 sdk_10.00.00.08进行基于 SK-AM68的产品缺陷检测、 以1920*1080分辨率运行多个型号正常、以3280*2464运行多个型号失败运行单个型号正常。
配置 如下:
错误消息如下所示
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.
您好、
配置文件中使用的输入(input0)是什么? 传感器是否支持 3280x2464分辨率? 您是否已 将 媒体图表中的格式重新配置为该分辨率? 如果您还没有: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1403218/faq-what-are-the-common-reasons-v4l2-based-applications-fail-to-capture-images-from-a-probed-csi-sensor、请参阅此常见问题解答的步骤3
如果您对最后两个问题的答案是肯定的、则问题可能与配置文件的流程部分中的值有关。 分辨率1920x1080和3280x2464具有不同的宽高比。 目前每个流/通道(640x360)的宽度和高度与1920x1080 的宽高比兼容、因此您必须将每个流的宽度和高度更改为具有3280x2464相同宽高比的流。 完成此操作后、您需要更改马赛克位置坐标、以确保它们不会与此更改相互重叠。 (mosaich_pos_x、mosaich_pos_y)坐标对应于每个流/通道的左上角。
流程名称:[input、model1、output0、[mosaich_pos_x、mosaich_pos_y、width、height]]
如果您有任何其他问题、敬请告知。
谢谢您、
法比亚纳
尊敬的 Fabiana:
我们已经确保问题不是从捕获的角度。 客户使用 imx219、它同时支持3280x2464和1920x1080。 客户尝试仅使用3280x2464的一个流程、并且在设置马赛克宽度=1280、高度=720时成功运行。 客户还尝试了使用1920x1080运行两个流程、设置马赛克宽度= 640、高度= 360时也运行良好。
该应用程序在两种情况下出错:1运行一个流程、3280x2464、马赛克宽度= 640、高度= 360。 2.两个流动的3280x2464,马赛克宽度=640,高度=360。
客户的目标是使用3280x2464运行两个流程。
此致、
Adam
尊敬的 Adam:
在以更大的分辨率运行应用程序之前、您能否分享对媒体图形所做的更改? 查看 您提到的以下测试运行的完整日志对我很有帮助。
客户尝试仅使用一个3280x2464流程、当设置马赛克宽度=1280、高度= 720时、它会成功运行。
该应用程序在两种情况下出错:1运行一个流程、3280x2464、马赛克宽度= 640、高度= 360。 2.两个流动的3280x2464,马赛克宽度=640,高度=360
谢谢您、
法比亚纳
1)更改 setup_cameras.sh 并替换3280x2464的 DCC 文件
IMX219_CAM_FMT="${IMX219_CAM_FMT:-[fmt:SRGGB10_1x10/3280x2464]}"
2) 使用3280x2464的一个流程,并在设置马赛克宽度=1280,高度=720时成功运行。
流量:
flow0:[input0、model1、output0、[320,150,1281280720]]
3) 在两种情况下应用程序出错:
流量:
flow0:[input0、model0、output0、[320,150,640,360]]
或者:
流量:
flow0:[input0、model0、output0、[320,150,640,360]]
flow1:[input0、model1、output0、[960,150,640,360]]
您可以尝试以下渠道吗?
gst-launch-1.0 v4l2src device=/dev/video-imx219-cam0 io-mode=dmabuf-import ! queue max-size-buffers=1 leaky=2 ! \ video/x-bayer, width=3280, height=2464, framerate=15/1, format=rggb10 ! \ tiovxisp sink_0::pool-size=4 sink_0::device=/dev/v4l-imx219-subdev0 sensor-name="SENSOR_SONY_IMX219_RPI" \ dcc-isp-file=dcc_viss_3280x2464_10b.bin \ sink_0::dcc-2a-file=dcc_2a_3280x2464_10b.bin format-msb=9 ! \ video/x-raw, format=NV12, width=3280, height=2464, framerate=15/1 ! queue ! tiovxmultiscaler ! queue ! \ video/x-raw, format=NV12, width=1920, height=1080, framerate=15/1 ! \ kmssink driver-name=tidss sync=false force-modesetting=true
谢谢您、
法比亚纳
root@am68a-sk:~# gst-launch-1.0 v4l2src device=/dev/video-imx219-cam0 io-mode=dmabuf-import! 队列 max-size-buffers=1 leafy=2! \
>视频/x-Bayer、宽度=3280、高度=2464、帧速率=15/1、格式=rggb10! \
> tiovxisp sink_0:::pool-size=4 sink_0::device=/dev/v4l-imx219-subdev0 sensor-name="SENSOR_SONY_IMX219_RPI"\
> dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_3280x2464_10b.bin \
> sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_3280x2464_10b.bin format-msb=9 ! \
> video/x-raw、format=NV12、width=3280、height=2464、帧速率=15/1! 排队! tiovxmultiscaler! 排队! \
> video/x-raw、format=NV12、width=1920、height=1080、帧速率=15/1! \
> kmssink driver-name=tidss sync=false force-modesetting=true
应用程序:初始化...!!
757.626463 s:内存:初始化...!!
757.626515 s:MEM:初始化的 DMA 堆(FD=8)!!!
757.626629 s:内存:初始化...完成!!
757.626641 s: ipc: init ...!
757.670289 s: ipc:初始化...完成!!
remote_service:初始化...!!
remote_service:初始化...完成!!!
757.681336s:GTC 频率= 200 MHz
应用程序:初始化...完成!!
757.683477 s:vx_zone_init:Enabled
757.683514 s:vx_zone_error:Enabled
757.683523 s:vx_zone_warning:Enabled
757.686652 s:vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-0
757.686807 s:vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-1
757.686906 s:vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-2
757.687010 s:vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-3
757.687023 s:vx_zone_init:[tivxInitLocal:136]初始化完成!!!
757.689542 s:vx_zone_init:[tivxHostInitLocal:106]已为主机完成初始化!!!
正在将管道设置为已暂停...
流水线是实时的,不需要 PREROLL ...
流水线是 PREROLLED。
正在设置播放管道...
新时钟:GstSystemClock
重新分配延迟...
0:00:12.4/99:99:99。
^Chandling 中断。
中断:正在停止流水线...
执行在0:01:01.126448028之后结束
正在将管道设置为空...
正在释放管道...
819.478496 s:vx_zone_init:[tivxHostDeInitLocal:120]主机已完成初始化!!!
819.483002 s:vx_zone_init:[tivxDeInitLocal:206]已完成初始化!!!
应用程序:Deinit ...!!
REMOTE_SERVICE:取消初始化...!!!
REMOTE_SERVICE:取消初始化...完成!!!
819.484792 s : IPC: Deinit ...!
819.485289 s: IPC: DeInit ..完成!!
819.485312 s:内存:Deinit ...!!
819.485367 s:DDR_SHARED_MEM:Alloc's:35 alloc's、共228033825字节
819.485377 s:ddr_shared_mem:free's:35 free's of 228033825字节
819.485384 s:DDR_SHARED_MEM:open 的:0个0字节的分配
819.485394 s:内存:Deinit ...完成!!
应用程序:Deinit ...完成!!
root@am68a-sk:~#
您好、
在使用修改后的配置文件再次运行应用程序之前、是否可以尝试重命名以下文件?
/opt/imaging/imx219/linear dcc_viss_3280x2464_10b.bin ⇒ /opt/imaging/imx219/linear dcc_viss.bin
/opt/imaging/imx219/linear dcc_2a_3280x2464_10b.bin ⇒ /opt/imaging/imx219/linear dcc_2a.bin
谢谢您、
法比亚纳
您好、
[引述 userid="525970" url="~/support/processors-group/processors/f/processors-forum/1485935/sk-am68-edgeai-error-running-multiple-models-with-high-resolution/5710953 #5710953"]查看 您提到的以下测试运行的完整日志对我很有帮助。
客户尝试仅使用3280x2464的一个流程、并且在设置马赛克宽度=1280、高度=720时成功运行。
[/报价]该应用程序在两种情况下出错:1运行一个流程、3280x2464、马赛克宽度= 640、高度= 360。 2.两个流动的3280x2464,马赛克宽度=640,高度=360。
我希望查看包含未通过测试用例生成的 GStreamer 流水线的日志。
谢谢、
法比亚纳
由于此日志闪烁、因此我只能录制屏幕
root@am68a-sk:/opt/edgeai-gst-apps/apps_cpp/bin/Release ./app_edgeai /opt/edgeai-gst-apps/configs/single_input_multi_infer_new.yaml
子图形数量:129个节点中委派了1129个节点
应用程序:初始化...!!
588.954620 s:内存:初始化...!!!
588.954691 s:MEM:初始化的 DMA 堆(FD=6)!!!
588.954853 s:内存:初始化...完成!!!
588.954873 s:ipc: init ...!!
589.000923 s:ipc:初始化...完成!!!
remote_service:初始化...!!
remote_service:初始化...完成!!!
589.005148s:GTC 频率= 200 MHz
应用程序:初始化...完成!!
589.005251 s:vx_zone_init:Enabled
589.005265s:vx_zone_error:Enabled
589.005272 s:vx_zone_warning:Enabled
589.006185 s:vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-0
589.006360 s:vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-1
589.006490 s:vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-2
589.006601 s:vx_zone_init:[tivxPlatformCreateTargetId:124]添加了目标 MPU-3
589.006721 s:vx_zone_init:[tivxInitLocal:136]初始化完成!!!
589.007197 s:vx_zone_init:[tivxHostInitLocal:106]已为主机完成初始化!!!
加载了 libtidl_onnxrt_EP 0x32c4c0f0
创建的子图的最终数量为:1、- Offloaded Nodes - 283、Total Nodes - 283
图表
=========== [输入流水线]==========
[pipe-0]
v4l2src device=/dev/video-imx219-cam0 io-mode=5! 队列泄漏=2! capsfilter caps="video/x-Bayer, width=(int)3280, height=(int)2464, format=(string)rgb10;"! tiovxisp dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss.bin sensor-name=sensor_sony_IMX219_RPI format-mb=9! capsfilter caps="video/x-raw、format=(string)NV12;"! TEE name=input0_split
input0_split。 ! 排队! tiovxmultiscaler name=multiscaler_split_00
multiscaler_split_00。 ! 排队! capsfilter caps="video/x-raw、width=(int)820、height=(int)616;"! tiovxmultiscaler target=1! capsfilter caps="video/x-raw、width=(int) 320、height=(int) 320;"! tiovxdlpreproc out-pool-size=4 channel-order=1 data-type=3! capsfilter caps="application/x-tensor-tiovx;"! appsink max-buffers=2 DROP=true name=flow0_pre_proc0
multiscaler_split_00。 ! 排队! capsfilter caps="video/x-raw、width=(int) 640、height=(int) 360;"! tiovxdlcolorconvert out-pool-size=4! capsfilter caps="video/x-raw、format=(字符串) rgb;"! appsink max-buffers=2 DROP=true name=flow0_sensor0
input0_split。 ! 排队! tiovxmultiscaler name=multiscaler_split_01
multiscaler_split_01。 ! 排队! capsfilter caps="video/x-raw、width=(int)820、height=(int)616;"! tiovxmultiscaler target=1! capsfilter caps="video/x-raw、width=(int)416、height=(int)416;"! tiovxdlpreproc out-pool-size=4 data-type=3 tensor-format=1! capsfilter caps="application/x-tensor-tiovx;"! appsink max-buffers=2 DROP=true name=flow0_pre_proc1
multiscaler_split_01。 ! 排队! capsfilter caps="video/x-raw、width=(int) 640、height=(int) 360;"! tiovxdlcolorconvert out-pool-size=4! capsfilter caps="video/x-raw、format=(字符串) rgb;"! appsink max-buffers=2 DROP=true name=flow0_sensor1
=========== [输出流水线]==========
appsrc do-timestamp=true format=3 block=true name=flow0_post_proc0! tiovxdlcolorconvert! capsfilter caps="video/x-raw、width=(int)640、height=(int)360、format=(string)NV12;"! 排队! 马赛克0.sink0
appsrc do-timestamp=true format=3 block=true name=flow0_post_proc1! tiovxdlcolorconvert! capsfilter caps="video/x-raw、width=(int)640、height=(int)360、format=(string)NV12;"! 排队! 马赛克0.sink1.
tiovxmosaic target=1 background=/tmp/background0 name=马赛克0 src::Pool-size=4
SINK_0::startx="<320>" SINK_0::starty="<150>" SINK_0::宽度="<640>" SINK_0::高度="<360>"
Sink_1::startx="<960>" Sink_1::starty="<150>" Sink_1:Width="<640>" Sink_1::Highs="<360>"
! capsfilter caps="video/x-raw、format=(字符串) NV12、width=(int) 1920、height=(int) 1080;"! 排队! tiperfoverlay title=单输入、多推理! kmssink sync=false max-latestity=5000000 oS=true processing-depende=15000000 driver-name=tidss connector-id=40 plane-id=31 force-modesetting=true fd=65
已将这些文件的 IO 模式 从5 yo dmabuf-import 更改为
root@am68a-sk:/opt/edgeai-gst-apps # find ./-name gst_wrapper.py
./apps_python/gst_wrapper.py
/optiflow/gst_wrapper.py
和 已将 IO 模式 从5 yo dmabuf-import 更改为重建
root@am68a-sk:/opt/edgeai-gst-apps # find ./-name edgeai_demo_config.cpp
./apps_cpp/common/us/edgeai_demo_config.cpp src
同样的现象仍然不起作用。 你不能重现这个问题吗? 修改后是否可以工作? 谢谢
您好、csscyt、
因为 Fabiana 已经离开了,我会试着填写。
阅读这一主题后、我怀疑原始问题是由于多标量(MSC)硬件的限制造成的。 MSC 只能缩小4倍。 虽然有点难找到、但 TRM 和 MSC 的插件记录了此限制: https://github.com/TexasInstruments/edgeai-gst-plugins/wiki/tiovxmultiscaler
我看到用于大输入的一种方法是在流水线中放置两个 MSC 元素两次缩小。 我建议先尝试使用单输入流水线、然后使用双输入流水线、因为这会更容易调试。
是否可以并行运行多个模型、即运行4个总运行时间为20~30ms 的模型?
为此、我建议创建一个新的 E2E 主题。 这属于模型优化领域、如果我们聘请一些深度学习专家、这将是最好的选择。
我所能说的有限的知识是,它将取决于. 例如、如果您有多个输入、但一个模型同时处理这两个输入、则批处理可以优化流水线。 如果模型中有一些层未经过硬件加速、并且在 ARM A 内核(而不是 MMA HWA)上运行、则将该层切换到 TIDL (TI 深度学习)库支持的层、以便它们在 MMA 上运行可以优化流水线。 如果模型是复杂的,使它更简单可以减少推理时间,也许有一个更好的方式量化,等等..
但对模型问题的简单答案是,它取决于.
此致、
Takuma
阅读这一主题后、我怀疑原始问题是由于多标量(MSC)硬件的限制造成的。 MSC 只能缩小4倍。 虽然有点难找到、但 TRM 和 MSC 的插件记录了此限制: https://github.com/TexasInstruments/edgeai-gst-plugins/wiki/tiovxmultiscaler
>>>>>> 相机拍摄的照片的分辨率为3280*2464,其缩放为640*640以通过 MSC 进行推理。 MSC 最多可缩小至4倍。 事实上,我可以以3280*2464的分辨率运行单输入模型,并且可以正常推断。 在本例中、3280 > 640*4(2560)、这是原因吗?
我看到用于大输入的一种方法是在流水线中放置两个 MSC 元素两次缩小。 我建议先尝试使用单输入流水线、然后使用双输入流水线、因为这会更容易调试。
>>>>>> 是否有任何有关如何执行此操作的参考示例?
第二个问题、谢谢、我将创建一个新的 E2E 主题、
您好、cssyt、
>>>> 相机拍摄的照片的分辨率为3280*2464,其缩放为640*640以通过 MSC 进行推理。 MSC 最多可缩小至4倍。 事实上,我可以以3280*2464的分辨率运行单输入模型,并且可以正常推断。 在本例中、3280 > 640*4(2560)、这是原因吗? [/报价]是的、 MSC 限制是我对您观察到的行为的怀疑。
[引述 userid="612430" url="~/support/processors-group/processors/f/processors-forum/1485935/sk-am68-edgeai-error-running-multiple-models-with-high-resolution/5817405 #5817405"] >>>>>> 是否有任何有关如何执行此操作的参考示例?
[/报价]我们的"OptiFlow EdgeAI 示例应该已经将此示例嵌入到生成 GStreamer 流水线的脚本中:
具体地说、
我想您正在使用另一种方法、即 appsrc/appsink 方法(即6.2. 上述文档中的 Python/C++ apps 方法)创建 GStreamer 流水线。 如果该应用实现双倍多标量方法来解决 MSC 限制、则会存在一些问题。
tiovxmultiscaler name=multiscaler_split_00
multiscaler_split_00。 ! 排队! capsfilter caps="video/x-raw、width=(int)820、height=(int)616;"! tiovxmultiscaler target=1! capsfilter caps="video/x-raw、width=(int) 320、height=(int) 320;"但是、我确实看到、您在上面分享的流水线看起来使用了这种双倍 多标量方法。 但可能多标量插件太接近限值?
作为一个实验,将管道改为仅使用1个摄像头,并更改第一个盖子过滤器的宽度 x 高度是我建议您尝试的东西。
此致、
Takuma
[/quote]
是的、 MSC 限制是我对您观察到的行为的怀疑。
您能否帮助确认这是 MSC 的局限性?
我想您正在使用另一种方法、即 appsrc/appsink 方法(即6.2. 上述文档中的 Python/C++ apps 方法)创建 GStreamer 流水线。
是的、我使用 6.2。 上述文档中的 Python/C++应用程序方法
如果应用程序实现了双倍多标量方法来解决 MSC 限制、则有一些问题。 [/报价]
但是、我确实看到、您在上面分享的流水线看起来有这种双倍 多标量方法。 但也许多标量插件太接近极限?如何确认这些内容?
作为一项实验、我建议您尝试将管道改为仅使用1台摄像机、并更改第一个 capsfilter 的宽度 x 高度。
在这种"单输入、多个模型"场景中、我使用的是1台摄像头。
[/quote]
我分享视频 单输入,单型号,单输出3280*2464 分辨率。
使用下面的配置、它是有效的。
流量:
flow0:[input0、model1、output0、[320,150、 1,280,720 ]]
更改为以下配置不起作用
流量:
flow0:[input0、model1、output0、[320,150 ,640,360] ]
您可以暂停视频以检查日志。
e2e.ti.com/.../error_5F00_3280.mp4
您好、csscyt、
您可以运行两个命令(如果是拼写错误、请道歉、因为我是基于视频):
第一个流水线只有一个可达到640x360的多标量。 第二个流水线有两个多标量、其中第一个缩放至1280x720、然后第二个缩放至640x360。 第一个流水线应提供与您观察到的类似的错误日志和行为、如果 MSC 有问题、第二个流水线应适用。
此致、
Takuma