深度学习-图像识别FPN(Feature Pyramid Networks)

一、FPN

卷积网络的一个重要特征:深层网络容易响应语义特征,浅层网络容易响应图像特征。但是到了物体检测领域,这个特征便成了一个重要的问题,高层网络虽然能响应语义特征,但是由于Feature Map的尺寸较小,含有的几何信息并不多,不利于物体检测;浅层网络虽然包含比较多的几何信息,但是图像的语义特征并不多,不利于图像的分类,这个问题在小尺寸物体检测上更为显著,这也就是为什么物体检测算法普遍对小物体检测效果不好的最重要原因之一。很自然地可以想到,使用合并了的深层和浅层特征来同时满足分类和检测的需求。
提出了特征金字塔的网络结构,能在增加极小的计算量的情况下,处理好物体检测中的多尺度变化问题。

在这里插入图片描述

  • 从上图a是一个特征图像金字塔结构,把图片缩放到不同的尺度,每个尺度的图片经过算法进行预测,生成多少个不同的尺度,就要进行多少次预测,效率就会很低。
  • 图b是faster RCNN采用的方式,将图片通过backbone得到最后的特征图,再进行预测。针对小目标的检测并不是很好。
  • 图c跟SSD算法用的类似,一张图片输入给backbone,得到的不同的特征图上分别进行预测。
  • 图d就是FPN结构,在不同特征图上进行融合,再进行预测。

二、FPN的整体架构

在这里插入图片描述
层1、2、3对应的支路就是bottom-up网络,就是所谓的预训练网络,文中使用了ResNet网络,每一级往上缩小2倍;由于整个流向是自底向上的,所以我们叫它bottom-up;层4、5、6对应的支路就是所谓的top-down网络,是FPN的核心部分,名字的来由也很简单。

例如,下图是fasterRCNN的网络结构,左列ResNet用每级最后一个Residual Block的输出,记为{C1,C2,C3,C4,C5}。

  • FPN用2~5级参与预测(因为第一级的语义还是太低了),{C2,C3,C4,C5}表示conv2,conv3,conv4和conv5的输出层(最后一个残差block层)作为FPN的特征,分别对应于输入图片的下采样倍数为{4,8,16,32}。
    在这里插入图片描述

  • Top-down pathway and lateral connections
    自顶向下的过程通过上采样(up-sampling)的方式将顶层的小特征图。放大到上一个stage的特征图一样的大小。

    上采样的方法是最近邻插值法:
    在这里插入图片描述
    对于使用最近邻插值法的个人思考:使用最近邻值插值法,可以在上采样的过程中最大程度地保留特征图的语义信息(有利于分类),从而与bottom-up 过程中相应的具有丰富的空间信息(高分辨率,有利于定位)的特征图进行融合,从而得到既有良好的空间信息又有较强烈的语义信息的特征图。

在这里插入图片描述
具体过程为:C5层先经过1 x 1卷积,改变特征图的通道数(文章中设置d=256,与Faster R-CNN中RPN层的维数相同便于分类与回归)。M5通过上采样,再加上(特征图中每一个相同位置元素直接相加)C4经过1 x 1卷积后的特征图,得到M4。这个过程再做两次,分别得到M3,M2。M层特征图再经过3 x 3卷积(减轻最近邻近插值带来的混叠影响,周围的数都相同),得到最终的P2,P3,P4,P5层特征。

另外,和传统的图像金字塔方式一样,所有M层的通道数都设计成一样的,本文都用d=256。

在这里插入图片描述
上图也是在描述FPN网络结构,在p5的基础上进行下采样得到p6,p6只用于RPN部分

在这里插入图片描述

FPN应用于RPN层

Faster RCNN中的RPN是通过最后一层的特征来做的。最后一层的特征经过3x3卷积,得到256个channel的卷积层,再分别经过两个1x1卷积得到类别得分和边框回归结果。这里将特征层之后的RPN子网络称之为网络头部(network head)。对于特征层上的每一个点,作者用anchor的方式预设了9个框。这些框本身包含不同的尺度和不同的长款比例。

FPN针对RPN的改进是将网络头部应用到每一个P层。由于每个P层相对于原始图片具有不同的尺度信息,因此作者将原始RPN中的尺度信息分离,让每个P层只处理单一的尺度信息。具体的,对{322、642、1282、2562、512^2}这五种尺度的anchor,分别对应到{P2、P3、P4、P5、P6}这五个特征层上。每个特征层都处理1:1、1:2、2:1三种长宽比例的候选框。P6是专门为了RPN网络而设计的,用来处理512大小的候选框。它由P5经过下采样得到。

四、FPN总结

  • FPN构架了一个可以进行端到端训练的特征金字塔
  • 通过CNN网络的层次结构高效的进行强特征计算
  • 通过结合bootom-up和top-down方式获取较强的语义特征,提高目标检测和实例分割在多个数据集上面的性能表现
  • FPN这种架构可以灵活地应用在不同地任务上,包括目标检测、实例分割等;
  • Faster R-CNN+FPN细节图
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48167570/article/details/120867724