SPPNet---------论文理解
参考博客:https://blog.****.net/v1_vivian/article/details/73275259
pytorch代码:https://www.cnblogs.com/qinduanyinghua/p/9016235.html
1. 为什么要进行金字塔池化?
在不需要对图片进行裁剪的前提下保证全连接输入和输出维度。
传统的卷积操作需要固定图片尺寸,首先对图片进行一定的裁剪,再输入进网络中进行一系列的操作,如此在一定程度上导致图片信息的丢失和变形,限制了识别精确度。
此外,如果是纯卷积操作可以不需要固定图片输入大小,因为可以通过设置卷积核大小和步长来控制输入特征图大小。但是,对于全连接操作就不一样了,它需要把输入的所有像素点连接起来,需要设定输入和输出神经元的个数。
如图,如果输入的维度不相同 ,那么计算过程中权重参数也是不一样的,不同于卷积网络,每个卷积核针对输入图像都是参数共享的。因此,全连接必须设定输入和输出神经元的个数。
2. 什么是金字塔池化?
首先用不同大小的块对图像做特征提取,分别是4x4,2x2,1x1,相当于用这些块放在原图像上做池化处理,提取特征,最后得到21个块。对于上图来讲,卷积后的输出特征图大小不固定,channel数量为256,经过三个块后的输出分别是16x256,4x256,1x256,然后进行横向连接,通道数不变,得到(16+4+1)x256的输出。
金字塔池化的意义在于,主要可以将卷积输出后经过全连接的输出转换成固定大小的特征向量,便于进行softmax分类。
(多尺度特征提取出固定大小的特征向量)