论文地址:https://arxiv.org/abs/1903.00621

代码地址(非原作者):https://github.com/xuannianz/FSAF


FSAF

摘要:

 介绍:

 相关工作:

1.网络结构

2.loss

3.在线特征选择

4.联合推理与训练

 实验:


摘要

作者提出了一种新的特征选择模块(FASF),一种简单有效的单阶段目标检测组件。它可以插入带有特征金字塔结构的单阶段检测器中。该模块解决了传统基于anchor检测带来的两个限制:(1)启发式特征选择;(2)重叠的anchor采样。基本思想是将动态特征选择应用于多级无anchor分支的训练过程。anchor-free分支与特征金字塔的每一级关联,继而允许在任意级别上以无锚点的方式进行编码和解码。在训练过程中,我们动态地将每个实例分配到最合适的特征级别。在推时,FASF模块可以基于锚的分支协同预测输出。我们实现了无锚点分支在线特征选择策略。coco数据集的结果表明,FASF模块比基于锚的模块性能更好,而且速度更快。在与RetinaNet一起工作时,实现了44.6mAp

 介绍:

目标检测是计算机视觉界的一项重要任务。应用领域:实例分割,面部识别,自动驾驶,视频检测。深度学习的发展,是目标检测有了很好的网络以及数据集。

目标检测目前一个挑战性问题:尺度的差异化。为了解决该问题,目前主流采用特征金字塔的方法。特征图的每一层都可以进行预测。此外,anchor可以进一步解决尺度变化的问题。锚点框的设计是为了将所有可能的实例框的连续空间,离散成有限数量的具有预定义位置、尺度和纵横比的框。实例框与锚点框使用IOU进行匹配度计算。与特征金字塔集成时,大的anchor和顶层特征关联,小的和底层关联。如下图。这是基于这样的启发:上面的特征映射有更多的语义信息适合于大目标的检测,而较低的特征映射有更细粒度的细节适合于检测小目标。基于anchor的特征金字塔设计在目标检测领域上取得了良好的性能。

 然而,这种设计有两个局限性:1)启发式的特征选择;2)基于重叠的anchor采样。在训练期间,根据IOU值,每个实例总是与最近的anchor框相匹配。而锚点框是通过预先定义的规则(如大小)与某一级别的特征映射相关联的。因此这种匹配方式是有启发引导的。比如(上图):50*50的汽车可能和60*60的被分到不同层次的特征图中,而40*40和50*50被分到同一层特征图中。换而言之,anchor的匹配是启发式的这就会导致目标不一定是与最佳的特征图匹配。

我们提出了FSAF模块解决这两个限制。我们的目的是让每个实例目标自由选择最佳级别的特征来优化网络,因此在我们的模块中不应该有anchor框来约束特征的选择过程。相反,我们以无锚的方式对实例进行编码,以学习用于分类和回归的参数(下图)。特征金字塔的每一层构建一个anchor-free分支,独立于anchor-based的分支。每一个anchor-free分支又包含一个分类网络和一个回归网络。实例目标可以与任意层无锚分支匹配。在训练的过程中,我们根据实例目标的内容动态地为每个实例选择最合适的特征级别,而不仅仅是实例框的大小。反过来,该目标所选的特征级别学会检测该实例。FSAF可以单独使用,也可以和基于锚点的分支一起使用。FSAF不依赖主干网,可以单独应用于具有金字塔的单阶段检测器中。无锚分支实例化化和动态特征选择可以使多样的。我们实现了FSAF模块,并且有较小的计算成本。

 在CoCO数据集上进行了大量实验,验证了该方法的有效性。FSAF模块本身的性能优于基于锚的模块,而且运行速度更快。当与基于锚的分支协同工作时,FSAF模块可以在不同的骨干网络中提升性能,同时带来较低的额外计算。特别是,我们使用ResNeXt-101改进了RetinaNet,仅增加了6ms的推理延迟,提高了1.8%。此外,我们的方法在多尺度检测实现了44.6%mAP。COCO数据集目前性能最优的单阶检测器。

 相关工作:

最近的目标检测器通常采用特征金字塔或多级特征塔作为一种常见的结构。SSD首次提出从多个尺度来预测分数和包围框。FPN和DSSD建议在在所有尺度上用高级语义特征图增强低级特征。。RetinaNet使用Focal loss解决样本不平衡问题。DetNet设计了一种新的骨干网,以提升金字塔顶层的分辨率。但是,它们都使用预定义的锚框对实例目标进行编码和解码zhu提升anchor检测小目标;He为改进定位,将边界框建模为高斯分布。

无锚检测并非是一个新方法。DenseBox首先提出了一个端到端全卷积框架,它可以直接预测包围盒。UnitBox为了更好预测回归框位置地提出IOU损失函数。zhong等人提出了无锚区域建议网络,以找到不同尺度、纵横比和方向的文本。CornerNet(2018年ECCV)提出了将回归框作为一对corners,引出了最好的单阶段检测器.SFace(2018)提出将基于锚的方法与无锚方法相结合。然而,它们仍然采用启发式的特征选举策略。

 FSAF:

在本节中,通过演示如何将它应用到带有特征金字塔的单阶段检测器中,在不失去通用性的情况下,我们将FSAF模块应用于最先进的Retina Net,并从以下几个方面演示了我们的设计:

(1)如何在网络中创建无锚分支

(2)如何生成无锚分支的监督信号

(3)如何动态地为每个实例选择特征级别

(4)如何联合训练和测试无锚和基于锚的分支

1.网络结构

上图就是FSAF应用于RetinaNet的网络结构图。RetinaNet有一个主干网和两个分支网络组成,特征金字塔是骨干网络构建的,P3-P7,其中l是金字塔级,Pl具有输入图像的1/2l分辨率。图中仅显示三层,金字塔的每一层都被用来在不同的尺度上检测物体。Pl之后连接一个分类网络和一个回归网络。分类网络预测每个位置的A个anchor及K个类别的分数值,回归网络预测每个回归框与最近实列之间的偏差。

在RetinaNet之上,我们的FSAF模块在每个金字塔级别上只引入两个额外的Conv层,如上所示的虚线特征图所示。这两个层次分别负责无锚分支的分类和回归预测。一个3*3*K的卷积层添加到分类分支的输出,后接sigmoid函数,与基于锚点分支的部分相互平行,其预测目标物在每个位置上K个类别的概率值。相似的,3*3*4的卷积层添加到回归分支的输出,与基于锚点分支的部分相呼应,其后接ReLU函数。无锚分支和基于锚的分支以多任务方式共同工作,共享每个金字塔级别的特性。

2.loss

给定一个对象实例,我们知道它的类标号k和包围盒坐标b=[x,y,w,h],其中(x,y)是盒的中心,w,h分别是盒的宽度和高度。在训练期间,可以将实例分配给任意特征级别Pl。

b的l层投影;有效区域,中心xy不变,宽高比例缩小0.2;无效区中心xy不变,宽高比例缩小0.5

下图中白色为有效区域,阴影为忽略区,黑色为距离。

分类输出 。训练目标针对分类的输出为K个值,每个值对应一个类别。实例通过三种方式影响第K个值。第一,上边提到的有效区,表是实例存在;第二,阴影区,该部分不会影响网络的反向传播;第三相邻忽略区的特征也为无效区,注意,如果两个实例的有效框在一个级别上重叠,则较小的实例具有更高的优先级。剩下的黑色区域用0填充,表示没有目标。应用于超参数α=0.25和γ=2.0的Focal loss(原作者消除样本不平衡问题)。无锚分支的总损失值是所有非忽略区域的focal loss的和,同时通过有效区域内的像素个数来进行正则化处理。

回归输出。对于回归任务分支,输出4个偏移量,每一个像素点对应了预测box的四个坐标,只不过作者取了相对偏移,即当前像素(i, j)与有效区(白色区域)的四条边的距离。该向量做了正则化处理,分别作用于四个偏移量,S为归一化常数(4.0)。超出有效区的为忽略区域,忽略该区域的梯度。回归分支优化IOU,总损失为所有有效框区域IOU的平均值。

最后从分类和回归分支的结果解码。假设对于某个位置(i,j),预测的偏移量为,则预测得到的距离为,同时预测得到的映射框的左上角及右下角的位置为,最后缩放2的l次方的房预测框(特征图为l层)。

3.在线特征选择

(在每一次参数更新的时候,需要将所有的目标分配到最优的特征层)。无锚分支的设计允许我们使用任意金字塔级别Pl的特性来学习每个实例。为了找到最优的特征级别,我们的FSAF模块根据实例内容选择最佳的pl,而不是像基于锚的方法那样选择根据实例框的大小。一个实例我们用来定义分类回归损失。它们是通过平均有效区域的FL损失和IOU损失来计算的。

 上图是一个在线特征选择的过程。首先,实例I通过特征金字塔的每一层。计算分类回归损失和,总损失最小就是该实例最好的特征层,则用该层的特征学习实例。

根据训练的批次,将更新相应分配的实例的特性层。所选的特性目前是对实例进行建模的最佳方法,其损失可以使特征空间的边界更低。我们不需要选择特征,因为最合适的特征金字塔级别自然会输出较高的置信度分数。

为了验证我们在线特征选择的重要性,我们还进行了一个启发式的特征选择过程,以便在研究中进行比较。启发式的特征选择完全取决于盒子的大小。我们借用FPN检测器的想法。在本工作中,我们选择l0=5,因为ResNet使用来自第5卷积的特征映射来进行最终的分类。

4.联合推理与训练

inference。FSAF在RetinaNet中添加了几个卷积层,所以仍然像原网络一样简单。对于基于锚点分支,我们只输出每层前1k个位置的box预测,阈值为0.05。将有锚和无锚的结果混合,经过阈值为0.5的NMS产生最终结果。

Initialization。主干网是在ImageNet1k上预先训练的。我们在RetinaNet中初始化这些层。对于FSAF模块中的conv层,我们使用偏置日志-(log(1-1π)/π)和一个用σ=0.0 1填充的高斯权重,其中π指定在训练开始时,每个像素位置的分数(π=0.01)。所有的回归层都用偏置b(b=0.1)初始化,并且用σ=0.0 1填充高斯权值。初始化有助于在早期迭代中稳定网络学习,防止了较大的损失。

Optimization。整个网络的损失是来自无锚分支和基于锚的分支的综合损失。为基于锚点的损失,无锚的分类损失和回归损失为。所以总损失为,,其中λ控制无锚分支的权重(λ=0.5)。基于SGD优化,8个GPU,每张训练2张图片,迭代90k,初始的学习率为0.01,在60k和80k步时学习率衰减10倍,权重衰减为0.0001动量为0.9。水平图像翻转是唯一应用的数据增强。

 实验:

 上图是作者与RetinaNet的对比,结果显示无锚分支更能捕捉一些小目标。(实验表明,本方法更能检测小的细长目标)。

无锚分支使用启发式特征选择方法会优于基于目标尺寸的方法;单独使用无锚分支效果提升不明显;组合无锚分支和锚框分支,能明显提升检测效果,AP由提升到37.2%。

在不同的主干网上进行了实验,结果显示:在时间损失不大的情况下确实能提高1.5%~1.8%

 作者与其他的网络进行了对比在COCO数据集。性能提升。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐