spp-net 理解

SPP-Net是何凯明于2015年提出的深度学习模型,用于解决R-CNN在视觉识别任务中的局限性。它通过引入空间金字塔池化层,实现了对任意尺寸输入的有效处理,减少了特征提取的时间消耗,并改善了因图片形变导致的分类精度下降。本文详细介绍了SPP-Net的工作原理、训练与测试流程。
摘要由CSDN通过智能技术生成

部分一:背景

SPP-Net是何凯明2015年发表在IEEE上的论文-《Spatial Pyramid Pooling in Deep
ConvolutionalNetworks for Visual Recognition》,主要的创新点在于提出了空间金字塔池化。

相较于R-CNN的两处缺点:

  1. R-CNN对于每个region proposal都重复的使用CNN提取特征,这是非常消耗时间的,使得特征提取成为测试时的一个时间瓶颈;

  2. 对于不同size的region
    proposal的feature map,都需要resize(crop or warp)到固定大小才能输入到FC layer或SVM分类器,resize会导致图片形变,影响最终的结果。

SPP-Net通过添加空间金字塔池化操作对R-CNN进行过改进,解决上述两点缺点。但是SPP-Net缺点也比较明显,并不能微调卷积层(这一步是由于卷积层和全连接层之间的SPP层导致),且并不是端到端网络。

整体图为:

在这里插入图片描述

R-CNN & SPP-Net

在这里插入图片描述

不同点在于SPP-Net直接对原图进行整体卷积,而不是对每个候选框挨个卷积,并且SPP-Net添加金字塔池化(SPP)层,适合任意尺寸的输入,可以看出与R-CNN的改进仅仅只在CNN特征提取部分,其余未变。整体流程经历:候选框提取-CNN层提取特征-SVM分类-回归器位置微调,仍然没有达到端到端。

部分二:知识点

空间金字塔池化层(Spatital Pyramid Pooling,SPP层)

首先解释一下什么是空间金字塔?

以不同大小的块来对图片提取特征,比如下面这张图:

在这里插入图片描述

利用三张网格,大小分别为44,22,1*1,将这三张网格放到下面这张特征图上,就可以得到16+4+1=21种不同的分割方式,分别在每一个区域(每个区域会含有多个像素)取最大池化,那么就可以得到21组特征。

那么SPP就是以不同的大小格子的组合方式来池化的过程,如下

在这里插入图片描述

具体来说就是把输入的feature map按照不同尺度进行分割,比如图中(4, 4) (2, 2) (1, 1)三种不同的尺度分割,然后会产生不同的bin,比如分成(4, 4)就16个bins,然后在每个bin中使用max pooling,然后就变成固定长度为16的向量。例如下图中,经过SPP层之后可以得到相同长度的向量,之后再输入FC layer,

在这里插入图片描述

在这里插入图片描述

候选区域在原图上与在feature map上的位置映射关系

首先给出坐标点的对应公式及符号意思,如下(公式未推导,基本和验证相吻合。i表示第几层):

在这里插入图片描述

直观表示如下:

在这里插入图片描述

其次在特定SPP-Net网络中,SPP层的输入为:与候选区域对应的在feature map上的一块区域

(可以理解为一张原图通过SS算法大约提取含有2000个候选区域的集合

,在对原图做完卷积后,得到的feature map上的区域

与候选区域中的区域

是一一对应的。由于在将该区域提取的特征向量进行SVM分类时,我们必须知道该特征向量所对应的原图上的哪一个候选区域,才能对原图上的候选区域进行分类,所以才需要了解“位置映射关系”。)(这一段可能较难理解)

论文做法如下:

SPP-Net对上面对应的坐标关系进行了简化,如下:

在这里插入图片描述

下图中把原始ROI的左上角和右下角 映射到 feature map上的两个对应点。 有了feature map上的两对角点就确定了对应的
feature map 区域(下图中橙色)。

在这里插入图片描述

在这里插入图片描述

部分三:实际流程

训练阶段

分为固定尺寸(signal-size)训练和多尺寸(multi-size)训练

一.固定尺寸训练

  1. 候选区域生成:将原图通过SS算法,提取候选框,记为集合

  2. 特征提取(分为预训练和微调两个阶段)

预训练阶段

训练数据选取-ImageNet ILSVC 2012,包含一千万张图像,1000类。

在这里插入图片描述

微调阶段(仅仅对全连接层进行微调,记得将最后的种类由1000变为21)

训练数据:PASCAL VOC 2007(包含物体的类别和位置。一万图像,20类)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二.多尺寸训练

顾名思义就是将一张原图resize到224224、180180两种尺寸大小。在训练时两种尺寸原图交替喂给网络,其余与单尺寸训练相同。论文中说这样可以加快网络收敛速度,并且由于对于同一类别原图中可能含有大小的区别,此时resize原图尺寸,有助于网络框出不同尺寸的同一类别物体。(也有的理解说是训练两个网络)

测试阶段

  1. 首先通过选择性搜索,对待检测的图片进行搜索出2000个候选窗口。这一步和R-CNN一样。

  2. 特征提取阶段。这一步就是和R-CNN最大的区别了,这一步骤的具体操作如下:把整张待检测的图片,输入CNN中,进行一次性特征提取,得到feature maps,然后在feature maps中找到各个候选框的区域,再对各个候选框采用金字塔空间池化,提取出固定长度的特征向量。而R-CNN输入的是每个候选框,然后在进入CNN,因为SPP-Net只需要一次对整张图片进行特征提取,速度会大大提升。

  3. 这一步也是和R-CNN一样,采用SVM算法进行特征向量分类识别。

  4. 进行利用NMS,阈值为0.3,对提取出的候选框进行挑选。

  5. 最后进行位置微调,得到预测框。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值