deepstream5.0 deepstream-test1四类别pipeline检测器-例程说明(一)

系统环境:

ubuntu18.04、cuda10.2、driver440、cudnn7.6、tensorrt7.0、deepstream5.0。

环境安装(传送门):ubuntu上dseepstream5.0安装

1、示例说明

拷贝/opt/nvidia/deepstream/deepstream-5.0/samples/streams/sample_720p.h264到deepstream-test1。

它旨在简单演示如何使用各种DeepStream SDK元素,并从视频流中提取有意义的理解。这个示例创建了“nvinfer”元素的实例。的实例“nvinfer”使用TensorRT API对模型执行推断。使用一个nvinfer元素实例的正确配置非常重要,重要的是实例的相当多的行为通过这些配置被参数化。

下面是这个示例使用的配置文件,以供参考:

4类检测器(在本示例中称为pgie)使用:dstest1_pgie_config.txt

在这个示例中,我们首先创建一个“nvinfer”的实例,称为pgie。这是我们的4类别检测器,它可以检测“车辆、路标、两轮车、人”。nvinfer元素通过附加在探查函数末尾的管道中将一些元数据附加到缓冲区。可以提取有意义的内容从这个推断得到的信息。请参考在示例代码中“osd_sink_pad_buffer_probe”函数。有关元数据格式的详细信息,请参考文件“gstnvdsmeta.h”。

2、配置文件dstest1_pgie_config.txt说明

配置文件中的值被GObject设置的值覆盖属性。

2.1、当引擎文件未指定时,以下属性是必需的

几个属性取或的关系,目前支持以下四种引擎文件。

int8-calib-file(Only in INT8)
Caffemodel mandatory properties: model-file, proto-file, output-blob-names
UFF: uff-file, input-dims, uff-input-blob-name, output-blob-names
ONNX: onnx-file

2.2、检测器的必要的属性

num-detected-classes

2.3、检测器的可选属性

cluster-mode(Default=Group Rectangles), interval(Primary mode only, Default=0)
custom-lib-path,
parse-bbox-func-name

2.4、分类器的必要属性

classifier-threshold,
is-classifier

2.5、二级模型的可选属性

operate-on-gie-id(Default=0),
operate-on-class-ids(Defaults to all classes),
input-object-min-width,
input-object-min-height,
input-object-max-width,
input-object-max-height

2.6、建议始终使用以下属性

batch-size(Default=1)

2.7、其他可选的属性

net-scale-factor(Default=1), network-mode(Default=0 i.e FP32),
model-color-format(Default=0 i.e. RGB) model-engine-file, labelfile-path,
mean-file, gie-unique-id(Default=0), offsets, process-mode (Default=1 i.e. primary),
custom-lib-path, network-mode(Default=0 i.e FP32)

3、属性文件

属性设置:

[property]
gpu-id=0
net-scale-factor=0.0039215697906911373
model-file=../../../../samples/models/Primary_Detector/resnet10.caffemodel
proto-file=../../../../samples/models/Primary_Detector/resnet10.prototxt
model-engine-file=../../../../samples/models/Primary_Detector/resnet10.caffemodel_b1_gpu0_int8.engine
labelfile-path=../../../../samples/models/Primary_Detector/labels.txt
int8-calib-file=../../../../samples/models/Primary_Detector/cal_trt.bin
batch-size=1
network-mode=1
num-detected-classes=4
interval=0
gie-unique-id=1
output-blob-names=conv2d_bbox;conv2d_cov/Sigmoid

类别参数设置:

[class-attrs-all]
threshold=0.2
eps=0.2
group-threshold=1

4、makefile说明

makefile文件注释说明,更多makefie知识参考:makefile打印变量值进行debug、linux下pkg-config功能及使用。基本可以满足本例中makefile的debug理解。

APP:= deepstream-test1-app # 目标app名字

TARGET_DEVICE = $(shell gcc -dumpmachine | cut -f1 -d -) # 获取设备名:x86_64

NVDS_VERSION:=5.0

LIB_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/lib/
APP_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/bin/

ifeq ($(TARGET_DEVICE),aarch64)
  CFLAGS:= -DPLATFORM_TEGRA
endif

SRCS:= $(wildcard *.c) # 匹配当前工程所有.c文件

INCS:= $(wildcard *.h) # 匹配当前工程所有.h文件

PKGS:= gstreamer-1.0

OBJS:= $(SRCS:.c=.o) # 所有.c文件对应编译为.o

CFLAGS+= -I../../../includes

CFLAGS+= `pkg-config --cflags $(PKGS)`  # 获取gstreamer-1.0头文件

LIBS:= `pkg-config --libs $(PKGS)`  # 获取gstreamer-1.0库文件

LIBS+= -L$(LIB_INSTALL_DIR) -lnvdsgst_meta -lnvds_meta \
       -Wl,-rpath,$(LIB_INSTALL_DIR)   # 添加deepstream库文件


all: $(APP)

%.o: %.c $(INCS) Makefile
	$(CC) -c -o $@ $(CFLAGS) $<

$(APP): $(OBJS) Makefile
	$(CC) -o $(APP) $(OBJS) $(LIBS)

install: $(APP)
	cp -rv $(APP) $(APP_INSTALL_DIR)

clean:
	rm -rf $(OBJS) $(APP)

5、运行

1)拷贝/opt/nvidia/deepstream/deepstream-5.0/samples/streams/sample_720p.h264到deepstream-test1;

2)工程目录下执行make,编译,编译完后生成deepstream-test1-app;

3)运行:

./deepstream-test1-app sample_720p.h264

结果如下:

deepstream5.0 deepstream-test1四类别pipeline检测器-例程说明(一)_第1张图片

传送门:deepstream系列文章分类整理

你可能感兴趣的:(ubuntu,tx2\nano,2.1,deepstream)