浅笑の博客

我们的征途是星辰大海


  • 首页

  • 标签29

  • 分类6

  • 归档47

  • 留言板

  • 搜索

论文阅读笔记5:CenterNet:Keypoint Triplets for Object Detection

发表于 2019-07-31 分类于 深度学习 Valine: 本文字数: 3.5k

论文地址:https://arxiv.org/abs/1904.08189
代码地址:https://github.com/Duankaiwen/CenterNet

Abstract

目标检测中,基于关键点的方法经常出现大量不正确的边界框,主要是由于缺乏对相关剪裁区域的额外监督造成的。本文提出一种有效的方法,以最小的资源探索剪裁区域的视觉模式。本文提出的CenterNet是一个单阶段的关键点检测模型。CenterNet通过检测每个目标物看作是一个三个关键点,而不是一对关键点,这样做同时提高了准确率及召回率。本文还设计了另外两个模型,cascade corner pooling及center pooling,容易获得从左上角及右下角的丰富信息,同时在中间区域获得更多的识别信息。在MS-COCO数据集中CenterNet的AP达到了47.0%。

Introduction

本文改进了CornerNet,增加了一个观察每个候选区域的视觉模式的功能,进而可以判断每个边界框的正确性。CenterNet通过增加一个关键点来探索proposal中间区域(近似几何中心)的信息,本文创新点在于,如果预测的边界框与ground truth有较高的IoU,则中心关键点预测出相同类别的概率要高,反之亦然。因此,在进行inference时,当通过一组关键点产生了一个边界框,我们继续观察是否具有同类别的一个关键点落入区域的中心,即使用三个点表示目标。

为了更好的检测中心的关键点即角点,提出了两个方法来丰富中心点及角点的信息。

  • center pooling:用于预测中心关键点的分支,有利于中心获得更多目标物的中心区域,进而更易感知proposal的中心区域。通过取中心位置横向与纵向响应值的和的最大值实现此方法。
  • cascade corner pooling:增加原始的corner pooling感知内部信息的功能。结合了feature map中目标物内部及边界方向的响应值和的最大值来预测角点。经试验证实,此方法在存在feature-level 噪声的情况下更加稳定,有助于准确率及召回率的提升。

Related Work

  • Two-stage approaches
    把目标检测task分为两个stages:提取RoIs,然后对RoIs进行分类和回归。
  • One-stage approaches
    移除RoI提取步骤,直接对候选的anchor boxs进行分类和回归

Our Approach

baseline and Motivation

本论文的 baseline 为 CornerNet,因此首先讨论 CornerNet 为什么容易产生很多的误检。首先,CornerNet 通过检测角点确定目标,而不是通过初始候选框 anchor 的回归确定目标,由于没有了 anchor 的限制,使得任意两个角点都可以组成一个目标框,这就对判断两个角点是否属于同一物体的算法要求很高,一但准确度差一点,就会产生很多错误目标框。其次,恰恰这个算法有缺陷。因为此算法在判断两个角点是否属于同一物体时,缺乏全局信息的辅助,因此很容易把原本不是同一物体的两个角点看成是一对角点,因此产生了很多错误目标框。最后,角点的特征对边缘比较敏感,这导致很多角点同样对背景的边缘很敏感,因此在背景处也检测到了错误的角点。综上原因,使得 CornerNet 产生了很多误检。

我们分析出了 CornerNet 的问题后,接下来就是找出解决之道,关键问题在于让网络具备感知物体内部信息的能力。一个较容易想到的方法是把 CornerNet 变成一个 two-stage 的方法,即利用 RoI pooling 或 RoI align 提取预测框的内部信息,从而获得感知能力。但这样做开销很大,因此我们提出了用关键点三元组来检测目标,这样使得我们的方法在 one-stage 的前提下就能获得感知物体内部信息的能力。并且开销较小,因为我们只需关注物体的中心,从而避免了 RoI pooling 或 RoI align 关注物体内部的全部信息。

Object Detecton as Keypoint Triplets

网络通过 center pooling 和 cascade corner pooling 分别得到 center heatmap 和 corner heatmaps,用来预测关键点的位置。得到角点的位置和类别后,通过 offsets 将角点的位置映射到输入图片的对应位置,然后通过 embedings 判断哪两个角点属于同一个物体,以便组成一个检测框。正如前文所说,组合过程中由于缺乏来自目标区域内部信息的辅助,从而导致大量的误检。为了解决这一问题,CenterNet 不仅预测角点,还预测中心点。我们对每个预测框定义一个中心区域,通过判断每个目标框的中心区域是否含有中心点,若有则保留,并且此时框的 confidence 为中心点,左上角点和右下角点的confidence的平均,若无则去除,使得网络具备感知目标区域内部信息的能力,能够有效除错误的目标框。

我们发现中心区域的尺度会影响错误框去除效果。中心区域过小导致很多准确的小尺度的目标也会被去除,而中心区域过大导致很多大尺度的错误目标框无法被去除,因此我们提出了尺度可调节的中心区域定义法。

该方法可以在预测框的尺度较大时定义一个相对较小的中心区域,在预测框的尺度较小时预测一个相对较大的中心区域。如图所示。

$n$决定了中心区域的尺度。在本文中,对于尺度小于或者大于150的边界框,$n$分别取值为3或5。

Enriching Center and Corner Information

  • Center pooling
    一个物体的中心并不一定含有很强的,易于区分于其他类别的语义信息。例如,一个人的头部含有很强的,易于区分于其他类别的语义信息,但是其中心往往位于人的中部。我们提出了center pooling 来丰富中心点特征。center pooling提取中心点水平方向和垂直方向的最大值并相加,以此给中心点提供所处位置以外的信息。这一操作使中心点有机会获得更易于区分于其他类别的语义信息。Center pooling 可通过不同方向上的 corner pooling 的组合实现。一个水平方向上的取最大值操作可由 left pooling 和 right pooling通过串联实现,同理,一个垂直方向上的取最大值操作可由 top pooling 和 bottom pooling通过串联实现
  • Cascade corner pooling
    一般情况下角点位于物体外部,所处位置并不含有关联物体的语义信息,这为角点的检测带来了困难。传统做法 corner pooling,它提取物体边界最大值并相加,该方法只能提供关联物体边缘语义信息,对于更加丰富的物体内部语义信息则很难提取到。cascade corner pooling 首先提取物体边界最大值,然后在边界最大值处继续向内部(图中沿虚线方向)提取提最大值,并与边界最大值相加,以此给角点特征提供更加丰富的关联物体语义信息。Cascade corner pooling 也可通过不同方向上的 corner pooling 的组合实现。

Training and Inference

  • Training 输入图像的分辨率为512×512,heatmaps的大小为128×128,我们使用数据增强来训练一个鲁棒的模型。用Adam来优化训练的损失:

Experiments

  • Comparisons with State-of-the-art Detectors
目标检测 anchor-free
论文阅读笔记4:CornerNet:Detecting Objects as Paired Keypoints
Squeeze-and-Excitation Networks(SENet)
Zheng Yujie

Zheng Yujie

C++/Python/深度学习
47 日志
6 分类
29 标签
目录
  1. 1. Abstract
  2. 2. Introduction
  3. 3. Related Work
  4. 4. Our Approach
    1. 4.1. baseline and Motivation
    2. 4.2. Object Detecton as Keypoint Triplets
    3. 4.3. Enriching Center and Corner Information
    4. 4.4. Training and Inference
  5. 5. Experiments
© 2019 Zheng Yujie | 全站共199k字
浙ICP备 - 19035016号
0%