CenterNet:Objects as Points

整体信息:

    这篇文章题目言简意赅,就非常吸引人眼球。不同于CornerNet预测一对角点得到bbox,以及基于CornerNet改进的CenterNet预测三个点得到bbox,本文提出的CenterNet同样作为一种anchor-free的目标检测方法,化繁去简,直接将目标作为一个点去预测,彻底丢掉了nms等后处理操作,而且将这种方法应用到姿态估计和3D目标检测问题上。相对于一些伪Anchor-free,个人觉得这篇文章非常有创新点,考虑精度和速度trade-off,同时在coco上也取得不俗的成绩:28.1%mAP/142FPS,37.4%mAP/52FPS,45.1%mAP/1.4FPS。

图 1


简介

    目标检测驱动了很多基于视觉的任务,如 实例分割,姿态估计,跟踪,动作识别。目前大部分检测器都以bounding box轴对称框的形式(其实就是矩形)框住目标。对于每个目标框,分类器来确定每个框中是否是特定类别目标还是背景。

One stage detectors在图像上滑动复杂排列的可能bbox(即锚点),然后直接对框进行分类,而不会指定框中内容。

Two-stage detectors对每个潜在框重新计算图像特征,然后将那些特征进行分类。

后处理,即 NMS(非极大值抑制),通过计算Bbox间的IOU来删除同个目标的重复检测框。虽然基于NMS改进的算法也有很多,但是这种后处理很难区分和训练,因此现有大多检测器都不是端到端可训练的。(个人觉得NMS的作用其实类似于在语义分割中CRF的作用,都是对于算法的一种后处理。随着分割精度的不断提升,CRF已经渐渐淡出人们眼球。同样我相信在未来NMS这种后处理操作也会步入它的后尘。)

    本文通过目标中心点来找到目标(见图2),然后在中心点位置回归出目标的一些属性,例如:size, dimension, 3D extent, orientation, pose。 这样就可以把目标检测问题转换为一个标准的关键点估计问题。我们仅仅将图像传入全卷积网络,得到一个热力图,热力图峰值点即中心点,每个特征图的峰值点位置预测了目标的宽高信息。模型训练采用标准的监督学习,推理仅仅是单个前向传播网络,不存在NMS的操作。

图 2


相关工作  

     作者提出的方法与基于Anchor的one-stage方法相近。可以将feature map的中心点可看成形状未知的锚点(见图3)。但存在几个重要差别:

第一,分配的锚点仅仅是放在位置上,没有尺寸框,也没有人工设置的阈值做前后景分类。(像Faster RCNN会将与GT IOU >0.7的作为前景,<0.3的作为背景,其他不管);(减去超参数的设置,降低了调参的难度)

第二,每个目标仅仅有一个正的锚点,因此不需要NMS后处理,我们提取关键点特征图上局部峰值点(local peaks);

第三,CenterNet 相比较传统目标检测而言(stride=16),使用更大分辨率的输出特征图(stride=4),因此无需用到多重特征图锚点(FPN架构);

第四,相对于其他基于关键点的目标检测方法相比(比如CornerNet,ExtremeNet),无需grouping过程以及后处理操作(这些操作会拖慢速度);

图 3


算法实现


损失函数:

中心点预测的损失函数:


Focal loss+逻辑回归

       其中 α 和 β 是Focal Loss的超参数,N是图像的关键点数量,用于将所有的positive focal loss标准化为1。在这篇论文中和分别是2和4。这个损失函数是Focal Loss的修改版,适用于CenterNet。

       这个损失也比较关键,需要重点说一下。和Focal Loss类似,对于easy example的中心点,适当减少其训练比重也就是loss值,当Y_{xyc} =1时,(1-\tilde{Y}{xyc} )^a 就充当了矫正的作用,假如\tilde{Y} _{xyc}接近于1,则说明是个较为容易分辨的点,那么(1-\tilde{Y}{xyc} )^a 
就会使得其比重降低。反之对于难分的点(\tilde{Y}{xyc}
接近于0)说明对它的判断能力还不够,则其权重变大!


高斯中心

    

      对于Otherwise这种情况,我来简单分析一下:Y_{xyc} 之前提到了是由一个高斯核生成(如上图),在中心点Y_{xyc} 
=1,从中心点周围扩散会由1慢慢变小,而不是并不是直接为0。因此(1-\tilde{Y}{xyc} )^β
,与中心点越近,它的值越小,反之越大。(\tilde{Y}{xyc})^α 
于中心点越近,它的值越大;越远越小。(1-\tilde{Y}{xyc} )^β
(\tilde{Y}{xyc})^α 

两者相互制约,那它们是怎么协同工作的呢?

情况1:

(1)对于距离实际中心点近的点,Y_{xyc} 
值接近于1,我们假设其为0.9。但是在预测时将 \tilde{Y} _{xyc}
预测为接近于1的值,显然是不对的,它检测出来的值应该为0 (因为此时我们是在otherwise的情况下,Y_{xyc} 
≠1)。因此采用(\tilde{Y}{xyc})^α 

惩罚一下,加大此loss的权重。但是因为这个检测到的点距离实际的中心点很近了,检测到的 \tilde{Y} _{xyc}
的值接近于1也说得过去,就使用(1-\tilde{Y}{xyc} )^β
安抚一下,将其权重减少一点(求求你不要这么针对我)。整个流程类似于打个巴掌给个糖,很有意思。

(2)对于距离实际中心点较远的点,Y_{xyc} 
值接近于0,我们假设其为0.1。但是在预测时将\tilde{Y} _{xyc}
预测为接近于1的值,显然又又又是不对的,它应该检测到的值为0,需要用(\tilde{Y}{xyc})^α 

来惩罚一下你咯。(这里有些绕,大意就是反正在otherwise情况下,你就是不能把我预测为1)。如果预测出来的接近0,那么差不多了(孺子可教也),用(\tilde{Y}{xyc})^α 

来安抚一下(我少针对你一点点)。对于(1-\tilde{Y}{xyc} )^β
的话,因为此时预测距离中心点较远的点,所以这一项使距离中心点越远的点的损失比重占的越大,而越近的点损失比重则越小,这相当于弱化了实际中心点周围的其他负样本的损失比重,相当于处理正负样本的不平衡了。

综上所述:(1-\tilde{Y}{xyc} )^a (\tilde{Y}{xyc})^α 
用来解决简单样本(包括简单负样本和正样本)主导反向传播时梯度这一问题(因为简单数量太多了,虽然简单样本好判断,但是遭不住人海战术啊!!!!)。(1-\tilde{Y}{xyc} )^β
则用来处理正负样本的不平衡问题(因为每一个物体只有一个实际中心点,其余的都是负样本,但是负样本相较于一个中心点显得有很多。所以它只在otherwise情况下使用)。

     此外论文中有解释:传统的基于anchor的检测方法(如Fast-RCNN),通常我们选择与标记框IoU大于0.7的作为正样本,IoU小于0.3的则标记为负样本,如图3。这样设定好box之后,在训练过程中使用Mining机制将positive和negative的box比例限制为1:3,来解决正负样本不均衡问题。而在CenterNet中,每个中心点只对应一个目标的位置,不需要使用overlap的判断。那么怎么去减少正负样本的比例呢?CenterNet是采用Focal Loss的思想,在实际训练中,中心点的周围其他点(negative center pointer)的损失则是经过衰减后的损失(上文提到的),而目标的长和宽是经过对应当前中心点的w和h回归得到的。

目标中心位置损失

      因为作者对原始图像进行了Stride=4的下采样(R=4),这样会使得特征图重新映射到原始图像上的时候会带来精度误差(列如向下取整,向上取整,在feature map上只有1个像素的差距,对应原图是四个像素点的差距),因此对于每一个中心点,作者额外采用了一个local offset来进行偏差补偿。

local offset

     所有类的中心点共享offset prediction,这个偏置值(offset)用L1 loss来训练:(是否可以换成smooth L1或者别的损失函数呢???):


loss-offset

     \frac{p}{R
} 是原始图像经过下采样得到的,\tilde{p}=[\frac{p}{R
} ]。对于[512,512]的图像如果 R=4的话,则其下采样的feature map大小为[128,128]。下采样之后对Label图像用高斯分布来在图像上撒热点,怎么撒呢?首先将box坐标也转化为与[128,128]大小图像匹配的形式,但是因为我们原始的annotation是浮点数的形式(COCO数据集),使用转化后的box计算出来的中心点也是浮点型的,假设计算出来的中心点是[98.97667,2.3566666]。

       但是在前向传播过程中,假设我们输入图像大小为[640,320],然后resize成[512,512],然后下采样4倍成[128,128]。最终预测使用的图像大小是[128,128]。假设模型预测出与实际GT的中心点[98.97667,2.3566666]对应的点是[98,2],坐标是(x,y), 对应类别是c,则\tilde{Y} _{xyc}
=1,为某个物体的中心。直接映射为[512,512]的形式肯定会有精度损失,为了解决这个就引入了Loss-offset。

      表达式中绝对值里第一项是模型预测出来的偏置,第二项相当于GT(向下取整后与label真实的差距)

目标大小损失


推理阶段

    CenterNet在训练过程中,如果同一个类的不同物体的高斯分布点互相有重叠,那么则在重叠的范围内选取较大的高斯点。

总结

        目前,我在公司里预研一些轻量化的网络来提升检测算法的速度。了解到Anchor-Free在学术界炙手可热,但确实在生产中确实比较少见。所以我就预研了一些算法。这篇文章相对于一些为了创新而创新的Anchor-free系列论文,我觉得它的工作是特别特别好的,对今后的学习以及工作上大有裨益。文中的idea虽然乍一看不是特别有新意,相信很多人可能也有过类似拍脑袋的想法,但是将它实现出来还是非常不容易的。我复现了一下论文代码,目测精度应该可以达到论文中的要求。作者在文中没有尝试轻量级的模型,但是个人觉得这篇文章的思想对于提升模型速度是有效果的。后续也会尝试对其进行一些改进。

       论文中其实有些地方的设计,个人不太赞同。列如:它在对目标进行长宽回归的时候为什么不进行归一化处理?normalize the scale,以前的论文都会加log或者其他归一化方式,我觉得本文方法对目标尺度并没有做到很鲁棒?可能是作者试了之后,没效果就没继续采用?后续我会尝试一下用IOU Loss或者长宽归一化的方法对loss函数进行改进。

       因为第一次写简书,很多地方是从别的博主借鉴过来的,望见谅!

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

推荐阅读更多精彩内容