系统环境:
ubuntu18.04、cuda10.2、driver440、cudnn7.6、tensorrt7.0、deepstream5.0。
环境安装(传送门):ubuntu上dseepstream5.0安装
拷贝/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”。
配置文件中的值被GObject设置的值覆盖属性。
几个属性取或的关系,目前支持以下四种引擎文件。
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
num-detected-classes
cluster-mode(Default=Group Rectangles), interval(Primary mode only, Default=0)
custom-lib-path,
parse-bbox-func-name
classifier-threshold,
is-classifier
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
batch-size(Default=1)
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)
属性设置:
[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
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)
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
结果如下:
传送门:deepstream系列文章分类整理