[ICCV 2019] CenterNet: Object Detection with Keypoint Triplets论文笔记

文章目录

    • 1. Introduction
    • 2. 与CornerNet的对比

1. Introduction

  目前主流的物体检测模型都会引入锚框,这些方法通常会存在以下问题:(1)算法通常需要大量的锚框,这样才能确保GT与某些锚框之间有较大的IoU;(2)锚框的尺寸和宽长比通常需要手动设定;(3)锚框和GT之间没有对齐,对于候选框分类的帮助不大。

  为了解决上述问题,学术界提出了一些基于关键点的物体检测算法,如CornerNet等。CornerNet的优势是一种不依赖于锚框的一阶算法,可以达到SOTA,该算法对于边界比较敏感,但是对于物体的全局信息表现较弱。这样会造成产生很多不正确的框(可以参见CornerNet的算法,CornerNet是通过网络学习左上和右下的热度图和embedding,然后找出top-k的corner点,组合 k 2 k^2 k2 pairs corners,当一个pair的embedding距离小于某个阈值,则认为它们足够接近,可以构成一个bbox,这样的约束相对较弱)。本篇论文就是基于CornerNet的改进版本,叫做CenterNet。

  CenterNet又引入了一个关键点(Center Point),通过三个关键点可以兼顾bbox边缘和内部信息,同时减小特征级别的干扰,提升算法的鲁棒性。这样做的出发点是当一个预测框与GT的IoU较大时,作者认为中心区域的中心关键点也有较大的概率与GT属于同一类别。CenterNet的网络结构如下图所示,具体来说,文章的主要工作可以分成三个部分:
[ICCV 2019] CenterNet: Object Detection with Keypoint Triplets论文笔记_第1张图片
(1)中心区域的生成:根据预测框左上和右下的坐标值,每个框按照下述公式可以生成中心区域的坐标。根据预测框的面积,式中的n取值为3或5,这样可以达到根据不同物体大小产生自适应中心区域的目的。自适应中心区域可以提升模型对于不同尺寸物体的识别率,因为较小的物体中心区域如果较小,漏检率(1-recall)就会比较大;而较大的物体中心区域还较大的话,误检率(1-precision)也会较大。中心区域的示意图如下图所示。
[ICCV 2019] CenterNet: Object Detection with Keypoint Triplets论文笔记_第2张图片
[ICCV 2019] CenterNet: Object Detection with Keypoint Triplets论文笔记_第3张图片
(2)Center Pooling: 几何学上的中心不一定是真正语义上的中心点,Center Pooling累加水平方向和垂直方向的最大值,让中心关键点信息更加丰富。
(3)Cascade Corner Pooling: CornerNet中提出的Corner Pooling只池化了边界的两个方向,没有考虑图像内部信息,而Cascade Corner Pooling先考虑边界的两个方向,然后从最大值方向往图像内部去找最大值,最后累加这两个最大值。

  Center Pooling和Cascade Corner Pooling的实现方式如下图所示(个人觉得原文中图4比图5更好理解):
[ICCV 2019] CenterNet: Object Detection with Keypoint Triplets论文笔记_第4张图片
   Loss函数如下所示:
在这里插入图片描述
Loss形式实际上就是把Metric Learning引入了进来,类比ReID的Loss函数,前两项就是ID Loss,第3和4项就是Metric Learning Loss,最后两项是对于Offsets的L1 Loss。

   CenterNet可以得到47.0% AP指标,接近二阶算法PANet。推理速度为340 ms/image,推理速度还可以,但是跟YoloV4比起来还差了挺多的(实测V4真的快)。与目前几个主流算法的对比如下:

MS-COCO(test-dev)
Model Backbone AP AP_50 AP_75
YOLOv4(416) CSPDarknet-53 41.2% 62.8% 44.3%
YOLOv4(512) CSPDarknet-53 43.0% 64.9% 46.5%
YOLOv4(608) CSPDarknet-53 43.5% 65.7% 47.3%
EfficientDet-D0(512) EfficientNet-B0 33.8% 52.2% 35.8%
EfficientDet-D1(640) EfficientNet-B1 39.6% 58.6% 42.3%
EfficientDet-D2(768) EfficientNet-B2 43.0% 62.3% 46.2%
EfficientDet-D3(896) EfficientNet-B3 45.8% 65.0% 49.3%
EfficientDet-D4(1024) EfficientNet-B4 49.4% 69.0% 53.4%
EfficientDet-D5(1280) EfficientNet-B5 50.7% 70.2% 54.7%
EfficientDet-D6(1280) EfficientNet-B6 51.7% 71.2% 56.0%
EfficientDet-D7(1536) EfficientNet-B7 52.6% 71.6% 56.9%
CenterNet511 (single-scale) Hourglass-52 41.6% 59.4% 44.2%
CenterNet511 (single-scale) Hourglass-104 44.9% 62.4% 48.1%
CenterNet511 (multi-scale) Hourglass-52 43.5% 61.3% 46.7%
CenterNet511 (single-scale) Hourglass-104 47.0% 64.5% 50.7%

2. 与CornerNet的对比

(1) CornerNet
  CornerNet生成两个热度图(左上corner的热度图和右下corner的热度图),图中每个像素表示不同类别的corner关键点位置,并为每个关键点分配一个信任评分。此外,每个corner还预测了embedding和offset。embedding用于衡量两个焦点是否来自同一对象,即度量学习领域,offset则是学习corner点重新映射到原图上的偏差。为了生成目标的bbox,根据置信度评分选取top-k的左上角和右下角的corner,用embedding的距离来确定corner之间是否可以构成一个bbox,产生的置信分是corner置信分的平均值。
  CornerNet的具体可以参考CornerNet。
(2) CenterNet和CornerNet的关系
  CenterNet比CornerNet多了一个分支去预测中心点,某种极端情况下,可以理解成Center Keypoint分支不会太多改变CornerNet产生的原始Bbox的数目(实际上Loss为两个分支的联合Loss,也会影响CornerNet的分支),该分支只是用来筛选CornerNet产生的bbox,而筛选的方式就是选取top-k个中心关键点,看某个中心关键点是否落在bbox产生的中心区域内,如果落在中心区域,并且分类类别与两个corner点一致,则保留该bbox。

你可能感兴趣的:(Object,Detection,论文阅读,深度学习)