SPP(spatial pyramid pooling) 空间金字塔池化

 (1)SPP层能达到什么样的效果?

由于全连接层对数据大小的输入是由要求的,比如要求是256*1才能输入到全连接层里面,那你288*1的特称图就不能输入到全连接层了。

SPP层能达到的效果是:不管你的特征图是size多大的(随便来一个size大小都可以),只要输入到SPP层里面,出来的特征图都是固定的、特定的size,比如就是固定的256*1,不管你输入特征图是多少,从SPP层里出来,最后都是256*1

(2)假设你输入特征图是M*M大小,想要得到一个N*N大小的输出特征图,需要size多大的池化核以多长的步长stride来对输入特征图做padding?

根据你输入的特征图的size和期望输出的特征图的size,来确定池化的window size和stride步长

比如:你输入一个C*M*M(其中C为通道数)的特征图,想要得到一个C*N*N的特征图

那么就可以求出:window size=M/N(向上取整),stride=M/N(向下取整)

(3)SPP就是将一个输入特征图得到多个大小不一样的输出特征图,然后将这些特征图进行flatten(铺平,展成一维数组),然后这些一维数组再进行拼接(concatenate)最后就可以将拼接得到的特征图送到FC(全连接层)去进行分类

下面的图里面就是一个输入特征图分别得到一个4*4的输出特征图,一个2*2特征图以及一个1*1特征图(通道数都为256),展平,拼接后得到256(16+4+1)*1大小的特征图不管你输入特征图size是多少,都会得到一个4*4的输出特征图,一个2*2特征图以及一个1*1特征图

SPP(spatial pyramid pooling) 空间金字塔池化_第1张图片

(4)SPP还可以和空洞卷积相结合,得到ASPP(atrous spatial pyramid pooling)

借鉴SPP金字塔池化的思想,用不同膨胀率的卷积核作卷积,一个输入特征图也可以得到几个不同的输出特征图(如下图:分别采用1*1卷积核卷积,3*3卷积核膨胀率dilation rate=6卷积,3*3卷积核膨胀率dilation rate=12卷积,3*3卷积核膨胀率dilation rate=18卷积,再将得到的四个结果进行concat拼接)

SPP(spatial pyramid pooling) 空间金字塔池化_第2张图片SPP(spatial pyramid pooling) 空间金字塔池化_第3张图片

 

总结:一个输入特征图,得到几个固定大小(但大小不一样)的输出的特征图 ,自上而下从小到大摆放,就像一个上小下大的金字塔,所以叫金字塔池化。

SPP(spatial pyramid pooling) 空间金字塔池化_第4张图片

你可能感兴趣的:(深度学习,cnn,计算机视觉)