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

本文来自公众号“AI大道理”。

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。


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卷积后,分别利用四个不同尺度的最大池化进行处理,最大池化的池化核大小分别为13x13、9x9、5x5、1x1(1x1即无处理)。

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

总结

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

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

 ——————

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

扫描下方“AI大道理”,选择“关注”公众号

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

     

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

投稿吧   | 留言吧

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值