目标检测_SPP

解决的问题
1、训练和测试常见的CNN网络时,要求输入的图像有一个固定的大小(网络前面的卷积层不要求输入图像的大小,后面的全连接层的输入特征数是固定的,需要固定的输入),比如要求图像的输入为224*224
* 当尺寸大小不同的图像输入到相同的多层卷积网络中,得到的feature map大小是不同的,数量是相同(相同的filters)。
* 对一个一个固定的CNN,全连接层的输入是一个固定的数值(这个数值提前设置好的),这就需要使用SPP插入多层卷积和全连接层中间。
解决的方法
Spatial Pyramid Pooling(SPP)结构来解决这种问题,将这种结构放在卷积层与全连接层中间,在多个测试中取得了不错的效果。

** 具体的做法 **
使用位置:在最后一个卷积层之后的池化层替代原池化层, 从而形成固定长度的表示,进而使用FC进一步处理
https://zhuanlan.zhihu.com/p/39717526
SPP的核心在于使用多个不同尺寸sliding window pooling(上图中的蓝色44、青色22、灰色1*1窗口)对上层(卷积层)获得的feature maps 进行采样(池化,文中使用最大池化),将分别得到的结果进行合并就会得到固定长度的输出。
上图可以看出SPP层就是在前一卷积层得到的feature maps上进行了3个池化操作(实际情况根据自己设定的池化个数,控制全连接层的输入,下面会讲)。最右边的就是原图像,中间的是把图像分成大小是4的特征图,最右边的就是把图像分成大小是16的特征图。这样每一个feature map就会变成固定的21(16+4+1)个feature maps。

通俗的讲,SPP就相当于标准通道层,不管任何大小的图像,我都用一套标准的pool(文中说叫: l-level pyramid)对图像进行池化,最后组合成一列相同大小的特征,作为全连接层的输入,这一组相同大小的特征是固定的,可以提前进行计算,计算的方法和规则下面进行讲解。

当然,有些技术如全卷积网络(FCN) ,不包含全连接层 和接受不同尺寸的图像。 这种类型的设计对于那些空间信息非常重要的图像分割来说特别有用。 因此,对于 YOLO 来说,将2-D 特征图转换为固定大小的1-D 向量未必是可取的。

https://zhuanlan.zhihu.com/p/138510087

YOLO中,SPP 进行了修改以保持输出的空间维度。 最大池化应用于大小为1x1,5x5,9x9,13x13的卷积核,步长为1,所以各分支输出特征图尺度不变。 然后将不同卷积核特性图连接concat在一起作为输出。通过该SPP层,输出特征图包含有更大感受野的特征图

posted @ 2021-11-09 18:20  哈哈哈喽喽喽  阅读(71)  评论(0编辑  收藏  举报