• 周六. 7 月 27th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

AI大视觉(十六) | SPP(空间金字塔池化)

admin

11 月 28, 2021

  本文来自公众号“每日一醒”

SPP

对于一个CNN模型,可以将其分为两个部分:

前面包含卷积层、激活函数层、池化层的特征提取网络,下称CNN_Pre,

后面的全连接网络,下称CNN_Post。

许多CNN模型都对输入的图片大小有要求,实际上CNN_Pre对输入的图片没有要求,可以简单认为其将图片缩小了固定的倍数,而CNN_Post对输入的维度有要求。

SPP:空间金字塔池化,无论CNN_Pre输出的feature maps尺寸是怎样,都能输出固定的维度传给CNN_Post。

SPP的本质就是多层maxpool,只不过为了对于不同尺寸大小 a*a 的featur map 生成固定大小 n*n 的的输出。

那么 pool 的滑窗win大小,以及步长str都要作自适应的调整:

win=ceil(a/n)

str=floor(a/n)

ceil、floor分别表示上取整、下取整。

然后多个不同固定输出尺寸的 pool组合在一起就构成了SPP Layer。

通俗的讲,SPP就相当于标准通道层,不管任何大小的图像,都用一套标准的pool对图像进行池化,最后组合成一列相同大小的特征,作为全连接层的输入,这一组相同大小的特征是固定的,可以提前进行计算。

SPP优点:

(1)对于不同尺寸的CNN_Pre输出能够输出固定大小的向量。

(2)可以提取不同尺寸的空间特征信息,可以提升模型对于空间布局和物体变性的鲁棒性。

(3)可以避免将图片resize、crop成固定大小输入模型的弊端。

Yolo v3中的SPP

spp模块在yolov3的作用是多重感受野融合。

yolo v3基础网络:

yolov3-SPP网络:

借鉴了SPP-Net中的SPP模块,实现了不同尺度的特征融合。

和YOLOV3结构相比,在第一个预测特征层之前拆开了Convlutioanal Set,添加了SPP模块。

通过DarkNet输出的特征图大小是16*16*1024, 由于三个卷积层的步距为1,特征图的高宽不发生变化,通过三个卷积层以后,特征图的大小变为16*16*512,

通过SPP有四个分支,将其拼接维度扩大四倍->16*16*2048。

相对于普通版本的YOLOv3,SPP版在本在第五、六层卷积之间增加了一个SPP模块,这个模块主要是由不同的池化操作组成。

检测头前面的第5和第6卷积层之间集成SPP模块来获得YOLOv3-SPP,在Feature Map经过SPP module池化后的特征图重新cat起来传到下一层侦测网络中。

所以说,YOLOv3-SPP版本实际上只是增加了SPP 模块,该模块借鉴了空间金字塔的思想,通过SPP模块实现了局部特征和全局特征融合,丰富了特征图的表达能力,有利于待检测图像中目标大小差异较大的情况,所以对检测的精度上有了很大的提升。

Yolo v4中的SPP

SPP结构参杂在对CSPdarknet53的最后一个特征层的卷积里,在对CSPdarknet53的最后一个特征层进行三次DarknetConv2D_BN_Leaky卷积后,分别利用四个不同尺度的最大池化进行处理,最大池化的池化核大小分别为13×13、9×9、5×5、1×1(1×1即无处理)。

SPP能够极大地增加感受野,分离出最显著的上下文特征。

总结

SPP可以对于不同尺寸的图片输出固定大小的向量。

SPP可以提取不同尺寸的空间特征信息,可以提升模型对于空间布局和物体变性的鲁棒性。

 ——————

浅谈则止,细致入微AI大道理

扫描下方“每日一醒”,选择“关注”公众号

—————————————————————

     

—————————————————————

投稿吧   | 留言吧


萍水相逢逢萍水,浮萍之水水浮萍!

发表回复