目标检测模型之SPP-net

1.R-CNN部分已经对SPP-net的核心思想进行了介绍,其实总体而言,SPP-net主要是在两个地方上有所改进,分别是:            

       [1]使用预先conv处理的方式,将卷积层的特征提取放置在前面,先进行卷积操作(所有区域共享卷积计算,在conv5层输出提取所有区域的特征),之后再空间金字塔池化,这样可以避免之前R-CNN中把每个候选区域都分别进行卷积操作,去除了各个区域的重复计算,而导致的大量时间消耗的问题。            

       [2]另一个改进是之前所说的在输入全连接层之前进行空间金字塔池化,具体方式已经有说明,就是一种针对特征图进行对应位置进行多种尺寸池化提取的操作。

2.下图是R-CNN与SPP-Net对比下的区别变化,可以发现之前说的两个改进点一个体现在SPP层对Max Pooling层的替代上(对conv5的pooling层进行替换,使用3个level分别为1*1、2*2、4*4),是更多尺度的池化提取方式,另一方面则体现在于Selective Search同时进行的Conv5卷积操作,这样的方式是一次获得整张图的卷积特征图(提取区域和con5操作同时进行),之后每个Selective Search提取的特征都可以直接对应于一次提取的卷积特征图上找到对应的特征图位置,在进行之后的处理。

上面的两个步骤在框架图中都有很好的展示,可以发现其改进主要体现在第二阶段特征提取上。

目标检测模型之SPP-net_第1张图片

在效果上可以发现,SPP-Net能产生很大的速度提升,单尺寸金字塔池化的SPP-Net网络有102倍的提速,5个尺寸的网络能产生38倍的提速。

目标检测模型之SPP-net_第2张图片

其整体的训练过程如左侧所示,可以发现对预训练模型进行微调时,只针对全连接层进行微调,而不对卷积层微调,微调出的特征。

目标检测模型之SPP-net_第3张图片目标检测模型之SPP-net_第4张图片

3.SPP-Net可以提高一定的速度,但是仍存在很多问题,包括:              

          *需要存储大量特征              

          *需要复杂的多阶段训练(分成网络微调、SVM训练、回归边框训练这几个分开步骤)            

          *训练时间较长,其中Fine-tune+特征提取+SVM/Bbox训练都需占据时间,时间最好的微调大约要占据16个小时。                        *检测速度 慢,检测一张图需要好几十秒。              

          *还有个问题是 SSP层之前的所有卷积层不能进行finetune,因为这些层已经作为统一的卷积特征提取,所以不能单独拿出来微调了,不太明白,待细分析。

以上说的是R-CNN和SPP-Net存在的问题,进而我们提出了Fast R-CNN。

 

你可能感兴趣的:(目标检测)