当前位置:首页 > 经验 >

nms平台是什么意思(nms详解)

来源:原点资讯(www.yd166.com)时间:2024-01-06 01:28:21作者:YD166手机阅读>>

作者丨仿佛若有光157

来源丨CV技术指南

编辑丨极市平台

前言

Non-Maximum Suppression(NMS)非极大值抑制。从字面意思理解,抑制那些非极大值的元素,保留极大值元素。其主要用于目标检测,目标跟踪,3D重建,数据挖掘等。

目前NMS常用的有标准NMS, Soft NMS, DIOU NMS等。后续出现了新的Softer NMS,Weighted NMS等改进版。

原始NMS

以目标检测为例,目标检测推理过程中会产生很多检测框(A,B,C,D,E,F等),其中很多检测框都是检测同一个目标,但最终每个目标只需要一个检测框,NMS选择那个得分最高的检测框(假设是C),再将C与剩余框计算相应的IOU值,当IOU值超过所设定的阈值(普遍设置为0.5,目标检测中常设置为0.7,仅供参考),即对超过阈值的框进行抑制,抑制的做法是将检测框的得分设置为0,如此一轮过后,在剩下检测框中继续寻找得分最高的,再抑制与之IOU超过阈值的框,直到最后会保留几乎没有重叠的框。这样基本可以做到每个目标只剩下一个检测框。

nms平台是什么意思,nms详解(1)

原始NMS(左图1维,右图2维)算法伪代码如下:

nms平台是什么意思,nms详解(2)

nms平台是什么意思,nms详解(3)

实现代码:(以pytorch为例)

def NMS(boxes,scores, thresholds): x1 = boxes[:,0] y1 = boxes[:,1] x2 = boxes[:,2] y2 = boxes[:,3] areas = (x2-x1)*(y2-y1) _,order = scores.sort(0,descending=True) keep = [] while order.numel() > 0: i = order[0] keep.append(i) if order.numel() == 1: break xx1 = x1[order[1:]].clamp(min=x1[i]) yy1 = y1[order[1:]].clamp(min=y1[i]) xx2 = x2[order[1:]].clamp(max=x2[i]) yy2 = y2[order[1:]].clamp(max=y2[i]) w = (xx2-xx1).clamp(min=0) h = (yy2-yy1).clamp(min=0) inter = w*h ovr = inter/(areas[i] areas[order[1:]] - inter) ids = (ovr<=thresholds).nonzero().squeeze() if ids.numel() == 0: break order = order[ids 1] return torch.LongTensor(keep)

除了自己实现以外,也可以直接使用torchvision.ops.nms来实现。

torchvision.ops.nms(boxes, scores, iou_threshold)

上面这种做法是把所有boxes放在一起做NMS,没有考虑类别。即某一类的boxes不应该因为它与另一类最大得分boxes的iou值超过阈值而被筛掉。

对于多类别NMS来说,它的思想比较简单:每个类别内部做NMS就可以了。实现方法:把每个box的坐标添加一个偏移量,偏移量由类别索引来决定。

下面是torchvision.ops.batched_nms的实现源码以及使用方法

#实现源码 max_coordinate = boxes.max() offsets = idxs.to(boxes) * (max_coordinate torch.tensor(1).to(boxes)) boxes_for_nms = boxes offsets[:, None] keep = nms(boxes_for_nms, scores, iou_threshold) return keep #使用方法 torchvision.ops.boxes.batched_nms(boxes, scores, classes, nms_thresh)

这里偏移量用boxes中最大的那个作为偏移基准,然后每个类别索引乘以这个基准即得到每个类的box对应的偏移量。这样就把所有的boxes按类别分开了。

在YOLO_v5中,它自己写了个实现的代码。

c = x[:, 5:6] * (0 if agnostic else max_wh) # classes boxes, scores = x[:, :4] c, x[:, 4] # boxes (offset by class), score si = torchvision.ops.nms(boxes, scores, iou_thres)

这里的max_wh相当于前面的boxes.max(),YOLO_v5中取的定值4096。这里的agnostic用来控制是否用于多类别NMS还是普通NMS。

NMS的缺点
  1. 需要手动设置阈值,阈值的设置会直接影响重叠目标的检测,太大造成误检,太小达不到理想情况。
  2. 低于阈值的直接设置score为0,做法太hard。
  3. 只能在CPU上运行,成为影响速度的重要因素。
  4. 通过IoU来评估,IoU的做法对目标框尺度和距离的影响不同。
NMS的改进思路
  1. 根据手动设置阈值的缺陷,通过自适应的方法在目标系数时使用小阈值,目标稠密时使用大阈值。例如Adaptive NMS。
  2. 将低于阈值的直接置为0的做法太hard,通过将其根据IoU大小来进行惩罚衰减,则变得更加soft。例如Soft NMS,Softer NMS。
  3. 只能在CPU上运行,速度太慢的改进思路有三个,一个是设计在GPU上的NMS,如CUDA NMS,一个是设计更快的NMS,如Fast NMS,最后一个是掀桌子,设计一个神经网络来实现NMS,如ConvNMS。
  4. IoU的做法存在一定缺陷,改进思路是将目标尺度、距离引进IoU的考虑中。如DIoU。

下面稍微介绍一下这些方法中常用的一部分,另一部分仅提供链接。

Soft NMS

根据前面对目标检测中NMS的算法描述,易得出标准NMS容易出现的几个问题:当阈值过小时,如下图所示,绿色框容易被抑制;当过大时,容易造成误检,即抑制效果不明显。因此,出现升级版soft NMS。

nms平台是什么意思,nms详解(4)

首页 1234下一页

栏目热文

nms是什么梗(nmmp是什么梗)

nms是什么梗(nmmp是什么梗)

高二三班余周周今天带带大师兄上了微博热搜四个字母也上了微博热搜我看到这样一张图的时候心里立马就把所有事情串起来了,这个事...

2024-01-06 01:20:04查看全文 >>

nmo是什么梗(omo是什么梗)

nmo是什么梗(omo是什么梗)

【1】不懂干嘛给我推荐这个,不过真的有点动心了!感觉好保暖哦(via. )@北国佳人李春姬:实用,穿上还能让人看起来宁静...

2024-01-06 01:30:28查看全文 >>

2022新词汇网络用语(2022网络新词汇有哪些)

2022新词汇网络用语(2022网络新词汇有哪些)

央视新闻客户端 | 作者 曹岩今天上午国家语言资源监测与研究中心、商务印书馆等单位联合主办的“汉语盘点2023”揭晓仪式...

2024-01-06 01:18:54查看全文 >>

2022最火十大网络热梗(2022年最火的网络梗大合集)

2022最火十大网络热梗(2022年最火的网络梗大合集)

2022年接近尾声这一年,是驻足观望世界与自身的一年这一年,是人人都深感震撼的一年全球人口达80亿,我国网民数量达10....

2024-01-06 01:19:09查看全文 >>

2022有望涨的币前景(未来10种暴涨的币)

2022有望涨的币前景(未来10种暴涨的币)

在经历了痛苦的低迷之后,加密货币市场正在寻求反弹,投资者需要关注正确的反弹机会,有什么币是值得投资者关注的呢,下面一起来...

2024-01-06 01:03:53查看全文 >>

抖音热词(2023抖音热词)

抖音热词(2023抖音热词)

2019年结束已进入倒计时。到了年末,才惊觉日子过得如此之快。而时间总有强大的创造力,每年层出不穷的新词和热词,正是这一...

2024-01-06 01:05:50查看全文 >>

nmp是什么梗(网络nmp是什么梗)

nmp是什么梗(网络nmp是什么梗)

我婆家表弟,今年35岁,长的挺帅,平常看着脾气也不差。但今天我们一起去上坟,坐了一趟他开的车,我才看到了他的另一面。车开...

2024-01-06 01:35:49查看全文 >>

xsl什么梗(xsl什么意思饭圈用语)

xsl什么梗(xsl什么意思饭圈用语)

如今,我即将28岁,依旧是一个有着子宫的普通女人,依旧不想生孩子,依旧会大声说出:“我的子宫我说了算,不好意思,你没有话...

2024-01-06 00:54:10查看全文 >>

nml是什么缩写(nml代表超过的英文简称吗)

nml是什么缩写(nml代表超过的英文简称吗)

谁说你需要数据科学学位?使用NML 2.0和AI Studio 2.0,即便是没有AI经验的开发人员也可以部署自己的机器...

2024-01-06 01:04:59查看全文 >>

南亚的海陆位置(南亚地理位置和海陆位置)

南亚的海陆位置(南亚地理位置和海陆位置)

公共基础内容有哪些考点?如何准备事业编制考试?公共基础知识包括哪些知识点?有哪些必备常识?地理常识在山西事业单位编制考...

2024-01-06 01:13:52查看全文 >>

文档排行