针对小目标的检测有提升的文章。 未完待续~
FPN是一种多尺度的目标检测算法。大多数目标检测算法都是采用顶层特征来做预测的,但是我们知道:低层的特征语义信息较少,但是位置信息丰富;高层的特征语义信息丰富,位置信息粗略。虽然也有些多尺度特征融合的方法,但是一般采用融合后的特征做预测,但是FPN是在不同特征层独立进行预测的。
4种利用特征的形式:
(a)图像金字塔:将图像做成不同的scale,不同scale的图像生成对应的不同scale的特征。缺点在于时间成本高。有些算法会在测试时候采用图像金字塔。
(b)像SPP net,Fast RCNN,Faster RCNN是采用这种方式,即仅采用网络最后一层的特征。
(c)像SSD(Single Shot Detector)采用这种多尺度特征融合的方式,没有上采样过程,即从网络不同层抽取不同尺度的特征做预测,这种方式不会增加额外的计算量。作者认为SSD算法中没有用到足够低层的特征(在SSD中,最低层的特征是VGG网络的conv4_3),而在作者看来足够低层的特征对于检测小物体是很有帮助的。
==(d)==本文作者是采用这种方式,顶层特征通过上采样和低层特征做融合,而且每层都是独立预测的。
如图一个带有skip connection的网络结构在预测的时候是在finest level(自顶向下的最后一层)进行的,简单讲就是经过多次上采样并融合特征到最后一步,拿最后一步生成的特征做预测。
下面一个网络结构和上面的类似,区别在于预测是在每一层中独立进行的。
作者的主网络采用ResNet。
算法结构分为三部分:
自顶向下:采用上采样(upsampling)进行,而横向连接则是将上采样的结果和自底向上生成的相同大小的feature map进行融合(merge)。在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应(aliasing effect)。并假设生成的feature map结果是P2,P3,P4,P5,和原来自底向上的卷积结果C2,C3,C4,C5一一对应。
作者一方面将FPN放在RPN网络中用于生成proposal,原来的RPN网络是以主网络的某个卷积层输出的feature map作为输入,简单讲就是只用这一个尺度的feature map。但是现在要将FPN嵌在RPN网络中,生成不同尺度特征并融合作为RPN网络的输入。在每一个scale层,都定义了不同大小的anchor,对于P2,P3,P4,P5,P6这些层,定义anchor的大小为322,642,1282,2562,512^2,另外每个scale层都有3个长宽对比度:1:2,1:1,2:1。所以整个特征金字塔有15种anchor。
正负样本的界定和Faster RCNN差不多:如果某个anchor和一个给定的ground truth有最高的IOU或者和任意一个Ground truth的IOU都大于0.7,则是正样本。如果一个anchor和任意一个ground truth的IOU都小于0.3,则为负样本。
看看加入FPN的RPN网络的有效性,如下表Table1。网络这些结果都是基于ResNet-50。评价标准采用AR,AR表示Average Recall,AR右上角的100表示每张图像有100个anchor,AR的右下角s,m,l表示COCO数据集中object的大小分别是小,中,大。feature列的大括号{}表示每层独立预测。
另一方面将FPN用于Fast R-CNN的检测部分。除了(a)以外,分类层和卷积层之前添加了2个1024维的全连接层。细节地方可以等代码出来后再研究。
实验结果如下表Table2,这里是测试Fast R-CNN的检测效果,所以proposal是固定的(采用Table1(c)的做法)。与Table1的比较类似,
博主个人认为要针对具体问题来看待,像上面在RPN网络中,可能(f)这种方式不大好,但是在Fast RCNN中就没那么明显。
在这里插入图片描述
同理,将FPN用于Faster RCNN的实验结果如下表Table3。
Table4是和近几年在COCO比赛上排名靠前的算法的对比。注意到算法在小物体检测上的提升是比较明显的。
另外作者强调这些实验并没有采用其他的提升方法(比如增加数据集,迭代回归,hard negative mining),因此能达到这样的结果实属不易。
作者提出的FPN(Feature Pyramid Network)算法同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的,这和常规的特征融合方式不同。
论文地址
顾名思义,AugFPN就是在经典FPN结构的基础上做了改进。FPN网络的最大贡献就是把多尺度特征金字塔网络引入到了Faster RCNN等检测网络中,从而有效的提升了网络的检测性能
经典的FPN网络通过利用多尺度特征学习大大提升了检测网络的检测性能,然而这种设计本身背后就存在一些缺陷,使得多尺度的特征不能被网络完全的利用起来。
本文通过提出一种新的特征金字塔网络结构AugFPN,可以有效的克服这些缺陷。
AugFPN的创新之处在于三个组成成分,分别是:
至于这三个模块是如何克服FPN的缺陷的,下文会有详细的分析。最后就是使用了AugFPN,无论是在大的backbone,还是小的backbone,是one-stage检测,还是two-stage检测网络上,都在coco数据集上取得了明显的涨点。
FPN的三个缺陷也正好对应着这三个阶段:
1. 特征混合之前
我们知道,FPN在特征混合之前,backbone的不同stage学习到的特征需要先经过11卷积进行一个降维,降到通道数相同才能进行特征相加。然而不同stage学习到的特征感受野是不一样的,包含的语义信息也不同。把两个语义信息差距较大的特征直接相加,势必会减弱多尺度特征的表达能力
简言之:特征求和前不同层次特征之间的语义差异
2. 自顶向下的特征融合
自顶向下的特征融合过程就是将顶层的高级特征和底层的低级特征相融合的过程,这样虽然底层的特征得到了来自顶层的高级特征的加强,然而由于**顶层的特征经过11降维,势必会造成信息损失**。
简言之:金字塔顶层层次特征的信息丢失
3. 特征混合之后
我们知道,FPN中每个候选区域(ROI)的特征都是根据proposal的尺度来决定相应的特征图从哪一层选择,然而那些忽略的层也是包含着丰富信息的,它们对最终的分类和回归结果也有着影响。直接忽略了其它层的特征势必会影响到最终的检测结果。
简言之:RoIs的启发式分配策略
针对FPN中存在的这三个缺陷,这篇论文依次提出三个结构用于解决这三个缺陷。
本文先分析了FPN的三点缺陷,然后针对这三点缺陷依次提出三种解决策略。
目前最先进的卷积结构用于目标检测是手工设计的。
在这里,我们的目标是一个更好的学习可扩展特征金字塔结构,用于目标检测。在一个覆盖所有交叉尺度连接的可扩展搜索空间中,采用神经网络结构搜索,发现了一种新的特征金字塔结构。架构名为NAS-FPN,由自顶向下和自下而上的连接组合而成,可以跨范围地融合特性。
为了发现一个更好的FPN架构,作者充分利用了神经网络搜索技术[Neural architecture search with rein- forcement learning.],使用强化学习训练了一个控制器来在给定的搜索空间中选择最好的模型结构。控制器使用在搜索空间内子模型的准确率来作为更新参数的反馈信号(reward signal)。因此,通过这样的试错,控制器会学到越来越好的结构,搜索空间在架构成功搜索的过程中起到了很重要的作用。对于FPN的可拓展性,在搜索的过程中,作者强制让FPN重复N次然后concatenation到一起形成一个大的架构。
一句话解释:FPN就是用来特征融合的层,之前都是手工设计,现在尝试神经网络搜索设计!其实就是优化FPN。
NAS-FPN使用强化学习的方式对FPN网络自动搜索,在coco数据集上得到了最好的FPN结果。可以理解为连连看,然后连出一个最好的。如下图:a图为原始的FPN, 好看整齐。然后在一步一步搜索的reward下,结构组件变化。由b—>f变为最终的结果。虽然不好看。