一、前言
上次看完R-CNN算法,就觉得其非常原始,光是一张图就要做2000次卷积操作(加黑是因为 R-CNN 与 SPP-Net 之间最大区别就是这点)。想一想就觉得它会有很多的改进空间。继续目标检测算法的学习时,发现 R-CNN 和 Fast-RCNN之间还有个 SPP-Net ,学习当中发现一些博客写的很好,拿出来分享,自己再做些补充:
https://blog.csdn.net/forever__1234/article/details/79910175 (这篇首选);
https://blog.csdn.net/xjz18298268521/article/details/52681966 (这篇补充);
二、SPP-Net算法出现的原因
SPP-Net算法的前面一个算法 R-CNN算法,它虽然是个开创性的目标检测算法。但是它的缺点十分明显:
① CNN网络后面接的FC层需要固定的输入大小,限制网络的输入大小 。每一个候选区域要被处理成 227x227大小的图,拉伸过程中导致图片失真,对模型性能不利;
② 候选区域会塞给CNN网络用于提取特征向量的,这会有大量的重复计算,造成的计算冗余。一张图要卷积2000次,而且分类器、回归器都是分散、笨重的。导致人们记住的只有它的缺点。
先上图吧,模型基本没变什么,包括分类器、回归器也是沿用了R-CNN的设计(这个我在论文里没看到,可能没细看,看别人讲的),SPP-Net欲解决的问题主要是上面两点,对于其他的倒没改进什么。 layer8 处在R-CNN里是个最大池化,在SPP-Net里换成了空间金字塔池化(Spatial Pyramid Pooling),而且有三种尺寸的池化核,这个在下面细说。
1.测试过程
还是先说测试,再说训练,促进理解。
①