Sina Weibo:小锋子Shawn
Tencent E-mail:[email protected]
http://blog.csdn.net/dgyuanshaofeng/article/details/82048113
CornerNet[1]的作者是来自密歇根大学的Hei Law和Jia Deng,此算法/模型是目标检测的新方法。其中Jia Deng,还有其它比较出名的工作,比如人体姿态估计领域的Stacked hourglass networks(堆叠漏斗网络)(ECCV2016),图像分类领域的ImageNet数据集(CVPR2009)。
0 摘要
将目标包围盒(object bounding box)转化为一对关键点(paired keypoints):左-上角点和右-下角点,其优势在于取消anchor boxes的设计。anchor boxes通常在检测器中使用,比如SSD和Faster R-CNN。提出corner pooling(角点池化),用于准确定位角点。在MS COCO数据集上,取得42.1%AP,超越所有一阶段式检测器(这里有问题,因为一阶段式检测器更为强调速度,而非精度,因此与这些模型比精度,似乎有些流氓了)。
1 介绍
anchor boxes就是各种size和aspect ratio预先定义好的框。一阶段式检测器依赖anchor boxes(锚框)实现类似二阶段式检测器的检测精度,并且更为有效率。然而,有两点缺陷。其一,需要大量锚框,DSSD使用40k,RetinaNet使用100k,最后造成正负锚框的巨大不平衡。其二,引入许多超参数和设计选择。如图1所示,为CornerNet的方法pipeline。卷积网络输出所有左和上一对角点的热图,输出所有右和下一对角点的热图,还输出每一对角点的embedding vector(嵌入向量)。
CornerNet的另一个要素是角点池化,如图2所示。总之,角点通常在目标之外,需要借助其它信息来定位角点,而非使用角点附近的信息。
作者给出了检测角点比检测包围框好的两点假设性理由。其一,包围盒的中心需要目标四边,而角点需要两边。其二,更有效,可用O(wh)角点表达O(w^2 * h^2)可能锚框。
2 相关工作
分别介绍了两类目标检测器,其中DSSD和RON都使用了类似的漏斗网络。
着重介绍了DeNet和本文工作的区别。
特别强调了本文工作的启发工作Associative Embedding[2],后文为NIPS2017的文章,可以重点阅读一下,因为NIPS上视觉类文章还是比较少的。
本文工作还使用了新颖变种focal loss。
3 角点网络(CornerNet)
3.1 Overview
如图3所示。
3.2 检测角点
变种focal loss:
fast r-cnn里面的smooth L1 loss:
3.3 组合角点
组合角点的“pull”(拉近)损失:
分离角点的“push”(推远)损失:
3.4 角点池化(Corner Pooling)
如图4所示,非常清楚地解释了如何进行角点池化。在实现中,详细阅读作者的cpp代码。
如图5所示,为预测模块。具体修改见开源代码和文章描述。
3.5 漏斗网络(hourglass network)
作者对hourglass network[3]作了比较大的修改。
4 实验
4.1 训练细节
总的训练损失:
4.2 测试细节
4.3 MS COCO
4.4 消融实验
1、角点池化
2、减小负样本位置惩罚
3、误差分析
4.5 与世界一流检测器比较
如表1所示。
[1] CornerNet Detecting Objects as Paired Keypoints ECCV 2018 [paper] [Pytorch code]
[2] Associative Embedding End-to-End Learning for Joint Detection and Grouping NIPS 2017 [paper] [Pytorch code]
[3] Stacked Hourglass Networks for Human Pose Estimation ECCV 2016 [paper]