阅读论文(5)SPPNet:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

arxiv:1406.4729

初读

传统CNN要求固定输入图片的大小,因此若输入图片不符合要求,需要对输入的图片进行大小变换,包括剪裁和长宽变形,这样的处理有可能会使得模型的性能下降。提出空间金字塔池化层(spatial pyramid polling),可以实现直接输入任意大小图片,通过SPP输出同一维度的特征。

该项技术不仅可以使得图像分类的各种模型的性能提升,也对目标检测有帮助。

再读

为什么对图片进行剪裁和宽高比变形会影响模型准确度?

  • 剪裁:损失了原始图片中的一些内容

  • 变形:使原始图片发生了扭曲

什么是SPP layer?

image-20230210093727736

SPP layer为什么可行?

CNN整体上来说包括两大部分,卷积层提取特征,然后将特征送入全连接层,输出分类结果。对于卷积层来说,通过卷积核与滑动窗口提取特征,这一部分并不需要固定的输入图片大小。真正需要固定输入数据大小的是全连接层,需要根据网络模型结构为全连接层提供同一大小的输入特征。SPP layer的出发点是,全连接层在网络模型的较深层,因此不必在卷积层输入的时候就要求固定大小的图片,可以在最后一个卷积层输出时进行操作,使得对于全连接层的输入保持固定小大的数据即可。

其实SPP layer在CNN出现之前已经被经常在分类和识别竞赛中使用了,并且地位还非常重要,这篇论文其实就是将之前的技术和现在的CNN结合了起来。

论文对目标检测的贡献

将SPP layer应用在R-CNN上,相对于R-CNN对每个候选框送入CNN进行特征提取,相当于一个图片需要多次进行卷积草族谱,论文只将原始图片做1次卷积操作,在特征图上选候选框,大大减少了时间开销。比R-CNN快100倍。

SPP层的原理

image-20230210101803024

最后一层卷积层输出图像大小不固定,通道数为256,也就是说经过卷积提取特征之后输出的特征图为:HxWx256,其中H和W是可变的。SPP要做的事就是对特征图中每一个通道的图片划分3个做max pooling,然后再拼接起来作为全连接层的输入。

  • 第1个:对整个图做max pooling,得出1个最大值,特征图256个通道,即为1x256个值
  • 第2个:将整个图划分为4个部分,每个部分做max pooling,得出4x256个值
  • 第3个:将整个图划分为16个部分,得出16x256个值

将其拼接得到1x256 + 4x256 + 16x256 = 5376的向量,作为全连接层输入

posted @ 2023-02-10 10:25  dctwan  阅读(17)  评论(0编辑  收藏  举报