ECCV2018
总结:
文章借鉴了SPP的思想并通过MSCA(multi-scale context aggregation)模块进行特征融合从而提出PFPNet(Parallel Feature Pyramid Network)算法来提升目标检测的效果。
1.使用spp模块通过扩大网络宽度而不是增加深度来生成金字塔形特征图
2.提出msca模块,有效地结合了大不相同规模的上下文信息
3.效果好:82.3% (Pascal VOC 2007), 80.3% (PASCAL VOC 2012), 35.2% (MS-COCO),
4.速度快:a single Titan X:24fps(512*512),33fps(320*320),
特征金字塔回顾:
作者先回顾了之前的特征融合网络。(a)上方是常见的cnn网络,下面的结构则引入了特征金字塔,基于多个特征层进行预测,类似于SSD。(b)上方是近几年流行的U-net(也称为漏斗型网络),下方的结构融合不同层的特征进行预测,就是17年提出的FPN结构图。(c)是原始的空间金字塔结构,简单讲就是卷积后的特征图经过不同size的池化操作得到不同尺度的特征图,将不同尺度的特征图做融合后进行预测。(d)是文章提出的网络结构
网络结构:
Figure3是PFPNet的整体结构图。首先对于一张输入图像,先通过一个基础网络(VGG16全连接换卷积)提取特征,假设提取到的特征通道数是D,基于提取到的特征通过SPP网络得到不同尺度的特征图(记为高维特征b),用N表示尺度数量(图中N=3),得到的特征图通道数用CH表示,CH等于D;然后通过一个通道缩减操作bottleneck将(b)中的特征图的通道缩减得到低维特征(对应c),缩减后的通道数用CL表示,公式是CL=D/(N-1),(Figure3中(c)的输出特征通道数应该是2,而不是图中显示的1);然后通过MSCA操作得到融合后的特征图d,得到的特征通道数是Cp;最后基于融合后的多个特征图进行预测(每个特征图经过简单的预测网络(3*3conv)回归预测,非极大抑制得到最终结果)。
Figure4是MSCA模块的结构示意图。MSCA主要是基于特征通道的concat操作,但是输入特征有些不同。比如Figure4在得到P1这个融合特征时,是用fH(1)、下采样(双线性差值)后的fL(0)、上采样(非重叠平均池化)后的fL(2)进行concat后得到的。为什么不是用fL(1)而是用fH(1),因为在作者看来相同尺度的特征信息要足够多,而FH部分得到的特征是未经过通道缩减的,因此在得到某一个尺度的预测层特征时,被融合的对应尺度特征都是采用FH部分的输出特征,而不是FL部分的输出特征。相比之下,不同尺度的待融合特征采用FL部分的输出特征,相当于补充信息。因此concat后的特征通道数中有(N-1)*(D/(N-1))=D个是FL的输出,有D(等于CH)个是FH的输出,相当于各占一半,这也是前面介绍的为什么FL的输出特征通道数用D/(N-1)这个公式的原因。作者尝试过将CL=2D/N,全由FL进行concat操作得到融合特征,但是参数量增多且性能下降,这部分的实验结果没有展示出来,所以对于用fH的特征做融合对效果提升有多大就不得而知了。模块中的Convs也是一个瓶颈结构(bottleneck)。总的来说MSCA模块就是一个特征融合模块,作者期望通过concat操作最大程度地保存提取到的特征信息。
损失函数:
文章有两个不同的anchor确定方式,由此有两种对应的损失函数
一种是用SSD的anchor,此时loss记为PFPNet-S:;第二种使用ARM(anchor refinement module)模块的anchor,此时loss记为PFPNet-R:
超参数的选取:
文中有两个值需要人为设置,一个是金字塔的层数N,另一个是低维特征通道数CL。(其实这里有个问题,CL=D/N这不是确定的吗?为什么还可以调整?)作者根据取值不同做了实验。训练集为VOC07+VOC12的训练集,测试集为VOC07的测试集,取IOU为0.5,训练110K代,初始学习率10-3,在80K和100K衰减10倍。可以看到最优取值N=4,CL=256。
实验结果:
Table2为不同模块对模型的影响,说明了模块的有效性。
其中,PFPNet-S512说明anchor用SSD的方式,图片大小512*512;-R说明anchor使用用ARM模块。
另外:文中有个总结说得特别好,那就是对于目标检测任务而言,真正有用的特征一定具备这3个特点:1、特征要包含目标的细节信息。2、特征要通过足够深的网络提取得到。3、特征要包含目标的语义信息。
原文地址:https://www.cnblogs.com/SuperLab/p/9906040.html