论文笔记:CornerNet: Detecting Objects as Paired Keypoints
这是ECCV2018的一篇检测的文章,文中提出了一个anchor free 的目标检测方法,不需要使用anchor,而是直接预测物体的左上角和右下角两个角点,就可以实现物体的检测。
动机
用anchor有两个缺点
- 引入大量anchor,正负anchor box比例失衡
- 会带来很多超参数
因此,本文提出直接检测物体的左上角和右下角两个角点,实现目标检测
方法
网络输出两组heat map用于预测各个类别物体的左上角角点和右下角角点,同时对于每一个角点都附带预测一个embedding,用于左上角角点和右下角角点的配对。
Detecting Corners
每一组heatmap有C个通道,对应C个不同的类别。heatmap的尺寸为H*W。在设置ground truth时,考虑到即使角点没有完全与label重合,依然有可能预测出一个跟ground truth重叠足够大的检测框,因此角点ground truth设置了一个半径范围,这个半径的大小需要确保计算之后检测框与ground truth的IOU大于0.3。同时,用这个给定的半径的1/3作为高斯函数的σ,用二维高斯函数构建heatmap的ground truth。
heatmap的预测损失采用focal loss:
通过这个高斯分配,这个
(
1
−
y
c
i
j
)
β
(1-y_{cij})^{\beta}
(1−ycij)β可以减小预测值在ground truth附近时的惩罚。
此外,网络还预测出一个一组所有类别共享的offset,用于弥补下采样过程带来的分辨率损失:
Grouping corners
为了实现左上角角点和右下角角点的配对,网络还对每一个位置预测出一个embeddings,文中embedding的维度取一维,通过计算距离来进行角点配对。embedding部分的loss计算如下:
Corner Pooling
如图二所示,角点附近几乎没有任何与物体相关的信息,直接预测角点会比较困难,因此文中提出了一种corner pooling 的方法。以top-left角点预测为例,top-left预测出top和left两张图,坐标(i,j)位置的输出等于坐标(i,j)~(i,H)范围内的所有值取max pooling,然后同理对left进行操作,再将两个结果加起来作为top-left的预测结果。
Hourglass Network
算法采用的网络模型是基于Hourglass Network的修改,用stride 2替代max pooling进行下采样,同时不再输出多尺度特征。