SppNet
面临的问题
- 速度:由于RCNN需要对一张图片产生2000个候选区域分别采用cnn提取特征,大大增加了速度。
- 性能:由于全连接网络的限制,Selective Search 产生的候选框需要固定尺寸(227 * 227),会给图像造成不规则变形,这也会造成性能的损失。
空间金字塔池化
为了解决性能问题,作者的想法是让图片经过卷积层后,在卷积层与全连接层的中间加上一层可以特殊的网络结构,无论卷积层输出多大的feature map,都可以输出固定的向量,这样就可以解决全连接层的限制,也就结解决了需要对候选框resize造成图像失真的问题。
上面的特殊的网络层就叫做空间金字塔池化,是指把卷积层输出的featuremap的HW分别平均分成 16份、4份、1份,然后每一份做maxpooling,假设channel是3,那么无论输入多大,输出都是(16+4+1)*3。
特征图映射
为了解决速度问题,由于rcnn需要对每一张图片产生的所有候选框分别提取特征,但这实质其实是对同一张图片的不同部分做提取,如果我们可以直接对cnn提取整张图像的feature map,然后根据候选框的在原图中的相对位置找到对应的整张feature map中候选框的feature map的相对位置,这样每张图像就只需要提取一次cnn的操作,然后根据映射找到候选框feature对于整张图像的feature 相对位置,也就找到了候选框的feature。
存在的问题
和RCNN一样,SPP也需要训练CNN提取特征,然后训练SVM分类这些特征。需要巨大的存储空间,并且分开训练也很复杂。而且selective search的方法提取特征是在CPU上进行的,相对于GPU来说还是比较慢的。针对这些问题的改进,我们将在Fast RCNN以及Faster RCNN中介绍。