&Title:
- CornerNet: Detecting Objects as Paired Keypoints
- CornerNet: Detecting Objects as Paired Keypoints[中文翻译]
&Summary
CornerNet,一种新的物体检测方法,文章使用单个卷积神经网络将目标边界框(bounding box)检测转化为一对关键点对(paired keypoints)的检测,这一对关键点对即待检测目标的左上角点(top-left corner)和右下角点(bottom-right corner)。通过将对象检测转化为成对关键点检测,使得不再需要专门设计anchor boxes,而这之前在one-stage类型的检测器中经常要用到。 除了提出新的算法形式外,文章还引入了一种新的池化方法——corner pooling,它可以帮助网络更好地定位corner。
检测大致过程: cornerNet分别输出左上角预测模块和右下角预测模块的Heatmaps、Embeddings和Offsets后。首先利用各自的Heatmaps计算出xy坐标,然后利用各自的Offsets修正xy坐标。接着利用各自的Embeddings信息收集同一bbox的左上角点和右下角点。
实验表明,CornerNet在MS COCO数据集上达到了42.1% AP,优于所有现有的one-stage类型的检测器。
&Research Objective
不使用Anchor的情况下,引入了关键点检测的思路,对物体进行检测。
&Problem Statement
目前的检测算法主要思路还是设置大量Anchor+分配正负样本+训练的一个思路,Anchor的本质是目标的候选框,因为目标的形状和位置的多种可能性,Anchor的数量往往非常庞大,否则会出现遗漏的情况,这种情况对于one-stage的检测算法更加突出。因此会带来两个问题:
- 大量的Anchor中只有少部分和gt的重合比较大,可以作为正样本训练,其它都是负样本,换而言之,正负样本均衡问题,这几乎是所有检测算法都要考虑的问题,不同算法往往也会有不同的策略。
- Anchor的设置本身也是需要超参数的(形状、个数怎么设置),在multi-scale的时候会更加明显,YOLOv2曾经用5个anchor达到了faster rcnn中9个anchor的效果,说明这方面确实也是有很多可以做的地方。
基于上述两点原因,再加上keypoint问题的启发,作者就想到用关键点检测的思路来处理detection问题,只要找到top-left和Bottom-right两个点,就可以准确框出一个目标了。
&Method(s)
本文给出了CornerNet的解决方案,放弃anchor boxes,直接检测目标的左上角点和右下角点。
CornerNet算法检测流程:
文章将对象检测看作为一对边界框角点的检测。 卷积网络为所有左上角输出heatmap,为所有右下角输出heatmap,并为每个检测到的角点输出一个嵌入矢量。 属于同一目标的两个角点的嵌入矢量是相似的,通过训练网络判断相似性,找到属于同一目标的两个角点,即检测到了目标。
详细流程:摘自文章
1.首先1个7×7的卷积层将输入图像尺寸缩小为原来的1/4(论文中输入图像大小是511×511,缩小后得到128×128大小的输出)。
2.然后经过特征提取网络(backbone network)提取特征,该网络采用hourglass network,该网络通过串联多个hourglass module组成(Figure4中的hourglass network由2个hourglass module组成)