SPP(spatial pyramid pooling)
在spp出来之前,所有神经网络都是要输入固定尺寸的图片,比如经常遇到的224×224,图片输入网络前都要resize到224×224,导致图片变形,其中的信息也变形了,从而限制了识别精度。而SPP和ASPP就是为了解决这个问题,它可以让网络输入原图而不必resize。空间池化层实际就是一种自适应的层,这样无论你的输入是什么尺寸,输出都是固定的(21xchannel)
SPP的显著特点是:
- 不管输入尺寸大小,SPP 可以产生固定尺寸的输出
- 使用多个不同大小的pooling窗口
- SPP 可以使用同一图像不同尺寸(scale)作为输入, 得到同样长度的池化特征。
ROI Pooling是针对RoIs的Pooling,其特点是输入特征图尺寸不固定,但是输出特征图尺寸固定。ROI Pooling的思想来自于SPPNet中的Spatial Pyramid Pooling,在Fast RCNN中使用时,将SPPNet中多尺度的池化简化了为单尺度。
ASPP(Atrous spatial pyramid pooling)
在介绍ASPP之前,首先要介绍Atrous Convolution(空洞卷积),它是一种增加感受野的方法。空洞卷积是是为了解决基于FCN思想的语义分割中,输出图像的size要求和输入图像的size一致而需要upsample,但由于FCN中使用pooling操作来增大感受野同时降低分辨率,导致upsample无法还原由于pooling导致的一些细节信息的损失的问题而提出的。为了减小这种损失,自然需要移除pooling层,因此空洞卷积应运而生。
空洞卷积从字面上很好理解,是在标准的卷积中注入空洞,以此来增加感受野,相比原来的正常卷积,空洞卷积多了一个称之为 dilation rate 的参数,指的是kernel的间隔数量(一般的卷积 dilation rate=1)。
- rate=1的空洞卷积,卷积核的感受野为3×3,其实就是普通的卷积。
- rate=2的空洞卷积,卷积核的感受野为7x7
- rate=4的空洞卷积,卷积核的感受野为15x15
空洞卷积的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。
PPM(Pyramid Pooling Module)
PPM是PSPNet中提出的一个模块,PSPNET是用于语义分割的一个网络。
现在大多数先进的语义分割框架大多数基于FCN,FCN不能有效的处理场景之间的关系和全局信息。
一般来说网络越深感受野越大(resceptive field),但是理论上的感受野和实际网络中的感受野还是有差距的(实际的感受野小于理论的感受野),这使得网络无法有效的融合全局特征信息,作者提出的PPM就解决了这个问题。
GAP(Global Average Pooling,全局平均池化)能够有效的融合全局上下文信息,但是其对信息的融合和提取能力有限,而且简单的使用GAP将信息压缩为一个通道很容易损失很多有用的信息,因此将不同感受野的特征和子区域的特征融合可以增强特征表征能力。
FPN(Feature Pyramid Networks for Object Detection)
FPN通常用在 object detection 网络中,通常低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。FPN 即是对两者进行了融合,同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的,这和常规的特征融合方式不同。
多尺度检测在目标检测中变得越来越重要,对小目标的检测尤其如此。现在主流的目标检测方法很多都用到了多尺度的方法,包括最新的yolo v3。Feature Pyramid Network (FPN)则是一种精心设计的多尺度检测方法,下面就开始简要介绍FPN。
FPN结构中包括自下而上,自上而下和横向连接三个部分,如下图所示。这种结构可以将各个层级的特征进行融合,使其同时具有强语义信息和强空间信息,在特征学习中算是一把利器了。