1、为什么需要SPP?
过去的卷积神经网络CNN由卷积层+全连接层组成,其中卷积层对于输入数据的大小并没有要求,唯一对数据大小有要求的则是第一个全连接层,因此基本上所有的CNN都要求数据数据固定大小,例如著名的VGG模型则要求输入数据大小是(224×224)。
固定输入数据大小有两个问题:
1、很多场景所得到的数据并不是固定大小的,例如不同相机,不同手机,拍出来的图片其宽高比是不固定的;
2、有人说可以对图片进行切割,但是切割的话很可能会丢失到重要信息。
综上,SPP的提出就是为了解决CNN输入图像大小必须固定的问题,从而可以使得输入图像可以具有任意尺寸。
2、SPP原理
如图所示,对于选择的不同大小的区域对应到卷积之后的特征图上,得到的也是大小不一致的特征图区域,特征图通道数为256,对于每个区域,通过三种划分方式进行池化:
1)直接对整个整个区域池化,每层得到一个点,共256个点,构成一个1×256的向量;
2)将区域划分成2×2的格子,每个格子池化,得到一个1×256的向量,共2*2=4个格子,最终得到4个1×256的向量 ;
3)将区域划