极简笔记 CornerNet: Detecting Objects as Paired Keypoints
论文地址:https://arxiv.org/abs/1808.01244
文章核心提出利用关键点定位方式定位物体bbox的左上角点和右下角点,从而完全摆脱利用anchor提取proposal的two stage检测框架。
文章使用网络结构如图所示,首先使用hourglass作为backbone,之后分成两个分支,一个预测左上角点(C个类别有C个channel),一个预测右下角点。每个分支里面先做corner pooling,之后再分三个分支分别预测heatmap,embedding map和一个offset。
为了方便计算bbox角点,文章提出corner pooling计算。以左上角点分支计算为例,corner pooling分为2个channel,第一个channel每个像素取该行右侧像素的最大值,第二个channel每个像素取该列下方像素的最大值。右下角点分支的corner pooling也类似,只是改成了左侧和上方。之后将两个channel逐像素求和,要求得到的最大值位置为角点位置。(个人想法,corner pooling的前置条件是能够学得instance上下左右四个极点,之后才能够利用corner pooling求得角点)
在计算heatmap的时候,文章希望当预测坐标在gt坐标的一个与instance尺寸相关的半径范围内时能够减少penalty,这个半径选取的条件是在这个范围内与gt的IoU大于0.7,然后gt的高斯分布的方差取半径1/3,利用改进的focal loss计算检测误差 Ldet L d e t 。
embedding map是用来计算左上角点和右下角点匹配程度的。文章计算pull & push loss( Lpull L p u l l , Lpush