Jetson nano 多路实时目标检测 yolov5 TensorRT

Jetson nano 多路实时目标检测 yolov5 TensorRT

导读

首先请参考 jetson nano 运行yolov5 配置好测试环境,在此基础之上,我们通过修改配置文件来测试多路视频的实时目标检测,经过简单的优化,我们可以在jetson nano上实现4路1080P或者更多路输入下的实时目标检测。

在不改变yolov5网络结构的前提下,我们需要针对输入的视频大小有针对性的调整模型的batch-size,以及推理的interval来快速达到想要的效果。

首先,尝试一下4路1080P输入

这里我们先将输入的视频修改为4路1080P,并将streammux以及yolov5模型的batch-size修改为4(streammux是deepstream的插件,用来把多个并行解码流合并成一个batch传给下一个组件)

修改Deepstream-Yolo文件夹下的deepstream_app_config.txt,参考如下:

[tiled-display]
#这里修改rows和columns都为2,显示的时候4路视频就会显示成2行2列
rows=2
columns=2 
#...

[source0]
#...
num-sources=4 # 修改视频输入为4路
#...

[streammux]
#...
batch-size=4 # 修改streammux的batch-size为4
#...

修改Deepstream-Yolo文件夹下的config_infer_primary_yoloV5.txt, 参考如下:

[property]
#...
custom-network-config=yolov5n.cfg
model-file=yolov5n.wts
model-engine-file=model_b4_gpu0_fp16.engine #修改保存模型的名称
batch-size=4 # batch-size修改为4
network-mode=2 # 模型类型修改为fp16

测试效果,继续优化

运行

deepstream-app -c deepstream_app_config.txt

在这里插入图片描述

可以看到,FPS只有不到10,因此还需要进一步优化,我们知道在大多数的业务场景中,我们其实不需要对视频的每一帧都做处理,由于视频的运动连贯性,我们可以间隔几帧做一次推理,这样可以显著的提高系统整体的吞吐率。

同样,修改config_infer_primary_yoloV5.txt中的interval参数,将其修改为3,也就是每间隔三帧做一次推理

[property]
#...
interval=3 #修改为3
#...

在这里插入图片描述

再运行程序测试,我们发现FPS已经显著提高了,可以达到实时的效果。同理,针对更多的视频流(本地/实时流),我们在不修改模型的基础上通过改变上述几个参数,可以有效的提高系统整体的FPS,在实际的场景中完成我们的业务。

猜你喜欢

转载自blog.csdn.net/delpanz/article/details/127242299