论文: CenterNet: Keypoint Triplets for Object Detection
代码: https://github.com/Duankaiwen/CenterNet
作者: Kaiwen Duan, Song Bai, Lingxi Xie, Honggang Qi, Qingming Huang, Qi Tian
在目标检测方面,基于关键点的方法(CornerNet)由于缺少对预测框内部视觉模式的感知,会产生大量的误检候选框。下表列出的是CornerNet在MS-COCO验证集中误检率(False discovery rate)。
即使选取与ground truth的iou为很低的0.05,误检率依然可以达到32.7%;在小物体中,误检率更高,可以达到60.3%。论文中分析一种可能的原因是CornetNet没有查看候选框内的区域。这种问题的一种解决方案是采取RoI Pooling来查看(look into)候选框内区域的视觉模式,但RoI Pooling是计算昂贵的。
论文中提出了高度有效的CenterNet来探索每一个bounding box内部的视觉模式(to explore the visual patterns within each bounding box)。对于检测一个物体,CenterNet采取三元组关键点(左上点、右下点和center point),它同时提高了recall和precision。同时论文中提出了center pooling,给中心区域(central regions)提供了更有辨识度的信息,和cascade corner pooling,来增强左上corner和右下corner的信息。
CenterNet在CornerNet的基础上增加了预测中心关键点(center keypoints)的分支,并在此分支引入了center pooling。在预测corner分支,提出cascade corner pooling,它是在原来corner pooling的基础上增加了感知内部信息的能力。CenterNet的整体架构图如下所示:
接下来会介绍
类似于CornerNet,CenterNet在预测center keypoints时也使用了heatmap来预测中心点的偏移。
使用中心关键点辅助预测的流程如下:
检测效果如Fig2所示。
central region的尺寸会影响检测结果。对于小的bounding box,其central region如果太小会导致较低的recall;对于大的bounding box,其central region如果太大会导致较低的precision。论文中提出了一种scale-aware的方法来自适应bounding box的大小。
这个方法会对小的bounding box产生一个相对较大的central region,对大的bounding box会产生一个相对小的central region。产生方式如下:
{ c t l x = ( n + 1 ) t l x + ( n − 1 ) b r x 2 n c t l y = ( n + 1 ) t l y + ( n − 1 ) b r y 2 n c b r x = ( n − 1 ) t l x + ( n + 1 ) b r x 2 n c t l y = ( n − 1 ) t l y + ( n + 1 ) b r y 2 n \begin{cases} ctl_x = \frac{(n + 1)tl_x + (n - 1)br_x}{2n} \\\\ ctl_y = \frac{(n + 1)tl_y + (n - 1)br_y}{2n} \\\\ cbr_x = \frac{(n - 1)tl_x + (n + 1)br_x}{2n} \\\\ ctl_y = \frac{(n - 1)tl_y + (n + 1)br_y}{2n} \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧ctlx=2n(n+1)tlx+(n−1)brxctly=2n(n+1)tly+(n−1)brycbrx=2n(n−1)tlx+(n+1)brxctly=2n(n−1)tly+(n+1)bry
t l x , t l y , b r x , b r y tl_x, tl_y, br_x, br_y tlx,tly,brx,bry分别表示bounding box的左上点和右下点的(x,y)坐标, c t l x , c t l y , c b r x , c b r y ctl_x, ctl_y, cbr_x, cbr_y ctlx,ctly,cbrx,cbry分别表示其产生central region的左上点和右下点的(x,y)坐标。 n n n为奇数,对于小于150和大于150的尺寸分别取3和5。其产生central region的效果如下图所示:
物体的几何中心不一定传递非常具有辨识度的视觉信息,比如人的头部具有非常强的辨识信息,但人的中心关键点在人的腰部。为了解决这个问题,论文中提出了center pooling来捕获更丰富, 更具有辨识度的视觉模式。其操作如图Fig4(a)所示。
对于每一个位置,我们从水平方向和竖直方向分别获取特征图的最大值,然后相加。
Corner point通常在对象的外部,缺少局部外观特征。CornerNet采用corner pooling解决该问题,如Fig4(b)所示。但是它对边界很敏感,因为它沿着边界方向进行pooling。为了解决这个问题,让corners看到内部信息,论文提出了cascade corner pooling,如图Fig©所示。
通过这种方式,corners捕获了边界特征和视觉模式。
center pooling 和 cascade corner pooling可以通过corner pooling实现。
损失函数类似于CornerNet的损失函数,这里只把它列出来,详细信息可以参考CornerNet。
L l o s s = L d e t c o + L d e t c e + α L p u l l c o + β L p u s h c o + γ ( L o f f c o + L o f f c e ) L_{loss} = L_{det}^{co} + L_{det}^{ce} + \alpha L_{pull}^{co} + \beta L_{push}^{co} + \gamma (L_{off}^{co} + L_{off}^{ce}) Lloss=Ldetco+Ldetce+αLpullco+βLpushco+γ(Loffco+Loffce)
c o co co表示corners, c e ce ce表示centers。
在单阶段检测模型里,效果最好;在双阶段检测模型里效果居中。
检测到的每一个bounding box的视觉模式依赖于center keypoing,当center keypoing没有被检测到时,会对该bounding box的保留/移除产生影响。