Feature Selective Anchor-Free Module for Single-Shot Object Detection
用于单发物体检测的功能选择免锚模块
图1:在相同的训练和测试规模下,使用强大的ResNeXt-101的基于锚的RetinaNet [22](左)和使用ResNet-50的带有FSAF模块的检测器的定性结果(仅右图)。我们的FSAF模块可通过功能较弱的骨干网络帮助检测硬物,例如小人和平板滑雪板。有关更多示例,请参见图7。
Abstract
我们激励并提出功能选择性免锚(FSAF)模块,这是用于单发物体检测器的简单有效的构建块。可以将其插入具有特征金字塔结构的单发检测器。 FSAF模块解决了传统基于锚的检测带来的两个限制:1)启发式引导特征选择; 2)基于重叠的锚点采样。 FSAF模块的一般概念是在线特征选择,用于选择多级无锚分支。具体地,无锚分支附接到特征金字塔的每个级别,从而允许以任意锚的无锚方式进行盒编码和解码。在训练过程中,我们会为每个实例动态分配最合适的功能级别。在推论时,FSAF模块可以通过并行输出预测与基于锚的分支共同工作。我们通过无锚分支的简单实现和在线特征选择策略来实例化此概念。在COCO检测轨道上的实验结果表明,我们的FSAF模块比基于锚的模块性能更好,但速度更快。当与基于锚的分支联合使用时,FSAF模块在各种设置下都大幅提高了基线RetinaNet,同时引入了几乎免费的推理开销。最终得到的最佳模型可以达到44.6%的最新mAP,优于COCO上所有现有的单发检测器。
1 Introduction
图2:在基于锚的分支中选择的要素级别可能不是最佳的。
对象检测是计算机视觉社区中的重要任务。它是各种下游视觉应用的前提条件,例如实例分割[12],面部分析[1,39],自动驾驶汽车[6,20]和视频分析[25,33]。由于深度卷积神经网络[16、29、13、34]和标注良好的数据集[7、23]的发展,大大提高了对象检测器的性能。
物体检测的一个挑战性问题是尺度变化。为了实现尺度不变性,最新的探测器构造了特征金字塔或多层特征塔[24、8、21、22、19、38]。特征图的多个比例级别正在并行生成预测。此外,锚框可以进一步处理比例变化[24、28]。锚定框设计用于将所有可能的实例框的连续空间离散为具有预定义位置,比例和纵横比的有限数量的框。并且实例框基于“联合上方交叉点”(IoU)重叠与锚定框匹配。当与要素金字塔集成时,通常将大锚点框与上部特征图相关联,将小锚点框与下部特征图相关联,请参见图2。这是基于启发式的,即上部特征图具有更多的语义信息,适合于检测大型特征图。实例,而较低特征的地图则具有更多细粒度的细节,适合检测小型实例[11]。集成了锚框的特征金字塔的设计在对象检测基准上获得了良好的性能[7,23,9]。
但是,这种设计有两个局限性:**1)启发式特征选择; 2)基于重叠的锚点采样。**在训练期间,每个实例始终根据IoU重叠匹配到最接近的锚框。锚框通过人类定义的规则(例如框大小)与特定级别的要素图相关联。因此,为每个实例选择的功能级别完全基于自组织启发式算法。例如,一个大小为50×50像素的汽车实例和另一个大小为60×60像素的相似汽车实例可以分配给两个不同的特征级别,而另一个40×40的汽车实例可以分配给与50×50像素相同的级别。如图所示。换句话说,锚点匹配机制本质上是启发式引导的。这导致一个主要缺陷,即用于训练每个实例的所选功能级别可能不是最佳的。
我们提出了一种简单有效的方法,称为特征选择性无锚点(FSAF)模块,以同时解决这两个限制。**我们的动机是让每个实例自由选择最佳功能级别来优化网络,因此在我们的模块中不应有锚框来限制功能选择。相反,我们以无锚的方式对实例进行编码,以学习分类和回归的参数。**总体概念如图3所示。每层要素金字塔都建立了一个无锚分支,独立于基于锚的分支。与基于锚的分支类似,它由分类子网和回归子网组成(图中未显示)。可以将一个实例分配给免锚分支的任意级别。在训练过程中,我们根据实例内容(而不只是实例框的大小)为每个实例动态选择最合适的功能级别。然后,所选级别的功能将学习检测分配的实例。推断,FSAF模块可以独立运行,也可以与基于锚的分支一起运行。我们的FSAF模块与骨干网无关,可以应用于具有特征金字塔结构的单发检测器。此外,无锚点分支的实例化和在线特征选择可以多种多样。在这项工作中,我们使FSAF模块的实现保持简单,因此与整个网络相比,其计算成本微不足道。
在COCO [23]对象检测基准上的大量实验证实了我们方法的有效性。 FSAF模块本身优于基于锚的模块,并且运行速度更快。当与基于锚的分支机构一起工作时,FSAF模块可以在各种骨干网中以较大的幅度持续改善强基准,同时引入了最低的计算成本。特别是,我们使用ResNeXt-101 [34]将RetinaNet改进了1.8%,而额外的推理延迟仅为6ms。此外,当采用多尺度测试时,我们的最终检测器可实现最先进的44.6%mAP,优于COCO上所有现有的单发检测器。
2 Related Work
图3:已插入常规基于锚点的检测方法中的FSAF模块概述。在训练过程中,通过特征选择将每个实例分配给金字塔级别,以设置监督信号。
最近的物体检测器通常使用特征金字塔或多层特征塔作为通用结构。 SSD [24]首先提出从多个特征量表预测类分数和边界框。 FPN [21]和DSSD [8]提出了使用各种规模的高级语义特征图来增强低级特征的方法。 RetinaNet [22]解决了具有焦点损失的多级密集探测器的类不平衡问题。 DetNet [19]设计了一种新颖的骨干网络,以在金字塔的上层保持高空间分辨率。但是,它们都使用预定义的锚框来编码和解码对象实例。其他作品对规模变化的处理也有所不同。朱等人[41]增强了小物体的锚设计。
He等人[14]将边界框建模为高斯分布,以改善定位。
免锚检测的想法并不新鲜。 DenseBox [15]首先提出了一个直接预测边界框的统一的端到端全卷积框架。 UnitBox [36]提出了一个交集交集(IoU)损失函数,以实现更好的信箱回归。 Zhong等人[40]提出了无锚区域建议网络,以查找各种比例,长宽比和方向的文本。最近,CornerNet [17]提出将物体边界框检测为一对角,从而获得最佳的单次检测器。 SFace [32]提出将基于锚的方法和无锚的方法相结合。但是,他们仍然采用启发式特征选择策略。
3 Feature Selective Anchor-Free Module
在本节中,我们通过展示如何将其应用于具有特征金字塔的单发检测器(例如SSD [24],DSSD [8]和RetinaNet [22])来实例化特征选择性无锚点(FSAF)模块。不失一般性,我们将FSAF模块应用于最新的RetinaNet [22],并从以下几个方面演示我们的设计:1)如何在网络中创建无锚分支(3.1); 2)如何为无锚支路产生监督信号(3.2); 3)如何为每个实例动态选择功能级别(3.3); 4)如何联合培训和测试无锚和基于锚的分支(3.4)。
3.1. Network Architecture
从网络的角度来看,我们的FSAF模块非常简单。图4说明了带有FSAF模块的RetinaNet [22]的体系结构。简而言之,**RetinaNet由骨干网(图中未显示)和两个特定于任务的子网组成。**特征金字塔是根据具有从P3到P7的级别的骨干网络构建的,其中l是金字塔级别,Pl具有输入图像的1 / 2l分辨率。为了简单起见,仅显示三个级别。金字塔的每个级别都用于检测不同比例的对象。为此,将分类子网和回归子网附加到P1。它们都是小型的全卷积网络。分类子网针对A个锚点和K个对象类别的每个空间位置预测对象的概率。回归子网预测从每个A锚点到附近实例(如果存在)的4维类不可知偏移。
在RetinaNet的顶部,我们的FSAF模块在每个金字塔级别仅引入了两个附加的转换层,如图4中的虚线特征图所示。这两个层分别负责无锚分支中的分类和回归预测。更具体地说,将带有K滤镜的3×3转换层附加到分类子网中的特征图,然后是S型函数,与基于锚的分支中的函数平行。它预测了K个对象类别在每个空间位置的对象概率。类似地,具有四个滤镜的3×3转换层将附加到回归子网中的特征图,然后是ReLU [26]函数。它负责预测以无锚方式编码的框偏移。为此,无锚和基于锚的分支以多任务样式共同工作,在每个金字塔级别共享功能。
3.2. Ground-truth and Loss
图4:带有我们FSAF模块的RetinaNet的网络架构。 FSAF模块在每个金字塔级别仅引入了两个附加的转换层(虚线特征图),从而使体系结构完全卷积。
给定一个对象实例,我们知道其类标签k和边界框坐标b = [x,y,w,h],其中(x,y)是框的中心,而w,h分别是框的宽度和高度。可以将实例分配给任意特征级别的培训。我们将投影框bl p = [xl p,yl p,wl p,hl p]定义为b在特征金字塔Pl上的投影,即bl p = b / 2l。我们还将有效框bl e = [xl e,yl e,wl e,hl e]和忽略框bl i = [xl i,yl i,wl i,hl i]定义为由常数控制的bl p的比例区域比例因子分别为?e和?,即xl e = xl p,yl e = yl p,wl e =?ewl p,hl e =?ehl p,xl i = xl p,yl i = yl p,wl i =? iwl p,hl i =?ihl p。我们将?e = 0.2和?i = 0.5设置为。图5给出了汽车实例的地面真相生成示例。
分类输出:分类输出的真实性是K个图,每个图对应一个类。该实例以三种方式影响第k个地面真实地图。首先,有效框bl eregion是正区域,由“汽车”类图中的白框所示的正区域填充,表示实例的存在。其次,忽略有效框(bl i-bl e)的忽略框是显示为灰色区域的忽略区域,这意味着该区域中的梯度不会传播回网络。第三,相邻特征级别(bl-1 i,bl + 1 i)中的忽略框也将忽略区域(如果存在)。请注意,如果两个实例的有效框在一级重叠,则较小的实例具有较高的优先级。真实地图的其余区域是由零填充的负(黑色)区域,表示没有对象。焦点损失[22]用于超参数α= 0.25和γ= 2.0的监督。图像的无锚分支的总分类损失是所有非忽略区域的焦点损失之和,并通过所有有效框区域内的像素总数归一化。
Box回归输出:回归输出的基础是与类无关的4个偏移量映射。该实例仅影响偏移图上的bl eregion。对于bl e内的每个像素位置(i,j),我们代表投影框bl pas一个4维向量dl i,j = [dl ti,j,dl li,j,dl bi,j,dl ri,j ],其中dl t,dl l,dl b,dl稀少了当前像素位置(i,j)与bl p的顶部,左侧,底部和右侧边界之间的距离。然后将跨越4个偏移图的(i,j)位置的4维向量设置为dl i,j / S,每个图对应一个维。 S是归一化常数,我们根据经验选择S = 4.0。有效框之外的位置是忽略渐变的灰色区域。 IoU损失[36]用于优化。图像的无锚分支的总回归损失是所有有效框区域上IoU损失的平均值。
图5:无锚分支的一个功能级别中实例的监督信号。我们将焦点损失用于分类,将IoU损失用于框回归。
在推断过程中,可以直接从分类和回归输出中解码预测的框。假设在每个像素位置(i,j),预测的偏移量为[i,i,j,o,i,j,obi,j,i,ori]。那么预测的距离为[S oti,j,S oli,j,S obi,j,S ori,j]。预测投影框的左上角和右下角是(i-Sˆ oti,j,j-Sˆ oli,j)和(i + Sˆ obi,j,j + Sˆ ori,j])分别。我们进一步将投影的框放大2l,以在图像平面中获得最终的框。盒子的置信度得分和类别可以由最大得分和分类输出图上位置(i,j)处的K维向量的相应类别确定。
3.3. Online Feature Selection
免锚分支的设计使我们能够使用任意金字塔等级Pl的特征来学习每个实例。为了找到最佳功能级别,我们的FSAF模块根据实例内容而不是基于基于锚的方法中实例框的大小来选择最佳的Pl。
图6:在线功能选择机制。每个实例都经过无锚分支的所有级别,以计算有效区域上的平均分类(局部)损失和回归(IoU)损失。然后,选择两个损失的总和最小的电平,以建立该实例的监视信号。
给定实例I,我们分别在Plas LI F L(l)和LI IuU(l)上定义其分类损失和框回归损失。 通过在有效盒区域bl e(即,
其中N(bl e)是bl eregion内的像素数,FL(l,i,j),IoU(l,i,j)是位置(i处的焦点损失[22]和IoU损失[36] ,j)分别在。
图6显示了我们的在线功能选择过程。首先,实例I被转发通过所有功能金字塔。然后,使用等式在所有无锚的分支中计算LI F L(l)和LI IoU(l)之和。 (1)。最后,选择产生最小损失总和的最佳金字塔等级Pl *来学习实例,即。
对于培训批次,将针对要素的相应分配实例进行更新。直觉是所选的功能当前是对实例建模的最佳方式。它的损失在特征空间中形成了一个下限。通过培训,我们进一步降低了这个下限。在推论时,我们不需要选择特征,因为最合适的特征金字塔等级自然会输出高置信度分数。
为了验证我们在线特征选择的重要性,我们还进行了传导性特征选择过程以在消融研究中进行比较(4.1)。启发式功能的选择完全取决于盒子的大小。我们从FPN检测器[21]借用了这个想法。通过以下方式将实例I分配给要素金字塔的级别Pl0:
这里224是规范的ImageNet预训练大小,而l0是应将具有w×h = 2242的实例映射到的目标级别。在这项工作中,我们选择l0 = 5,因为ResNet [13]使用第五卷积组的特征图进行最终分类。
3.4. Joint Inference and Training
当插入RetinaNet [22]时,我们的FSAF模块将与基于锚的分支一起工作,请参见图4。我们保持基于锚的分支为原始分支,所有超参数在训练和推理中均保持不变。
推论:FSAF模块仅向完全卷积的RetinaNet添加了一些卷积层,因此推论仍然像通过网络转发图像一样简单。对于无锚的分支,在将置信度分数阈值设置为0.05后,我们仅解码每个金字塔等级中最多1k得分最高的位置的盒预测。来自各个级别的这些最高预测与基于锚的分支的框预测合并在一起,然后以阈值为0.5的非最大抑制进行最终检测。
初始化:骨干网在ImageNet1k上进行了预训练[5]。我们在[22]中初始化RetinaNet中的层。对于FSAF模块中的conv层,我们使用偏差−log((1-π)/π)和填充了σ= 0.01的高斯权重来初始化分类层,其中π指定在训练开始时每个像素位置都输出客观性分数在π附近。我们在[22]之后设置π= 0.01。所有框式回归层均使用偏差b初始化,并且高斯权重填充为σ= 0.01。在所有实验中我们都使用b = 0.1。通过防止大量损失,初始化有助于在早期迭代中稳定网络学习。
优化:整个网络的损失是无锚和基于锚的分支的综合损失。让Labbe完全损失基于锚的原始RetinaNet。并让Laf clsand Laf分别计入无锚分支的总分类和回归损失。然后,总优化损失为isL = Lab +λ(Laf cls + Laf reg),其中λ控制无锚分支的权重。
在所有实验中,我们将λ设置为0.5,尽管结果对于精确值是可靠的。 整个网络使用8个GPU上的随机梯度下降(SGD)进行训练,每个GPU上有2张图像。 除非另有说明,否则所有模型都以初始学习率0.01进行90k迭代训练,在60k迭代中除以10,然后在80k迭代中除以10。 除非另有说明,否则水平图像翻转是唯一应用的数据增强。 重量衰减为0.0001,动量为0.9。
4 Experiments
我们在COCO数据集的检测轨迹上进行实验[23]。训练数据是COCO trainval35k分割的,包括来自火车的所有80k图像和来自40k valsplit的随机35k图像子集。我们对包含val剩余的5k图像的最小分割进行消融研究,分析了我们的方法。与最新方法进行比较时,我们在test-dev分组中报告了COCO AP,该分组没有公共标签,需要使用评估服务器。
4.1. Ablation Studies
对于所有消融研究,我们将800像素的图像比例用于训练和测试。我们评估了几个重要元素对探测器的贡献,包括无锚分支,在线特征选择和骨干网。结果报告在表1和2中。
无锚分支是必需的。我们首先分别使用两种特征选择方法训练两个仅具有无锚分支的检测器(表1第二和第三项)。事实证明,无锚的分支只能已经取得不错的结果。当与基于锚的分支共同优化时,无锚分支可以帮助学习实例,而这些实例很难被基于锚的分支建模,从而提高了AP得分(表1第5项)。尤其是通过在线功能选择,AP50,APS和APL分数分别提高了2.5%,1.5%和2.2%。为了找出FSAF模块可以检测到哪些类型的物体,我们在图7中显示了RetinaNet与我们的头对头比较的定性结果。显然,我们的FSAF模块更好地发现了具有挑战性的实例,例如微小且非常薄的实例锚框未完全覆盖的物体。
在线功能选择至关重要。如第3.3节所述,我们可以基于启发式选择基于锚的分支,也可以基于实例内容来选择免锚分支中的功能。事实证明,选择正确的特征来学习在检测中起着至关重要的作用。实验表明,具有较少启发式特征选择的无锚分支(等式(3))由于难以学习的参数而无法与基于锚的分支竞争。但是通过我们的在线功能选择(等式(2)),AP改善了1.2%(表1第3项与第2项),从而克服了参数缺点。此外,表1的第4和第5个条目进一步证实,我们的在线功能选择对于无锚和基于锚的分支机构协同工作至关重要。
如何选择最佳功能? 为了了解为实例选择的最佳金字塔等级,我们仅从图8中的无锚分支可视化了一些定性检测结果。类名称前的数字表示检测对象的特征等级。 事实证明,在线要素选择实际上遵循以下规则:较高级别选择较大的实例,较低级别负责较小的实例,这与基于锚的分支中的原理相同。 但是,也有很多例外,即在线要素选择选择的金字塔等级与基于锚点的分支选择不同。 在图8中,我们将这些例外标记为红色框。绿色框表示FSAF模块与基于锚的分支之间的一致性。 通过捕获这些异常,我们的FSAF模块可以使用更好的功能来检测具有挑战性的对象。
FSAF模块既强大又高效。我们还在准确性和速度方面评估骨干网络对我们的FSAF模块的影响。三个骨干网络包括ResNet-50,ResNet-101 [13]和ResNeXt-101 [34]。检测器在具有CUDA 9和CUDNN 7的单个Titan X GPU上运行,批处理大小为1。结果记录在表2中。我们发现我们的FSAF模块对于各种骨干网络都是健壮的。 FSAF模块本身已经比基于锚的RetinaNet更好,更快。在ResNeXt-101上,FSAF模块的基于AP的性能比基于锚的同类产品高1.2%,而速度却提高了68ms。当与基于锚的分支一起应用时,我们的FSAF模块将持续提供可观的改进。这也表明基于锚点的分支没有利用骨干网的全部功能。同时,我们的FSAF模块在整个网络中引入了边际计算成本,导致推理速度的损失可忽略不计。特别是,我们在ResNeXt-101上将RetinaNet的AP提高了1.8%,而额外的推理延迟只有6ms。
4.2. Comparison to State of the Art
我们对COCO测试-开发部门的最终检测器进行了评估,以与最新技术水平进行比较。我们的最终模型是带有FSAF模块的RetinaNet,即基于锚的分支加上FSAF模块。使用刻度{640,672,704,736,768,800}上的刻度抖动训练模型,并且比第4.1节中的模型长1.5倍。评估包括单比例和多比例版本,其中单比例测试使用800像素的图像比例,而多比例测试则应用测试时间增加。测试时间的增加是在超过{400,500,600,700,900,1000,1100,1200}的比例尺上进行测试,并按照Detectron [10]在每个比例尺上进行水平翻转。我们所有的结果均来自没有集成的单个模型。
表3给出了比较。借助ResNet-101,我们的检测器能够在单规模和多规模方案中实现竞争性能。插入ResNeXt-101-64x4d可以将AP进一步提高到44.6%,大大优于以前的最新单发检测器。
5 Conclusion
这项工作将启发式特征选择确定为具有特征金字塔的基于锚的单发检测器的主要限制。为了解决这个问题,我们提出了FSAF模块,该模块应用在线特征选择来训练特征金字塔中的无锚分支。它以极小的推理开销显着改善了强基准,并且性能优于最新的最新单发检测器。
总结
Feature Selective Anchor-Free Module (FSAF)
文章提出FSAF模块让每个instance自动的选择最合适的feature,在这个模块中,anchor box的大小不再决定选择哪些feature进行预测,也就是说anchor (instance) size成为了一个无关的变量,这也就是anchor-free的由来。因此,feature 选择的依据有原来的instance size变成了instance content,实现了模型自动化学习选择feature。
先来看看FSAF的结构。文章提出的FSAF以RetinaNet为主要结构,添加一个FSAF分支和原来的classification subnet、regression subnet并行,可以不改变原有结构的基础上实现完全的end-to-end training,特别是,FSAF还可以集成到其他single-stage模型中,比如SSD、DSSD等。
classification output是一个WxHxK大小的feature map,K表示物体类别数,那么在坐标为(i,j)的点上是一个长度为K的向量,表示属于每个类别的概率。分支对应的gt是图中白色区域内值为1,表示正样本,黑色区域内值为0,表示负样本,灰色区域是忽略区域不回传梯度。分支采用Focal Loss,整个classification loss是非忽略区域的focal loss之和,然后除以有效区域内像素个数之和来正则化一下。
来源:CSDN
作者:hust_0offer
链接:https://blog.csdn.net/qq_18315295/article/details/104195554