该文章主要改进两点:
1. CNN需要固定输入图像的尺寸,导致不必要的精度损失
2. R-CNN对候选区域进行重复卷积计算,造成计算冗余
1.为什么CNNs要固定输入图像的尺寸?
CNN主要有两部分组成:卷积层和全连接层。卷积层以滑动窗口方式操作并输出表示各个响应激活空间分布的特征图。实际上,卷积层不需要输入的图像尺寸固定,并且可以产生任意尺寸的特征图。但另一方面,完全连接层需要具有固定大小/长度的输入。 因此,固定输入大小的约束只是来自存在于网络更深层阶段的全连接层。
解决办法(对比R-CNN, SPP-net):
R-CNN | SPP-net |
固定输入图像的尺寸,在将图像输入CNN前,进行图片的缩放(详细情况查看R-CNN文章详细解读),这样会导致裁剪区域可能不包含整个对象,或者缩放时候产生的扭曲可能会导致不必要的几何失真 | 提出空间金字塔池化层简称SPP层,在最后一个卷积层的顶部添加一个SPP层。 SPP层对这些特征进行池化并生成固定长度的输出,然后将其输入到完全连接层(或其他分类器)。 |
在最后的卷积层和全连接层之间加入SPP层。具体做法是,在conv5层得到的特征图是256层