论文解读-RepPoints

本文主要对目标检测算法RepPoints进行详细讲述,本文逻辑结构和论文保持一致,深入分析作者的研究思路。
论文:RepPoints: Point Set Representation for Object Detection
代码: https://github.com/microsoft/...

摘要

存在问题

The bounding box is convenient to use but provides only a coarse localization of objects and leads to a correspondingly coarse extraction of object features

作者认为目前目标检测算法主要是通过初步bounding box(如anchors, proposals)来提取框内特征进行最终分类和定位的,由于边框无法提供目标形状信息,而且整个边框内部含有很多多余信息,以及边框定位不准确,这会导致提取的特征精度较差。

提出的方法

we present RepPoints (representative points), a new finer representation of objects as a set of sample points useful for both localization and recognition. Given ground truth localization and recognition targets for training, RepPoints learn to automatically arrange themselves in a manner that bounds the spatial extent of an object and indicates semantically significant local areas. They furthermore do not require the use of anchors to sample a space of bounding box

创新点:作者使用一系列采样点取代了bounding box来提取目标特征,并进行分类和根据采样点生成矩形伪框来实现定位,通过采样点来选择目标特征相对bounding box更具代表性,更精确。而且采样点是通过神经网络定位和分类损失函数反向传播自行选择的。

识别精度

We show that an anchor-free object detector based on RepPoints can be as effective as
the state-of-the-art anchor-based detection methods, with 46.5 AP and 67.4 AP50 on the COCO test-dev detection benchmark, using ResNet-101 mode

在COCO test-dev测试集上能够实现46.5AP和67.4AP50的精度。


算法流程

具体算法流程见下图所示:

骨干网络backbone

使用特征金字塔网络FPN作为骨干网络来提取5层特征图,这个相对简单,具体细节不予描述。

检测头head

检测头是用于分类和定位的,该论文使用了两阶段结构
第一阶段,首先通过两个分支卷积层对backbone的5层特征图进行分别操作生成定位特征分类特征,也就是上图中locate subnet和class subnet的输入特征。定位特征在locate subnet中经过一系列33卷积层和最后11卷积层,输出通道数为18的偏置特征图offset1,18表示9个偏置x,y。

$$ R=\left\{ \left( x_{n},y_{k}\right) \right\} _{k=1}^{9} $$

偏置特征图通过上图中的convert操作生成矩形伪框,并与标签生成RepPoints1定位损失。


第二阶段,定位特征根据offset1进行可变形卷积操作,以获取更详细的特征信息,并根据这个特征信息通过类似的卷积操作生成offsets2与offset1结合进行边框损失计算。

$$ R_{1}=\left\{ \left( x_{k}+\Delta x_{n},y_{k}+\Delta y_{k}\right) \right\} _{k=1}^{9} $$

由上述公式可知offset2是相对offset1的,这就相当于第一个offset1是粗偏置,第二个offset2是精偏置,是一个逐步精度化的过程。
分类特征同样根据offset1进行可变形卷积操作来汇总信息,并进行分类损失计算。

相信大家现在对RepPoints算法流程有个整体的了解,对细节还很模糊,所以接下来就几个重点细节进行详细描述。

矩形伪框是如何生成的?

矩形伪框可以使用min-max函数和moment函数生成:

  1. min-max function
    这个函数比较简单,正如名字所示,就是选择最大和最小的两个点作为bbox的对角点;
  2. moment-based function
    通过计算所有偏置点的xy平均值和方差进行计算的

两个阶段的标签是如何确定的?

  1. 第一阶段标签
    根据上文所述,第一阶段标签只有边框标签。 另外,训练过程中只对正样本进行损失计算,这是因为负样本的边框是不确定的,无法计算。如果满足下面两个条件,则将该特征点设为正样本。

    1. 特征点所在的层数等于真实目标对象的对数尺度

      $$ S_{B}=\left\lfloor \log _{2}\left( \sqrt{W_{B}H_{B}}/4\right) \right\rfloor $$

      因为不同层的特征图感受野不同,负责处理不同大小的目标对象,所以针对不同大小的目标,应确定特定层来进行识别。

    2. 该目标对象中心在各层特征层的投影点与该特征点距离最近
  2. 第二阶段标签
    第二阶段同时有边框标签和类别标签。边框标签是根据第一阶段预测结果确定的。如果该特征点在第一阶段预测的矩形伪框与真实标签有足够的重叠,并且它们的交集比IoU大于 0.5,则该特征点为正样本。

    分类标签也是类似,IoU大于 0.5 表示正样本,小于 0.4 表示负样本,否则被忽略。并使用focal loss 用于分类训练。

你可能感兴趣的:(深度学习图像识别算法)