Jetson 共用资料

目标检测推理

2023-07-25 admin

目标检测推理

1.使用DetectNet定位对象

前面的识别示例输出表示整个输入图像的类概率。接下来,我们将重点关注对象检测,并通过提取边界框来查找帧中各种对象的位置。与图像分类不同,对象检测网络能够每帧检测许多不同的对象。

 

detectNet对象接受图像作为输入,并输出检测到的边界框的坐标列表及其类别和置信度值。detectNet可以从Python和C++中使用。有关可供下载的各种预训练检测模型,请参见下文。使用的默认模型是在MS COCO数据集上训练的91类SSD-Mobilenet-v2模型,该模型在Jetson上使用TensorRT实现了实时推理性能。

2.从图像中检测对象

首先,让我们尝试使用detectnet程序来定位静态图像中的对象。除了输入/输出路径之外,还有一些额外的命令行选项:

更改正在使用的检测模型的网络标志(默认为SSD-Mobilenet-v2)(可选)

optional--overlay标志,可以是以逗号分隔的box、line、labels、conf和none的组合。

默认值为--overlay=box、labels,conf,它显示框、标签和置信度值。

长方体选项绘制填充的边界框,而直线仅绘制未填充的轮廓

optional--alpha值,它设置叠加过程中使用的alpha混合值(默认值为120)。

阈值,用于设置检测的最小阈值(默认值为0.5)。

如果您使用的是Docker容器,建议将输出图像保存到images/test挂载的目录中。然后,在jetson推理/data/images/test下,可以很容易地从主机设备上查看这些图像.

注:运行案例之前,要是自己搭建环境的情况下得自己下载resnet-18.tar.gz模型文件到network文件夹下才能运行上面的程序。

请确保您的终端位于aarch64/bin目录中:

cd jetson-inference/build/aarch64/bin

以下是使用默认的SSD-Mobilenet-v2模型在图像中检测行人的一些示例:

# C++

$ ./detectnet --network=ssd-mobilenet-v2 images/xingren.png images/test/output_xinren.png

# Python

$ ./detectnet.py --network=ssd-mobilenet-v2 images/xingren.png images/test/output_xinren.png  

 

注意:第一次运行每个模型时,TensorRT将花费几分钟时间来优化网络。 这个经过优化的网络文件随后被缓存到磁盘上,因此将来使用该模型的运行将更快地加载。

3.处理视频文件

可以在images文件夹里存放自己的视频,路径为

cd jetson-inference/build/aarch64/bin

运行程序:

# C++

./detectnet xxxxxx.mp4 images/test/pedestrians_ssd.mp4

# Python

./detectnet.py xxxxxx.mp4 images/test/pedestrians_ssd.mp4

举例效果:

 

可以使用--threshold设置来向上或向下更改检测灵敏度(默认值为0.5)。

4.运行实时摄像头识别演示

我们之前使用的detectnet.cpp/detectnet.py样本也可以用于实时相机流。支持的摄像机类型包括:

MIPI CSI cameras ( csi://0 )

V4L2 cameras ( /dev/video0 )

RTP/RTSP streams ( rtsp://username:password@ip:port )

以下是在相机订阅源上启动程序的一些典型场景。

C++

$ ./detectnet csi://0                    # MIPI CSI camera

$ ./detectnet /dev/video0                # V4L2 camera

$ ./detectnet /dev/video0 output.mp4     # save to video file

python

$ ./detectnet.py csi://0                 # MIPI CSI camera

$ ./detectnet.py /dev/video0             # V4L2 camera

$ ./detectnet.py /dev/video0 output.mp4  # save to video file

OpenGL窗口中显示的是覆盖有检测到的对象的边界框的实时摄像机流。请注意,基于SSD的机型目前具有最高的性能。

如果在视频馈送中没有检测到所需的对象,或者您得到了虚假的检测,请尝试使用--threshold参数降低或增加检测阈值(默认值为0.5)。

 

 

 

 

 

 

 

 

 

 

 

 

 


首页
产品
案例
联系