《Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文阅读

Abstract我们激励和呈现特征选择性无anchor(FSAF)模块,这是一种用于单级物体探测器的简单有效的构建模块。它可以插入具有金字塔结构特征的单级探测器。 FSAF模块解决了传统的基于anchor的检测带来的两个限制:1)启发式引导特征选择; 2)基于重叠的anchor采样。 FSAF模块的一般概念是在线特征选择应用于多级anchor-free分支的训练。具体地,anchor-fr...
摘要由CSDN通过智能技术生成

Feature Selective Anchor-Free Module for Single-Shot Object Detection

Abstract

我们呈现feature选择性无anchor(FSAF)模块,这是一种用于单级物体探测器的简单有效的构建模块。它可以插入具有金字塔结构feature的单级探测器。 FSAF模块解决了传统的基于anchor的检测带来的两个限制:1)启发式引导feature选择; 2)基于重叠的anchor采样。 FSAF模块的一般概念是在线feature选择应用于多级anchor-free分支的训练。具体地,anchor-free分支附接到feature金字塔的每个级别,允许以anchor-free方式在任意级别进行框编码和解码。在训练期间,我们会动态地将每个实例分配到最合适的功能级别。在推断时,FSAF模块可以通过并行输出预测与基于anchor的分支一起工作。我们通过简单实现anchor-free分支和在线feature选择策略来实例化这一概念。在COCO检测任务上的实验结果表明,我们的FSAF模块比基于anchor的对应物表现更好,同时更快。当与基于anchor的分支机构共同工作时,FSAF模块在各种设置下大幅提升了RetinaNet标准,同时引入了几乎免费的推理开销。由此产生的最佳模型可以达到最先进的44.6%mAP,优于COCO上所有现有的单级探测器。

图1:基于anchor定的RetinaNet的定性结果[22]使用功能强大的ResNeXt-101(左)和我们的探测器以及仅使用ResNet-50(右)的额外FSAF模块,在相同的训练和测试范围内。我们的FSAF模块可以帮助检测像小人物和平板滑雪板这样的硬物,而不是那么强大的骨干网络。有关更多示例,请参见图7。

1. Introduction

目标检测是计算机视觉社区中的一项重要任务。它是各种下游视觉应用的先决条件,例如实例分割[12],面部分析[1,39],自动驾驶汽车[6,20]和视频分析[25,33]。由于深度卷积神经网络[16,29,13,34]和标注良好的数据集[7,23]的推进,物体探测器的性能得到了显着提。

物体检测的一个挑战性问题是尺度变化。为了实现尺度不变性,最先进的探测器构造了feature金字塔或多层feature塔[24,8,21,22,19,38]。多尺度级别的feature图并行生成预测。此外,anchor boxes 可以进一步处理尺度变化[24,28]。anchor boxes 设计用于将所有可能实例框的连续空间离散化为,具有预定位置,尺度和纵横比的有限数量的框。并且实例框基于交叉联合(IoU)重叠与anchor boxes 匹配。与feature金字塔集成时,大型 anchor boxes 通常与上部feature图相关联,小型anchor boxes与较低feature图相关联,请参见图2。这是基于启发式的,上部feature映射具有适用于检测大型实例的更多语义信息,而下部feature映射具有更适合于检测小实例的细粒度细节[11]。与anchor boxes集成的feature金字塔的设计在物体检测基准上取得了良好的性能[7,23,9]。

图2:基于anchor的分支中的选定feature级别可能不是最佳的。

但是,这种设计有两个局限:1)启发式引导feature选择; 2)基于重叠的anchor采样。在训练期间,根据IoU重叠,每个实例总是与最近的anchor boxes匹配。并且anchor boxes通过人类定义的规则(例如框大小)与特定级别的feature图相关联。因此,每个实例的所选feature级别纯粹基于特殊启发式。例如,尺寸为50x50像素的汽车实例和尺寸为60x60像素的另一个类似汽车实例可以分配给两个不同的feature级别,而另一个40x40的汽车实例可能分配到与50x50的实例的同一级别,如图2所示。换句话说,anchor匹配机制本质上是启发式引导的。这导致了一个主要缺陷,即训练每个实例的所选feature级别可能不是最佳的。

我们提出了一种简单有效的方法,称为feature选择性 anchor-free(FSAF)模块,以同时解决这两个限制。我们的目的是让每个实例自由选择最佳级别的功能来优化网络,因此应该没有anchor-boxes来约束我们模块中的feature选择。相反,我们以anchor-free的方式对实例进行编码,以学习分类和回归的参数。一般概念如图3所示。每个feature金字塔构建一个anchor-free分支,独立于基于anchor的分支。与基于anchor的分支类似,它由分类子网和回归子网(图中未示出)组成。可以将实例分配给 anchor-free分支的任意级别。在训练期间,我们根据实例内容为每个实例动态选择最合适的feature级别,而不仅仅是实例框的大小。然后,所选的feature级别将学习检测分配的实例。在推断时,FSAF模块可以独立运行或与基于分支的分支共同运行。我们的FSAF模块与骨干网络无关,可应用于具有feature金字塔结构的单级检测器。另外, anchor-free分支的实例化和在线feature选择可以是各种各样的。在这项工作中,我们保持FSAF模块的实现简单,使其计算成本与整个网络相比是微不足道的。

图3:我们的FSAF模块插入传统的基于 anchor的检测方法的概述。 在训练期间,通过用于设置监督信号的feature选择将每个实例分配到金字塔等级。

COCO [23]物体检测基准的广泛实验证实了我们方法的有效性。FSAF模块本身优于基于 anchor的对应方法,并且运行速度更快。当与基于 anchor的分支机构共同工作时,FSAF模块可以通过各种骨干网络的大量feature来持续改善强基线,同时引入最低的计算成本。特别是,我们使用ResNeXt-101 [34]将RetinaNet提高了1.8%,仅增加了6ms的推理延迟。此外,我们的最终探测器在采用多尺度测试时达到了最先进的44.6%mAP,优于COCO上所有现有的单发探测器。

2. Related Work

最近的物体探测器通常使用feature金字塔或多层feature塔作为共同结构。 SSD [24]首先提出从多个feature尺度预测类别得分和边界框。 FPN [21]和DSSD [8]提出用各种尺度的高级语义feature映射来增强低级feature。 RetinaNet [22]解决了具有局部损失的多级密集探测器的类不平衡问题。 DetNet [19]设计了一种新的骨干网络,以保持上金字塔层的高空间分辨率。但是,它们都使用预定义的 anchor boxes来编码和解码对象实例。其他工作以不同方式解决尺度变化。 Zhu等人[41]增强了小物体的 anchor设计。He等人[14]将边界框建模为高斯分布,以改善定位。

无 anchor检测的想法并不新鲜。 DenseBox [15]首先提出了一个统一的端到端完全卷积框架,它直接预测了边界框。UnitBox [36]提出了一种联合交叉(IoU)损失函数,以获得更好的 boxes 回归。Zhong等[40]提出了无 anchor区域提议网络,以查找各种尺度,纵横比和方向的文本。最近CornerNet [17]提出将物体边界框检测为一对角,从而形成最佳的单级探测器。SFace [32]提出整合基于 anchor的方法和无 anchor方法。但是,他们仍然采用启发式feature选择策略。

3. Feature Selective Anchor-Free Module

在本节中,我们通过展示如何将其应用于具有feature金字塔的单级探测器(例如SSD [24],DSSD [8]和RetinaNet [22])来实例化我们的feature选择性 anchor定(FSAF)模块。在不失一般性的情况下,我们将FSAF模块应用于最新的RetinaNet [22],并从以下几个方面展示我们的设计:1)如何在网络中创建无 anchor分支(3.1); 2)如何为无 anchor分支生成监督信号(3.2); 3)如何为每个实例动态选择feature级别(3.3); 4)如何联合训练和测试无 anchor和 anchor定分支(3.4)。

3.1. Network Architecture

从网络的角度来看,我们的FSAF模块非常简单。图4显示了带有FSAF模块的RetinaNet [22]的体系结构。简而言之,RetinaNet由骨干网络(图中未示出)和两个特定于任务的子网组成。feature金字塔由骨干网络构成,具有从P3到P7的级别,其中 l l l是金字塔等级, P l P_{l} Pl具有输入图像的1 / 2 l / 2^{l} /2l分辨率。为简单起见,仅显示了三个级别。金字塔的每个级别用于检测不同尺度的对象。为此,分类子网和回归子网附加到 P l P_{l} Pl。它们都是小型完全卷积网络。分类子网预测每个A anchors和K对象类别在每个空间位置处的对象的概率。回归子网预测从每个A anchors到附近实例的4维类不可知偏移(如果存在)。

图4:使用我们的FSAF模块的RetinaNet网络架构。FSAF模块每个金字塔级别仅引入两个额外的转换层(虚线feature映射),使架构完全卷积。

在RetinaNet之上,我们的FSAF模块每个金字塔层仅引入两个额外的转换层,如图4中的虚线feature图所示。这两个层分别负责无 anchor分支中的分类和回归预测。更具体一点,具有K个滤波器的3x3卷积层附加到分类子网中的feature映射,随后是sigmoid函数,与来自基于 anchor的分支的feature映射并行。它预测了K个对象类在每个空间位置的对象的概率。类似地,具有4个滤波器的3x3卷积层连接到回归子网中的feature映射,然后是ReLU [26]函数。它负责预测以无anchor 方式编码的boxes偏移。为此,无anchor 和anchor 定分支以多任务样式共同工作,共享每个金字塔级别的feature。

3.2. Groundtruth and Loss

给定一个对象实例,我们知道它的类标签k和边界框坐标 b = [ x , y , w , h ] b=[x, y, w, h] b=[x,y,w,h],其中 ( x , y ) (x, y) (x,y)是box的中心, w , h w, h w,h分别是box的宽度和高度。可以在训练期间将实例分配给任意feature级别 P l P_{l} Pl 。我们定义了投影框 b p l = [ x p l , y p l , w p l , h p l ] b_{p}^{l}=\left[x_{p}^{l}, y_{p}^{l}, w_{p}^{l}, h_{p}^{l}\right] bpl=[xpl,ypl,wpl,hpl]作为b投影到feature金字塔 P l P_{l} Pl上,即 b p l = b / 2 i b_{p}^{l}=b / 2^{i} bpl=b/2i 。我们还定义了有效框 b e 1 l = [ x e l , y e l , w e l , h e l ] b_{e_{1}}^{l}=\left[x_{e}^{l}, y_{e}^{l}, w_{e}^{l}, h_{e}^{l}\right] be1l=[xel,yel,wel,hel]和忽略框 b i l = [ x i l , y i l , w i l , h i l ] b_{i}^{l}=\left[x_{i}^{l}, y_{i}^{l}, w_{i}^{l}, h_{i}^{l}\right] bil=[xil,yil,wil,hil] 作为 b p l b_{p}^{l} bpl 的比例区域,比例区域分别由恒定尺度因子 ϵ e \epsilon_{e} ϵe ϵ i \epsilon_{i} ϵi控制,即
x e l = x p l , y e l = y p l , w e l = ϵ e w p l , h e l = ϵ e h p l , x i l = x p l , y i l = y p l , w i l = ϵ i w p l , , h i l = ϵ i h p l x_{e}^{l}=x_{p}^{l},y_{e}^{l}=y_{p}^{l},w_{e}^{l}=\epsilon_{e} w_{p}^{l},h_{e}^{l}=\epsilon_{e} h_{p}^{l},x_{i}^{l}=x_{p}^{l},y_{i}^{l}=y_{p}^{l},w_{i}^{l}=\epsilon_{i} w_{p}^{l},,h_{i}^{l}=\epsilon_{i} h_{p}^{l} xel=xplyel=yplwel=ϵewplhel=ϵehplxil=xplyil=yplwil=ϵiwpl,hil=ϵihpl 。我们设置 ϵ e = 0.2 \epsilon_{e}=0.2 ϵe=0.2 ϵ i = 0.5 \epsilon_{i}=0.5 ϵi=0.5 。汽车实例的ground-truth生成示例如图5所示。

图5:无anchor分支的一个feature级中的实例的监督信号。我们使用focal loss 进行分类,并使用IoU损失进行框回归。

分类输出:分类输出的ground-truth是K个maps,每个map对应一个类。该实例以三种方式影响第k个ground-truth map。首先,有效框 b e l b_{e}^{l} bel区域是由“car”类映射中的白框填充的正区域,表示实例的存在。第二,忽略框排除有效框 ( b i l − b e l ) \left(b_{i}^{l}-b_{e}^{l}\right) (bilbel)是显示为灰色区域的忽略区域,这意味着该区域中的梯度不会传播回网络。第三,相邻feature级别的忽略框 ( b i l − 1 , b i l + 1 ) \left(b_{i}^{l-1}, b_{i}^{l+1}\right) (bil1,bil+1)如果存在,也会忽略区域。请注意,如果两个实例的有效框在一个级别重叠,则较小的实例具有较高的优先级。ground-truth map 的其余区域是由零填充的负(黑色)区域,表示没有物体。focal loss[22]适用于监督学习的超参数 α = 0.25 \alpha=0.25 α=0.25 γ = 2.0 \gamma=2.0 γ=2.0。图像的无anchor分支的总分类损失是所有非忽略区域上的focal loss的总和,通过所有有效框区域内的像素总数归一化。

框回归输出:回归输出的ground-truth 是与类无关的4个偏移图。该实例仅影响偏移图上的 b e l b_{e}^{l} bel区域。对于 b e l b_{e}^{l} bel内的每个像素位置 ( i , j ) (i, j) (i,j),我们将投影的框 b p l b_{p}^{l} bpl表示为4维向量 d i , j l = [ d t i , j l , d l i , j l , d b i , j l , d r i , j l ] \mathbf{d}_{i, j}^{l}=\left[d_{t_{i, j}}^{l}, d_{l_{i, j}}^{l}, d_{b_{i, j}}^{l}, d_{r_{i, j}}^{l}\right] di,jl=[dti,jl,dli,jl,dbi,jl,dri,jl],其中 d t l , d l l , d b l , d r l d_{t}^{l}, d_{l}^{l}, d_{b}^{l}, d_{r}^{l} dtl,dll,dbl,drl分别是当前像素位置 ( i , j ) (i, j) (i,j) b p l b_{p}^{l} bpl的顶部,左侧,底部和右侧边界之间的距离。然后,将4个偏移图上的 ( i , j ) (i, j) (i,j)位置处的4维向量设置为 d i , j l / S \mathbf{d}_{i, j}^{l} / S di,jl/S,其中每个图对应于一个维度。S是归一化常数,我们在这项工作中根据经验选择 S = 4.0 S=4.0 S=4.0。有效框外部的位置是忽略渐变的灰色区域。采用IoU损失[36]进行优化。图像的无anchor分支的总回归损失是所有有效框区域上IoU损失的平均值。

在推理期间,可以直接从分类和回归输出中解码预测的框。在每个像素位置 ( i , j ) (i, j) (i,j),假设预测的偏移是 [ O ^ t i , j , O ^ l i , j , O ^ b i , j , O ^ r i , j ] \left[\hat{O}_{t_{i, j}}, \hat{O}_{l_{i, j}}, \hat{O}_{b_{i, j}}, \hat{O}_{r_{i, j}}\right] [O^ti,j,O^li,j,O^bi,j,O^ri,j]。那么预测的距离是 [ S o ^ t i , j , S o ^ l i , j , S o ^ b i , j , S o ^ r i , j ] \left[S \hat{o}_{t_{i, j}}, S \hat{o}_{l_{i, j}}, S \hat{o}_{b_{i, j}}, S \hat{o}_{r_{i, j}}\right] [So^ti,j,So^li,j,So^bi,j,So^ri,j]。预测投影框的左上角和右下角分别是 ( i − S o ^ t i , j , j − S o ^ l i , j ) \left(i-S \hat{o}_{t_{i, j}}, j-S \hat{o}_{l_{i, j}}\right) (iSo^ti,j,jSo^li,j) ( i + S o ^ b i , j , j + S o ^ r i , j ] ) \left(i+S \hat{o}_{b_{i, j}}, j+S \hat{o}_{r_{i, j}}\right] ) (i+So^bi,j,j+So^ri,j])。我们进一步将投影框放大 2 l 2^{l} 2l倍,以获得图像平面中的最后一个框。可以通过分类输出图上的位置 ( i , j ) (i, j) (i,j)处的最大分数和K维向量的对应类来确定框的置信度得分和类。

3.3. Online Feature Selection

无anchor分支的设计允许我们使用任意金字塔等级 P l P_{l} Pl的feature来学习每个实例。为了找到最佳feature级别,我们的FSAF模块根据实例内容选择最佳 P l P_{l} Pl,而不是像基于anchor的方法那样选择实例框的大小。

给定一个实例 I I I,我们将其分类损失和boxes回归损失分别定义为 L F L I ( l ) L_{F L}^{I}(l) LFLI(l) L I o U I ( l ) L_{I o U}^{I}(l) LIoUI(l)。它们是通过平均有效框区域 b e l b_{e}^{l} bel上的focal loss和IoU损失来计算的,即
L F L I ( l ) = 1 N ( b e l ) ∑ i , j ∈ b e l F L ( l , i , j ) L I o U I ( l ) = 1 N ( b e l ) ∑ i , j ∈ b e l IoU ⁡ ( l , i , j ) ( 1 ) \begin{aligned} L_{F L}^{I}(l) &=\frac{1}{N\left(b_{e}^{l}\right)} \sum_{i, j \in b_{e}^{l}} F L(l, i, j) \\ L_{I o U}^{I}(l) &=\frac{1}{N\left(b_{e}^{l}\right)} \sum_{i, j \in b_{e}^{l}} \operatorname{IoU}(l, i, j) \end{aligned}(1) LFLI(l)LIoUI(l)=N(bel)1i,jbelFL(l,i,j)=N(bel)1i,jbelIoU(l,i,j)1
其中 N ( b e l ) N\left(b_{e}^{l}\right) N(bel) b e l b_{e}^{l} bel区域内的像素数, F L ( l , i , j ) , I o U ( l , i , j ) F L(l, i, j), \quad I o U(l, i, j) FL(l,i,j),IoU(l,i,j)分别是focal loss[22]和IoU损失[36]在 P l P_{l} Pl上的位置 ( i , j ) (i, j) (i,j)上的损失。

图6:在线feature选择机制。每个实例都通过所有级别的anchor-free分支来计算有效区域上的平均分类(focal)损失和回归(IoU)损失。然后选择具有两个损失的最小总和的level来设置该实例的监督信号。

图6显示了我们的在线功能选择过程。首先,我通过各级功能金字塔向前传播实例 I I I。然后使用等式(1)在所有无anchor分支中计算 L F L I ( l ) L_{F L}^{I}(l) LFLI(l) and L I o U I ( l ) L_{I o U}^{I}(l) LIoUI(l)的总和。 最后,选择产生最小损失总和的最佳金字塔等级 P l ∗ P_{l^{*}} Pl来学习实例,即
l ∗ = arg ⁡ min ⁡ l L F L I ( l ) + L I o U I ( l ) ( 2 ) l^{*}=\arg \min _{l} L_{F L}^{I}(l)+L_{I o U}^{I}(l) (2) l=arglminLFLI(l)+LIoUI(l)2
对于training batch,它们各自的features进行相应的分配情况进行更新。直觉是所选feature目前是建模实例的最佳feature。其损失在feature空间形成一个下界。并通过训练,我们进一步将下界拉低。在推理的时候,我们不需要选择feature,因为最合适的特征金字塔等级自然会输出高可信度得分

为了验证我们的在线特征选择的重要性,我们还进行了启发式特征选择过程,以便在消融研究中进行比较(4.1)。启发式特征选择完全取决于box sizes。我们从FPN探测器[21]借用了这个想法。实例 I I I 被分配给特征金字塔的级别 P l ′ P_{l^{\prime}} Pl
l ′ = ⌊ l 0 + log ⁡ 2 ( w h / 224 ) ⌋ ( 3 ) l^{\prime}=\left\lfloor l_{0}+\log _{2}(\sqrt{w h} / 224)\right\rfloor (3) l=l0+log2(wh /224)(3)
这里224是规范的ImageNet预训练大小,而 l 0 l_{0} l0是在 w × h = 22 4 2 w \times h=224^{2} w×h=2242的应该被映射的一个实例上的target level。在这项工作中,我们选择 l 0 = 5 l_{0}=5 l0=5,因为ResNet [13]使用来自第5个卷积组的feature map来进行最终分类。

3.4. Joint Inference and Training

当插入RetinaNet [22]时,我们的FSAF模块与基于anchor的分支共同工作,参见图4。
我们将基于anchor的分支保持为原始分支,所有超参数在训练和推理中都保持不变。

图4:使用我们的FSAF模块的RetinaNet网络架构。FSAF模块每个金字塔级别仅引入两个额外的转换层(虚线feature map),使架构完全卷积。

推论:FSAF模块只是为完全卷积的RetinaNet添加了一些卷积层,因此推断仍然像通过网络转发图像一样简单。对于无anchor分支,我们仅在将置信度得分阈值设置为0.05后,解码每个金字塔等级中1k top-scoring 位置的框预测。来自所有级别的这些top predictions与来自基于anchor的分支的框预测合并,随后是具有阈值0.5的非最大抑制,从而产生最终检测

初始化:骨干网络在ImageNet1k上进行了预训练[5]。我们在[22]中初始化RetinaNet中的层。对于我们FSAF模块中的转换层,我们使用偏差 − log ⁡ ( ( 1 − π ) / π ) -\log ((1-\pi) / \pi) log((1π)/π) 初始化分类层。高斯weight用 σ = 0.01 \sigma=0.01 σ=0.01,其中 π \pi π 指定在训练开始时每个像素位置输出对象分数在 π \pi π周边。我们根据[22]设置 π = 0.01 \pi=0.01 π=0.01。所有的box回归层都用偏置b初始化,高斯权重用 σ = 0.01 \sigma=0.01 σ=0.01。我们在所有实验中使用 b = 0.1 。初始化有助于通过防止大量损失来稳定早期迭代中的网络学习。

优化:整个网络的损失是来自无anchor和基于anchor的分支的组合损失。让 L a b L^{a b} Lab成为原始基于anchor的RetinaNet的全部损失。让 L c l s a f L_{c l s}^{a f} Lclsaf L r e g a f L_{r e g}^{a f} Lregaf分别成为无anchor分支的总分类和回归损失。然后总优化损失是 L = L a b + λ ( L c l s a f + L r e g a f ) L=L^{a b}+\lambda\left(L_{c l s}^{a f}+L_{r e g}^{a f}\right) L=Lab+λ(Lclsaf+Lregaf)其中 λ \lambda λ控制无anchor分支的权重。在实验中我们设置 λ \lambda λ=0.5,尽管结果对确切的值很稳健。整个网络使用8 GPU上的随机梯度下降(SGD)进行训练,每个GPU有2个图像。除非另有说明,否则所有模型都经过90k次迭代训练,初始学习率为0.01,在60k时再除以10,再在80k次迭代时除以10。除非另有说明,否则水平图像翻转是唯一应用的数据增强。权重衰减为0.0001,momentum 为 0.9.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值