18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 行业动态 > 三个分类器(classifier)

三个分类器(classifier)

时间:2022-03-17 10:51:01 | 来源:行业动态

时间:2022-03-17 10:51:01 来源:行业动态

来共同完成这项任务。



可能有人会问,那是否能在Person或RoadSign上面增加分类器?例如将前者再添加男/女、老/少分类,对后者再添加限制类、指示类、警告类的属性呢?这当然是可以的,只要你能找到合适的模型文件来搭配,或者得自己重新收集数据集进行模型训练,然后再提供对应的配置文件。

与test1范例中所不同的地方,在test2范例在pgie这个nvinfer元素之外,又添加sgie1/sgie2/sgie3这3个推理计算的元素,总共四个推理器的内容如下:



这个过程有个比较特殊的地方,就是在主推理器(这里是个检测器)与次推理器(这里是三个分类器)之间,需要透过追踪器(tracker)进行串联,这里有个很重要的原因,因为次推理器是以主推理器的范围图像去进行分类推理,包括颜色、品牌、车型等等,而追踪器可以协助记录主推理器所找到的图像范围,将这个局部的数据传送给次推理器去进行计算,这样才能建立好主次之间的关联。

因此我们会发现,只要需要进行这种主次结合的方式,必定需要调用追踪器这个元件来扮演角色,这个在deepstream-app里面也是存在的,但是这里会延伸出另一个问题,就是调用追踪器是会影响性能的,在DeepStream追踪器里面,目前支持NVDCF、KLT与IOU三种算法,其中NVDCF算法的性能最差,KLT在准确性与性能的综合表现较好,因此大部分的范例中都选择使用KLT追踪器。

附带说明的一点,就是追踪器插件接受来自上游组件的NV12-或RGBA格式的帧数据,并将输入缓冲区转换为低层库所需格式的缓冲区,再将宽度和高度转换为跟踪器要求的宽度和高度,这需要将输入帧缓冲区转换为底层库请求的格式,例如KLT使用Luma专用格式、NvDCF使用NV12或RGBA格式,IOU则不需要缓冲区。



上图是nvtracker插件的工作示意图,详细的内容请自行参考开发手册:https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvtracker.html

好了,前面已经将整体原理说明的差不多,接下来就看看test2与test1的Python代码中的差异部分,这样就更能掌握这部分的实际运作内涵。

如同前面所提到的,这个代码主要修改的部分,就是在pgie与nvvideoconvert之间,添加tracker与sgie1~3这四个元件,其他修改的部分几乎都在处理tracker的部分,包括一开始需要为追踪器是否保存追踪数据的

# 42行:给定这个变量设定是否保存追踪的数据

past_tracking_meta=[0]



# 217至238行:在 pgie与 nvvidconv 之间,添加 tracker sgie1~3

pgie = Gst.ElementFactory.make("nvinfer", "primary-inference")

关键词:分类

74
73
25
news
  • 网站
  • 营销
  • 设计
  • 运营
  • 优化
  • 效率
  • 专注
  • 电商
  • 方案
  • 推广
为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭