SPP-Net:Spatial Pyramid Pooling in Deep Convolution Networks for Visual Recognition

??什么叫特征的尺度不变性:
即图像的尺度发生变换后(缩放),仍能得到相同的特征信息。

??使用多尺度的bin的原因

SPP-Net:Spatial Pyramid Pooling in Deep Convolution Networks for Visual Recognition_第1张图片
网络结构对比
SPP-Net:Spatial Pyramid Pooling in Deep Convolution Networks for Visual Recognition_第2张图片
spp结构

SPP-Net的提出是基于对R-CNN中在提取特征时需要相同输入尺度及多次进行卷积层处理的改进。

Step1:原始图片预处理阶段

对图片,利用selective search的方法选出2000个候选区

Step2:利用模型对整幅图像提取特征(与R-CNN对每个候选区单独提取特征不同)

首先得到一个在其他数据集(如ImageNet数据集)上训练好的CNN模型,将其最后的softmax层换成自身任务所需的类别数(注意加上一个背景类)。将得到的候选区根据IoU(0.5)分类为背景类及所属类别。将原始图像resize使得min(w,h)属于{480,576,688,864,1200}多个尺度,这样便可得到经过卷积层conv5后输出不同尺度的feature map层,然后对每一个region proposal选择一个尺度使得region的大小接近与224*224(????这样在进行spp时仍对其在相同尺度下进行池化),并且设置SPP中bin大小分别为(1*1,2*2,3*3,6*6),对同一feature map提取出不同尺度的特征,再将其串接成一个特征向量(见上面的SPP网络)作为后续fc6全连接层的输入,用以进行后续网络的训练,对网络进行精调时,调整的是全连接层(因为此时提取到的特征时直接从feature map上得来的多尺度特征,故利用反向传播BP不太方便对前面卷积层的参数进行更新)。方法:采用250k个mini-batchs进行梯度计算,学习率固定为e-4,之后用50k个mini-batches,将学习率调整为e-5.

Step3:对分类器进行训练

对fc7全连接层得到的特征进行分类训练,此时对正负样本的划分与Step2中IoU(0.5)不同,此时选择IoU(0.3)来划分背景样本及所属类别样本。



Step4:测试阶段


对于一张待检测图片,首先利用selective search选出2000个候选区域,然后将整张图片输入SPP-NET网络,由conv5得到整张图片的feature maps(这些特征不仅反映物体的某一部分的语义信息,同时也反应了这些特征在图像中的具体位置,如下图),再利用spp结构对每个候选区提取得到相同长度的特征向量,再进行分类,得出该候选区所属类别。对于同一类别的候选区采用非极大值抑制的方法进行筛选,最后以实现目标检测。

SPP-Net:Spatial Pyramid Pooling in Deep Convolution Networks for Visual Recognition_第3张图片

Ending:相比于R-CNN结构,SPP-NET主要

SPP-Net:Spatial Pyramid Pooling in Deep Convolution Networks for Visual Recognition_第4张图片

a:将简单的pool5池化层替换成了多结构层次的金字塔池化,以此可以实现对输入图片的尺寸没有约束(因经过SPP池化后均会产生相同尺度的特征向量),正是因其支持不同尺寸的图像输入,使得其提取到的图像特征有更好的尺度不变性。同时,这也更符合人眼看世界的逻辑,在观察一幅图像时,并不会将目标resize到同一大小再进行识别。

b:因对一幅图像只需进行一次前向卷积操作,而不需对每个候选区region proposals均进行一次卷积操作,此方式提升了效率,快了进24-64倍。

********************************************************************************************************************************

spp中在池化时,对于不同大小的输入需取不同的滑动窗口以实现输出相同数目的bins,作者在训练后面的区连接层网络时分别进行了单尺度和多尺度的训练,如下图

SPP-Net:Spatial Pyramid Pooling in Deep Convolution Networks for Visual Recognition_第5张图片
SPP-Net:Spatial Pyramid Pooling in Deep Convolution Networks for Visual Recognition_第6张图片

??是对整张图做spp操作还是对每个region做spp操作??


***********************************************************************************************************************************

*spp的结构很灵活可以应用到很多CNN网络中已解决固定尺度输入问题

不足:网络中的卷积部分,全连接部分,分类器部分需单独训练,不是end-to-end的结构,比较麻烦;且区域提取selective search是事先单独进行的,不在整个网络中。且准确率仍需进一步提高。

Adding:

多模型融合:
在文中,作者提到通过利用同样的ImageNet数据集训练的到两个不同的网络结构,仅对两个结构选用不同的初始化方法,然后对于一幅图像分别用这两个网络进行检测,对这两个网络检测出的region区域进行非极大值抑制,合并得到最终的检测结果,得到了更高的检测精度。(原因是两个网络结构可以学习得到互补的卷积特征)。故有时为了提高检测精度,可以使用多模型融合的方式。

你可能感兴趣的:(SPP-Net:Spatial Pyramid Pooling in Deep Convolution Networks for Visual Recognition)