范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

deepstream实践Gstnvinfer插件

  学习deepstream插件,首先要了解推理插件,它运行AI模型实现推理,是核心插件。在了解完推理插件后,可以在此基础上了解其他插件的功能。
  Gst-nvinfer 插件是deepstream推理插件之一,它使用 NVIDIA  TensorRT  对输入图像数据进行推理。Gst-nvinfer框架
  下图Gst-nvinfer 插件框架图,该插件接受来自上游的NV12/RGBA 批量缓冲数据,NvDsBatchMeta 结构必须已经添加到 Gst Buffer。底层库 (libnvds_infer) 对具有高、宽维度的INT8 RGB、BGR 或 GRAY 数据进行处理。Gst-nvinfer 插件根据网络要求对输入帧进行转换(格式转换和缩放),并将转换后的数据传递给底层库。底层库对转换后的帧进行预处理(执行归一化和均值减法)并生成最终的浮点 RGB/BGR/GRAY 平面数据,数据传递给 TensorRT 引擎进行推理。
  nvinfer 框架
  Gst-nvinfer 目前适用于以下类型的网络:
  多类型目标检测;多标签分类;语义分割;实例分割
  Gst-nvinfer 插件可以在三种模式下工作:主模式:处理全帧;次要模式:对上游组件在元数据中添加的对象进行处理预处理张量输入模式:对上游组件添加的张量进行处理
  在预处理张量输入模式下运行时,会完全跳过 Gst-nvinfer 内部预处理。Gst-nvinfer查找添加到输入buffer的 GstNvDsPreProcessBatchMeta 并将张量原封不动传递给 TensorRT 推理函数。此模式目前支持处理全帧和 ROI。 GstNvDsPreProcessBatchMeta 由 Gst-nvdspreprocess 插件添加。
  当Gst-nvinfer与跟踪器插件一起作为二级分类器运行时,它把分类输出缓存在以对象的唯一 ID 作为键的map中,避免重复推断每一帧中的相同对象来提高性能。即当对象首次出现在框架中(基于对象 ID)或对象的大小(边界框区域)增加 20% 或更多时,才会推断对象。注意此优化仅当将跟踪器添加为上游元素时,才可能进行。
  Gst-nvinfer下游组件接收一个 Gst buffer,其中包含未修改的NV12/RGBA数据以及经 Gst-nvinfer 插件推理后创建的元数据。该插件可用于级联推理, 即可以直接对输入数据进行一级推理,然后对一级推理的结果进行二级推理,以此类推。Gst-infer输入输出
  输入:Gst BufferNvDsBatchMeta (包含NvDsFrameMeta)Caffe 模型和Caffe PrototxtONNXUFF文件TAO 编码模型和Key离线:支持TAO SDK工具箱转换模型产生的engine文件Layers: 支持TensorRT支持的所有Layers
  控制参数:
  Gst-nvinfer从配置文件中获取控制参数。通过GObject属性也可以设置Gst-nvinfer控制参数,它可以设置下面这些参数:Batch大小推理间隔帧数添加推理输出张量为buffer元数据添加实例mask输出到对象元数据通过GObject属性设置的参数会覆盖通过配置文件设置的参数
  输出:Gst Buffer根据网络类型和配置参数会输出下面的一种或几种数据:
  NvDsObjectMeta,NvDsClassifierMeta,NvDsInferSegmentation,MetaNvDsInferTensorMeta学习Gst-nvinfer配置文件
  参见https://www.toutiao.com/article/7096632112018686497/,我们分析安装deepstream后得到的deepstream-app配置文件样例来学习如何设置Gst-nvinfer属性。
  下面是配置了caffe模型的Gst-nvinfer 配置文件config_infer_primary_nano.txt,对主要的属性做了注释。[property] gpu-id=0 ## 把输入从0-255转换到0-1的比例值 net-scale-factor=0.0039215697906911373 ## caffe 模型文件,存储了权重、偏置信息,并存储了网络结构信息 model-file=../../models/Primary_Detector_Nano/resnet10.caffemodel ## caffe 模型网络结构信息 proto-file=../../models/Primary_Detector_Nano/resnet10.prototxt ## 模型识别处的物体类别标签 labelfile-path=../../models/Primary_Detector_Nano/labels.txt ## 最多一次预测8帧 batch-size=8 ## 1=处理整帧图像;2=只处理预测出来的对象区域 process-mode=1 ## 输入模型网络图像格式,0=RGB;1=BGR;2=GRAY model-color-format=0 ## 0=FP32, 1=INT8, 2=FP16 mode,预测网络使用的数据精度 network-mode=2 ## 预测出来的对象种类数量 num-detected-classes=4 ## 每隔一帧图像预测一次 interval=1 ## nvinfer 标志id,用来标记,无其他作用 gie-unique-id=1 ## 预测模型网络输出层名称 output-blob-names=conv2d_bbox;conv2d_cov/Sigmoid ## 1:隐式batch 维度,0:显式batch维度,使用onnx时 需要设置为显式batch维度; ## 模型网络使用动态tensor维度时,也需要设置为显式batch维度 force-implicit-batch-dim=1  [class-attrs-all] pre-cluster-threshold=0.2 group-threshold=1 eps=0.2 roi-top-offset=0 roi-bottom-offset=0 detected-min-w=0 detected-min-h=0 detected-max-w=0 detected-max-h=0
  在配置文件中,若没有指定模型的engine文件,需要根据情况指定以下属性:int8-calib-file(只有在模型进行了INT8量化时使用)若使用Caffe模型,需要指定下列属性:model-file, proto-file, output-blob-names若使用uff模型,需指定下列属性:uff-file, input-dims, uff-input-blob-name, output-blob-names
  对于目标检测,必须设置属性: num-detected-classes。下面属性是可选的:cluster-mode: 默认是Group Rectanglesinterval: 只有在主模式下起作用,默认值是0clustom-lib-path: 用户自定义bbox解析动态库路径
  parse-bbox-func-name: 用户自定义解析bbox函数名。
  clustom-lib-path 需要与parse-bbox-func-name一起配合使用
  对于分类,必须设置的属性有:
  classifier-threshold, is-classifier
  可选属性classifier-async-mode,只有在次模式下起作用,默认值是false
  在次模式下,可选的属性有:operate-on-gie-id:此Gst-nvinfer实例要处理的metadata 中必须包含的Gst-nvinfer实例 id,默认值0operate-on-class-ids:此Gst-nvinfer实例要处理对象的分类id。
  譬如主Gst-nvinfer目标检测实例,能检测4种类型物体,汽车、自行车、人、路标,它们的分类id是0;1;2;3,若operate-on-class-ids=0;表示此Gst-nvinfer实例会对汽车分类。默认是对目标检测出的所有类型物体进行分类。input-object-min-width,input-object-min-height
  input-object-max-width,input-object-max-height
  batch-size: 每次都推荐设置一个合适值,默认值是1操作Gst-nvinfer配置文件
  上一节介绍了Gst-nvinfer配置文件各属性作用。这节通过简单例子介绍如何修改Gst-nvinfer配置文件。
  上一节Gst-nvinfer配置文件使用了caffe 模型文件,bbox 处理函数是默认的方法。使用caffe模型转换后的tensorrt engine文件,bbox 处理函数使用用户自定义函数如何配置呢?可以看下面的配置,与上一节的配置文件相比model-file和proto-file换成了model-engine-file,添加了parse-bbox-func-name和custom-lib-path属性。
  安装deepstream后,开源的部分代码中给出了用户自定义处理函数样例,此部分代码路径:
  /{path-of-deepstream}/sources/libs/nvdsinfer_customparser/,{path-of-deepstream}是deepstream的安装路径。[property] gpu-id=0 ## 把输入从0-255转换到0-1的比例值 net-scale-factor=0.0039215697906911373 ## 模型gpu加速后的tensorrt模型文件 model-engine-file=../../models/Primary_Detector_Nano/resnet10.caffemodel_b8_gpu0_fp16.engine ## 模型识别出的物体类别标签 labelfile-path=../../models/Primary_Detector_Nano/labels.txt ## 最多一次预测8帧 batch-size=8 ## 1=处理整帧图像;2=只处理预测出来的对象区域 process-mode=1 ## 输入模型网络图像格式,0=RGB;1=BGR;2=GRAY model-color-format=0 ## 0=FP32, 1=INT8, 2=FP16 mode,预测网络使用的数据精度 network-mode=2 ## 预测出来的对象种类数量 num-detected-classes=4 ## 每隔一帧图像预测一次 interval=1 ## nvinfer 标志id,用来标记,无其他作用 gie-unique-id=1 ## 预测模型网络输出层名称 output-blob-names=conv2d_bbox;conv2d_cov/Sigmoid ## 1:隐式batch 维度,0:显式batch维度,使用onnx时 需要设置为显式batch维度; ## 模型网络使用动态tensor维度时,也需要设置为显式batch维度 force-implicit-batch-dim=1 ## 用户自定义解析bbox函数名 parse-bbox-func-name=NvDsInferParseCustomResnet ## 用户自定义bbox解析动态库路径 custom-lib-path=/home/nvidia/deepstream/sources/libs/nvdsinfer_customparser/libnvds_infercustomparser.so  [class-attrs-all] pre-cluster-threshold=0.2 group-threshold=1 eps=0.2 roi-top-offset=0 roi-bottom-offset=0 detected-min-w=0 detected-min-h=0 detected-max-w=0
  下面介绍deepstream-app配置文件如何调用Gst-nvinfer插件# 对于主模式Gst-nvinfer,config-file 是必须要配置的。 # 若配置属性与Gst-nvinfer属性一致,会覆盖Gst-nvinfer对应属性 [primary-gie] ## 确定调用Gst-nvinfer主模式 enable=1 ## 使用0号GPU, 会覆盖Gst-nvinfer配置文件中对应属性 gpu-id=0 ## 模型gpu加速后的tensorrt模型文件,会覆盖Gst-nvinfer配置文件中对应属性 model-engine-file=../../models/Primary_Detector_Nano/resnet10.caffemodel_b8_gpu0_fp16.engine ## 最多一次预测1帧,会覆盖Gst-nvinfer配置文件中对应属性 batch-size=1 ## 用于OSD, 不是Gst-nvinfer属性 bbox-border-color0=1;0;0;1 bbox-border-color1=0;1;1;1 bbox-border-color2=0;0;1;1 bbox-border-color3=0;1;0;1 ## 每隔4帧图像预测一次,会覆盖Gst-nvinfer配置文件中对应属性 interval=4 ## 给Gst-nvinfer实例设置的唯一id,用于区分不同实例产生的metadata,会覆盖Gst-nvinfer配置文件中对应属性 gie-unique-id=1 ## 设置推理输出配置的cuda内存类型 nvbuf-memory-type=0 ## Gst-nvinfer 配置文件路径 config-file=config_infer_primary_nano.txt ## 保存推理原始结果的文件路径 # infer-raw-output-dir=/home/nvidia/workspace/study  # 对于次模式Gst-nvinfer,config-file 是必须要配置的。 # 若配置属性与Gst-nvinfer属性一致,会覆盖Gst-nvinfer对应属性 [secondary-gie0] ## 确定调用Gst-nvinfer次模式 enable=1 ## 模型gpu加速后的tensorrt模型文件,会覆盖Gst-nvinfer配置文件中对应属性 model-engine-file=../../models/Secondary_VehicleTypes/resnet18.caffemodel_b16_gpu0_int8.engine ## 使用0号GPU, 会覆盖Gst-nvinfer配置文件中对应属性 gpu-id=0 ## 最多一次预测16帧,会覆盖Gst-nvinfer配置文件中对应属性 batch-size=16 ## 给Gst-nvinfer实例设置的唯一id,用于区分不同实例产生的metadata,会覆盖Gst-nvinfer配置文件中对应属性 gie-unique-id=4 ## 此Gst-nvinfer实例要处理的metadata 中必须包含的Gst-nvinfer实例id,会覆盖Gst-nvinfer配置文件中对应属性 operate-on-gie-id=1 ## 此Gst-nvinfer实例要处理对象的分类id。 ## 譬如主Gst-nvinfer 是目标检测实例,能检测4种类型物体,汽车、自行车、人、路标,汽车的分类id是0,此Gst-nvinfer实例对汽车分类 ## 此属性会覆盖Gst-nvinfer配置文件中对应属性 operate-on-class-ids=0; ## Gst-nvinfer 配置文件路径 config-file=config_infer_secondary_vehicletypes.txt
  本文介绍了如何配置deepstream Gst-nvinfer插件,相信了解这些后,可以轻松配置deepstream-app,调用Gst-nvinfer进行模型推理。
  参考:https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvinfer.html

中国银行被罚3280万因向银行员工和公务员发放经营贷等中国银行视觉中国资料图2月17日,银保监会披露的罚单显示,中国银行因小微企业贷款风险分类不准确,小微企业贷款资金被挪用于房地产领域,贷款资金被挪用于证券市场,小微企业贷款资金被挪用火影推出T6A游戏本12代i7RTX4060,首发5999元IT之家2月18日消息,火影推出了新款T6A游戏本,i712650HRTX4060配置,首发5999元。据介绍,这款笔记本采用了16英寸的1610屏,25601600分辨率,165虚拟机安装MacOSX系统安装教程1。所需文件目录2。停止VMware的所有服务,打开任务管理器winR,输入services。msc见下图,分别停止方框内的5个服务,这个窗口不要管待会还要用到3。打开VMware无所不知的ChatGPT,真的懂水利吗?最近你的手机是不是常被ChatGPT霸屏?一款被网友号称为无所不知能文能武的自然语言处理工具听闻它写作文编代码找bug样样精通你是否好奇那些与水利有关的专业问题它会如何回答呢?人工海南去年常住人口增加6。56万人,现有8省份宣告正增长海南海口,少儿在家人的陪护下在室外游玩。视觉中国图随着2022年海南省国民经济和社会发展统计公报的出炉,目前已有8个省份公布了2022年的常住人口变动情况。在2022年全国人口规模韩国海运服务出口额创历史新高2022年,韩国航运服务出口额383亿美元,创历史新高,打破14年前创下的377亿美元最高纪录,连续第二年占韩国整个服务业出口的29。4。韩国海洋和渔业部(MOF)表示,得益于全球罗熹不再担任人保集团党委书记,曾要求全员背诵董事长金句从就职时间来看,罗熹掌管中国人保集团两年多时间资料图文财经记者丁艳编辑杨芮袁满2月17日下午,中国人民保险集团股份有限公司(下称中国人保集团)召开党委扩大会议。受中央组织部领导委派新潮能源董事长3成股权遭法拍,幕后买家浮出水面3成股权被对手拿下,中金系还有多少底牌?作者苏影编辑丨高岩来源野马财经随着新任管理层2021年改选董监事会决议受到法院支持,新潮能源(600777。SH)的双头董事会之争正式进入了不要受到韩国媒体的不实信息影响,理性看待中国OLED崛起最近,中国半导体产业陷入泥淖之中,各种专利案舆论战接踵而来2月16日有着传闻制造机之称的韩媒Thelec又开始散布今年苹果iPhone15系列供货情况的传言,矛头直指中国显示企业!400万澳洲人,为什么敢不存钱?一直以来,在全球国家储蓄排名中,澳大利亚都是排名后位,储蓄率只有20左右。根据最近的一项调查,三分之一的澳洲人他们大多只出不进,有了钱之后很快就会挥霍掉。五分之一的澳大利亚人相信家东北三省的出路到底在哪里?黑龙江篇进入九十年代以后,整个东北三省的经济明显下滑,特别是2000年以后,特别明显,国家提出了振兴东北老工业基地的一系列政策,效果也不明显,东北地区面积接近八十万平方公里,人口将
奥尼尔回应库里挑衅湖人能打爆勇士,我随便就能拿60分在前两天的节目中,库里对主持人说很多人都说我们碰到了96公牛,01湖人会输掉整个系列赛,但是这个对比毫无意义。就算我们真的碰到了01湖人,我依然觉得我们会赢。虽然我不知道谁会防守奥说啥都晚了!郭艾伦联手周琦的内外线,黎巴嫩还能骑马射箭?男篮亚洲杯8强赛,中国男篮面对黎巴嫩,历史对局中我们保持11连胜,但这第12场却没能够将数据延续,黎巴嫩这个国家目前是破产状态,连央行都倒闭了,所以他们能够来参加比赛,已经是非常的田径世锦赛女子铁饼颁奖仪式举行7月21日,冠军中国选手冯彬(中),亚军克罗地亚选手佩尔科维齐(左)与季军美国选手奥尔曼在颁奖仪式上。新华社记者吴晓凌摄当日,2022世界田径锦标赛女子铁饼颁奖仪式在美国俄勒冈州尤5。2亿到账!巴萨狂飙,激活第2财政杠杆,153。2亿,夏窗预算2亿据多家西班牙媒体确认,巴萨将在今天宣布启动第二个财政杠杆。加泰俱乐部的财政困境众所周知。因为营收下滑,工资帽却无法有效控制,现在他们的工资帽为负数已经违反了西甲规定,无法为新援注册世锦赛男女200米同创纪录!最新金牌榜东道主7金领跑,中国第4北京时间7月22日,尤金田径世锦赛继续进行,引人关注的男子和女子200米决赛上演,男子200米决赛中,美国选手包揽前三,其中莱尔斯跑出了惊人的19米31,打破赛会纪录夺冠,这也是人骁龙8Gen2发布时间确定,将于11月15日至17日发布近日,各家厂商搭载高通推出的骁龙8Gen1芯片的手机正在接连上市,并且芯片方面均获得了不错的评价,让不少消费者对下一代骁龙旗舰有了期待。最近高通就下一次Snapdragon峰会的日微信新增App内消息通知横幅,显卡售价持续下跌破发1微信iOS版8。0。26最新官方正式版下载发布新增App内消息通知横幅(IT之家)微信iOS平台迎来了8。0。26正式版更新。官方更新日志为本次更新解决了一些已知问题。最近更新可屏占比超越iPhone的直屏旗舰!努比亚Z40SPro灵笼限定版图赏努比亚Z40SPro灵笼限定版的图赏,限定版就是普通版重新设计了下后盖图案,所以只借了个限定版玩玩。虽然下半年,大多数厂商都会是简单的换芯升级,但是努比亚Z40SPro居然是重新设售价199元索尼发布全新颈挂式无线耳机WIC1007月22日消息,今日索尼随身影音通过官方账号宣布发售全新的颈挂式无线耳机WIC100。索尼颈挂式耳机WIC100拥有四款配色,支持最高约25小时的续航时长,起售价199元。据官方介朱芳雨调整外援阵容!锁定NBA级内线,曾单场砍下24分20篮板广东宏远在经历三连冠辉煌之后,开始走下坡路,由于俱乐部薪资紧张,朱芳雨都是依靠两名外援在维持局面,甚至出现过威姆斯单核带队。在马尚布鲁克斯遭遇赛季报销的重伤之后,杜锋引进了救火外援山东队16人名单出炉!高诗岩无缘45超外不逊老哈王晗还有大手笔今年休赛期山东队的阵容重组工作备受球迷关注,然而在过去的三个月当中,山东队的调整工作可以称得上雷声大雨点小。除了放走丁彦雨航以外,租借可兰白克以及重新召回张辉,或许就是最大的手笔。