NMS Series

NMS:

算法流程:
1.将所有检出的output bbox按类别进行划分;
2.在每个类别的集合内根据各个bbox的cls score做降序排列,得到一个降序的list_k,从list_k中top1 cls score开始,计算该bbox_x与list_k中其他bbox_y的IoU,若IoU大于阈值T,则剔除该bbox_y,最终保留bbox_x,从list_k中取出;
3.对剩余的bbox_x,重复step-2中的迭代操作,直至list_k中所有bbox都完成筛选;
4.对每个集合的list_k,重复step-2、step-3中的迭代操作,直至所有list_k都完成筛选。


nms

Soft NMS

softnms

图片上有重叠的两个类别一样的物体,用传统的nms将会去掉一个检测框造成漏检,但其实他们框的是两个不一样的物体。
不是一遇到重叠度过高的就去除,而是将其置信度降低,降低置信度的方式有线性和高斯加权


softnms

M为当前得分最高框,Bi 为待处理框,Bi 和M的IOU越大,Bi 的得分Si 就下降的越厉害,最后指定一个置信度阈值,高于该阈值的检测框就保留。soft-NMS在训练中采用传统的NMS方法,仅在推断代码中实现soft-NMS。

Softer NMS

NMS时用到的score仅仅是分类置信度得分,不能反映Bounding box的定位精准度,NMS会出现问题的情况:所有的BBox都不准确,或者拥有高分类置信分数的BBox定位不准确。Softer NMS增加定位置信度预测分支(预测坐标方差),提高定位精度,用KL Loss进行训练,假设Bounding box的是高斯分布,ground truth bounding box是狄拉克delta分布(即方差为0的高斯分布极限),KL 散度用来衡量两个概率分布的非对称性度量,KL散度越接近0代表两个概率分布越相似。论文提出的KL loss,即为最小化Bounding box regression loss,使得预测的坐标分布尽可能接近ground truth坐标分布,直观上解释,KL Loss使得Bounding box预测呈高斯分布,且与ground truth相近。将BBox预测的标准差看作置信度,Softer-NMS基于soft-NMS,对IOU大于阈值的候选框按方差的倒数进行加权平均。

Matrix NMS

出自SOLOv2,基于SoftNMS,实现并行化,在softnms中,Bi的得分会乘以一个惩罚系数,而这个惩罚系数的计算是串行的。对于mask m_j,需要通过s_j * decay factor来得到新的置信度s_j,soft nms是遍历和m_j相同类并且置信度比它高的那些m_i,Matrix nms 想并行计算,想通过矩阵一次性求decay factor,因此m_i被抑制最有可能就是和他重叠度最大的那个mask造成的。(参考:https://github.com/WXinlong/SOLO/blob/master/mmdet/core/post_processing/matrix_nms.py
首先计算得到NxN pairwise IoU Matrix,也就是这N个mask 每个和其他的mask的IoU
(先按置信度选出top N个mask,文章中N选的是500,得到的seg_masks是[N,HxW],然后计算IoU矩阵,得到类别相同的矩阵)
然后计算decay factor,
分母是与之类别相同且重叠比最高的IoU
分子是与自己类别相同且置信度比自己高的iou的函数(高斯或者线性函数)

Adaptive NMS

为了解决行人检测任务中目标过于密集的问题,本文对soft-NMS又进行了优化,提出了一种自适应的非极大值抑制(Adaptive NMS)的行人检测后处理方法,通过网络预测目标周边的密集和稀疏的程度,采用不同的去重策略。使得在人群密集的地方,NMS阈值较大(置信分数下降的阈值),而人群稀疏的地方NMS阈值较小。首先定义密度,目标i的密度定义为ground truth中与之重叠比最大的IoU的值,代表了拥挤程度:


密度

因此Adaptive NMS:

Adaptive NMS

N_M表示的是目标M的adaptive nms的阈值,d_M是目标M的密度,当周围的bbox远离M时,置信分数保持不变,当M处在一个密集区域时(d_M>N_t),就将目标密度作为NMS的阈值,在训练CNN时,每次还需要求出密度作为监督信号,训练网络能够拟合这个密度函数,即输入一张图片,能输出每个位置的物体密度,因此论文设计了一个Density-subnet对目标密度进行回归预测。

Density Prediction

IoU-Net

目标检测的分类与定位通常被两个分支预测。对于候选框的类别,模型给出了一个类别预测,可以作为分类置信度,然而对于定位而言,回归模块通常只预测了一个边框的转换系数,而缺失了定位的置信度,即框的位置准不准,并没有一个预测结果。定位置信度的缺失也导致了在前面的NMS方法中,只能将分类的预测值作为边框排序的依据,然而在某些场景下,分类预测值高的边框不一定拥有与真实框最接近的位置,因此这种标准不平衡可能会导致更为准确的边框被抑制掉。基于此,旷视提出了IoU-Net,增加了一个预测候选框与真实物体之间的IoU分支,并基于此改善了NMS过程,进一步提升了检测器的性能。

IoU-Net的基础架构与原始的Faster RCNN类似,使用了FPN方法作为基础特征提取模块,然后经过RoI的Pooling得到固定大小的特征图,利用全连接网络完成最后的多任务预测。


IoU-Net

同时,IoU-Net与Faster RCNN也有不同之处,主要有3点:

  1. 在Head处增加了一个IoU预测的分支,与分类回归分支并行。图中的Jittered RoIs模块用于IoU分支的训练。
  2. 基于IoU分支的预测值,改善了NMS的处理过程。
  3. 提出了PrRoI-Pooling(Precise RoI Pooling)方法,进一步提升了感兴趣区域池化的精度。

IoU分支用于预测每一个候选框的定位置信度。在训练时IoU-Net通过自动生成候选框的方式来训练IoU分支,而不是从RPN获取。
具体来讲,Jittered RoIs在训练集的真实物体框上增加随机扰动,生成了一系列候选框,并移除与真实物体框IoU小于0.5的边框。实验证明这种方法来训练IoU分支可以带来更高的性能与稳健性。IoU分支也可以方便地集成到当前的物体检测算法中。
在整个模型的联合训练时,IoU预测分支的训练数据需要从每一批的输入图像中单独生成。此外,还需要对IoU分支的标签进行归一化,保证其分布在[-1,1]区间中。

由于IoU预测值可以作为边框定位的置信度,因此可以利用其来改善NMS过程。IoU-Net利用IoU的预测值作为边框排列的依据,并抑制掉与当前框IoU超过设定阈值的其他候选框。此外,在NMS过程中,IoU-Net还做了分类置信度的聚类,即对于匹配到同一真实物体的边框,类别也需要拥有一致的预测值。具体做法是,在NMS过程中,当边框A抑制边框B时,通过选取A和B的分类置信度的较大值来更新边框A的分类置信度。

PrRoI-Pooling方法
RoI Align的方法,通过采样的方法有效避免了量化操作,减小了RoIPooling的误差,如图下图所示。但Align的方法也存在一个缺点,即对每一个区域都采取固定数量的采样点,但区域有大有小,都采取同一个数量点,显然不是最优的方法。

以此为出发点,IoU-Net提出了PrRoI Pooling方法,采用积分的方式实现了更为精准的RoI池化,与RoI Align只采样4个点不同,PrRoI Pooling方法将整个区域看做是连续的,采用积分公式求解每一个区域的池化输出值,区域内的每一个点(x, y)都可以通过双线性插值的方法得到。这种方法还有一个好处是其反向传播是连续可导的,因此避免了任何的量化过程。
总体上,IoU-Net提出了一个IoU的预测分支,解决了NMS过程中分类置信度与定位置信度之间的不一致,可以与当前的物体检测框架一起端到端地训练,在几乎不影响前向速度的前提下,有效提升了物体检测的精度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容