首页 > 编程知识 正文

fv公式,steger算法

时间:2023-05-04 22:25:08 阅读:161132 作者:139

这篇论文是CVPR2017年的文章,采用特征金字塔做目标检测,有许多亮点,特来分享。

论文: featurepyramidnetworksforobjectdetection

论文链接: https://arxiv.org/abs/1612.03144

论文概述:作者提出的多尺度对象检测算法: FPN(featurepyramidnetworks )。 原本object detection算法大多只使用顶级特征进行预测,但低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。另外虽然也有些算法采用多尺度特征融合的方式,但是一般是采用融合后的特征做预测,而本文不一样的地方在于预测是在不同特征层独立进行的。

如果是代码的话,过一段时间应该会变成开源的。

论文详解:下图FIg1显示了利用4个特征的形式:

) a )图像金字塔,即图像为不同的scale,根据不同的scale的图像产生对应的不同的scale特征。 这种方法的缺点是时间成本增加。 一些算法在测试时采用图像金字塔。

) b )如SPP net、Fast RCNN、Faster RCNN那样,是只采用网络最下层特征的方式。

) c )像SSD(singleshotdetector )这样融合多尺度特征的方式,没有上采样的过程,即通过从网络的不同层提取不同尺度的特征进行预测,增加多馀的计算量作者认为,SSD算法没有使用足够的低层特征。 (在SSD中,最低层的特征是VGG网络的conv4_3),但在作者看来足够的低层特征有助于检测小物体。

(d )本文作者采用这种方式,顶层特征通过上采样和低层特征融合,而且每层独立预测。

如下图Fig2所示。上面一个带有skip connection的网络结构在预测的时候是在finest level(自顶向下的最后一层)进行的,简单讲就是经过多次上采样并融合特征到最后一步,拿最后一步生成的特征做预测以下网络结构与上面的类似:区别在于预测是在每一层中独立进行的后有这两种结构的实验结果对比,非常有趣。 因为至今为止只看到过使用第一个特征进行融合的方式。

作者的主网络采用ResNet。

作者算法的大致结构是在Fig3: 一个自底向上的线路,一个自顶向下的线路,横向连接(lateral connection)图中放大的区域为横向连接。 其中1*1的卷积核的主要作用是减少卷积核的数量,即减少feature map的数量,feature map的大小不会改变。

自底向上其实是网络的积极过程。 在向前过程中,feature map的大小在通过一个层时会改变,而在通过其他层时不会改变。 作者将不会调整feature map大小的层组合到一个stage中。 因此,每次提取每个stage的最后一层时都会输出,因此可以配置特征金字塔。

自顶向下的过程是上采样的(upsampling ),其中横向级联合并了上采样的结果和自下而上产生的相同大小的feature map。 融合后,再用3*3卷积对每个融合结果进行卷积,达到消除上采样混叠效应的目的。 然后,假设生成的feature map的结果为P2、P3、P4、P5,与原自下而上的卷积结果C2、C3、C4、C5一一对应。

贴上ResNet的结构图。 这里作者采用的是Conv2、CONV3、CONV4和CONV5的输出。 因此,类似Conv2可以看作是stage。

作者一方面将FPN放在RPN网络中用于生成proposal,原RPN网络以从主网络的某个卷积层输出的feature map为输入,简单地说,只使用这一个尺度的feature map。 但目前已将FPN嵌入RPN网络,生成不同尺度的特征,融合作为RPN网络的输入。 在每个scale层中定义了不同大小的anchor,对于P2、P3、P4、P5、P6这些层,anchor的大小为32^2、64^2、128^2、256^2、512

正负样本的界定和Faster RCNN差不多:如果某个anchor和某个ground truth有最高的IOU,或者与某个ground truth的IOU大于0.7,则为正样本。 如果一个anchor和任意一个ground truth的IOU小于0.3,则为负采样。

加入FPN的RPN网络的有效性

g>,如下表Table1。网络这些结果都是基于ResNet-50。评价标准采用AR,AR表示Average Recall,AR右上角的100表示每张图像有100个anchor,AR的右下角s,m,l表示COCO数据集中object的大小分别是小,中,大。feature列的大括号{}表示每层独立预测。

从(a)(b)(c)的对比可以看出FRN的作用确实很明显。另外(a)和(b)的对比可以看出高层特征并非比低一层的特征有效。
(d)表示只有横向连接,而没有自顶向下的过程,也就是仅仅对自底向上(bottom-up)的每一层结果做一个1*1的横向连接和3*3的卷积得到最终的结果,有点像Fig1的(b)从feature列可以看出预测还是分层独立的。作者推测(d)的结果并不好的原因在于在自底向上的不同层之间的semantic gaps比较大。
(e)表示有自顶向下的过程,但是没有横向连接,即向下过程没有融合原来的特征。这样效果也不好的原因在于目标的location特征在经过多次降采样和上采样过程后变得更加不准确。
(f)采用finest level层做预测(参考Fig2的上面那个结构),即经过多次特征上采样和融合到最后一步生成的特征用于预测,主要是证明金字塔分层独立预测的表达能力。显然finest level的效果不如FPN好,原因在于PRN网络是一个窗口大小固定的滑动窗口检测器,因此在金字塔的不同层滑动可以增加其对尺度变化的鲁棒性。另外(f)有更多的anchor,说明增加anchor的数量并不能有效提高准确率。

另一方面将FPN用于Fast R-CNN的检测部分。除了(a)以外,分类层和卷积层之前添加了2个1024维的全连接层。细节地方可以等代码出来后再研究。
实验结果如下表Table2,这里是测试Fast R-CNN的检测效果,所以proposal是固定的(采用Table1(c)的做法)。与Table1的比较类似,(a)(b)(c)的对比证明在基于区域的目标卷积问题中,特征金字塔比单尺度特征更有效。(c)(f)的差距很小,作者认为原因是ROI pooling对于region的尺度并不敏感。因此并不能一概认为(f)这种特征融合的方式不好,博主个人认为要针对具体问题来看待,像上面在RPN网络中,可能(f)这种方式不大好,但是在Fast RCNN中就没那么明显。

同理,将FPN用于Faster RCNN的实验结果如下表Table3。

下表Table4是和近几年在COCO比赛上排名靠前的算法的对比。注意到本文算法在小物体检测上的提升是比较明显的。

另外作者强调这些实验并没有采用其他的提升方法(比如增加数据集,迭代回归,hard negative mining),因此能达到这样的结果实属不易。

总结

作者提出的FPN(Feature Pyramid Network)算法同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的,这和常规的特征融合方式不同。
期待代码

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。