Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 论文阅读笔记

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

用于视觉识别的深度卷积网络空间金字塔池化

论文概述

本文是由何凯明等人在2014年提出了一种新的深度卷积网络结构:SPP-Net(Spatial Pyramid Pooling Network),主要解决深度卷积神经网络要求输入固定尺寸图片的问题。现有的深度卷积神经网络在训练和测试时都要输入固定尺寸的图片,需要经过crop或者warp等一系列操作,这会导致图片信息变形或丢失,影响识别的准确率。针对此问题,作者提出了SPP-Net结构,通过在卷积神经网络的最后一个卷积层和全连接层之间增加一个空间金字塔池化层,不仅可以生成固定长度的特征向量,还可以实现多尺度特征融合,这种特性使得SPP-Net在处理不同尺寸的图像时更加灵活和高效。经过试验,SPP-Net在图像分类和目标检测中表现出色,检测精度和速度较之前大幅提升。总之,SPP-Net通过增加空间金字塔池化层,解决了深度卷积网络输入固定尺寸的问题,同时提升了识别与检测任务的效果与效率。

论文详解

一、模型的提出

传统的CNN模型需要固定的输入图像尺寸(例如224*224)。在R-CNN中,经过SS算法选出来的每一个候选区域都要经过一次CNN,由于后面全连接层的限制,所以候选区域在进入CNN之前,要将候选区域进行固定尺寸的缩放,如下图上方的框架,但是crop和warp图片都会导致精度下降。

那么为什么要固定尺寸输入呢?基本的CNN模型由两部分组成:卷积层和全连接层。其实卷积层不需要固定图像尺寸的大小,它仅仅是一个卷积核在图像上滑动生成特征图,但是全连接层要将输入的所有像素点连接起来,进行矩阵相乘的操作,得到对应的输出。而全连接层的权重和偏置是固定的,唯一需要固定的动态变量就是输入图片的数据,所以在进入全连接层之前,要将图片的尺寸固定。

为了解决输入图片尺寸不一致的问题,作者提出了SPP-Net,如上图下方的框架。原图经过SS算法提取候选区域,直接进入卷积层,经过金字塔池化层将不同尺寸的特征图得到固定长度的向量,然后输入到全连接层,使得网络可以适应不同尺寸的输入。

SPP优点:(1)SPP可以在输入图片尺寸任意的情况下产生固定大小的输出;(2)SPP使用多层空间箱,而滑动窗口池化只使用单一窗口大小。多层级池化对目标的形变具有鲁棒性。(3)SPP池化不同尺寸的特征图,可以汇集在各个尺度上提取的特征。

二、SPP-Net

下图,是可视化的一些特征图,观察发现输入图片某一个位置的特征在特征图上也是相应的位置,SPP-Net便是通过特征映射的方法来获取每一个候选框的特征。下图中,a是输入图片,b是a经过卷积池化层后得到的第5层某通道的特征图,比如a图中右下角的汽车对应b特征图的高亮位置也是在右下角区域,c表示类似区域都会在特征图上产生强信号值。

候选区域的特征通过特征映射的方法获得,但是候选框的大小不一,所以得到的特征图也是不同尺寸的。作者提出在传统的模型中用空间金字塔池化层替换掉最后一个池化层,将输出一个k×M维向量,其中k代表最后一层卷积层的过滤器的数量,M代表空间块的数量,这个固定维度的向量就是全连接层的输入,这样不同尺寸的特征图便可进入全连接层。

上图展示了空间金字塔池化具体结构。SPP将卷积之后的特征图定义3个尺寸池化层,分别是4*4,2*2,1*1,各层的空间块数量为:16,4,1。然后每一空间块进行最大池化,将每个池化得到的特征结合起来,得到一个尺寸为16*256+4*256+1*256=21*256的特征向量,接着就可以输入到全连接层进行训练了。

三、SPP-Net 训练

  • SPP计算公式(摘抄):

假设输入数据大小是(c,hin ,win),分别表示通道数,高度,宽度

池化数量:(n,n)

3.1 单尺度训练

在单尺度输入训练中,使用固定大小224*224的图像作为网络的输入。对于给定的输入尺寸的图像,为了确保空间金字塔池化层能够有效地提取多尺度特征,先预计算空间块的大小。如下图示例:以conv5层输出的特征图为例,其大小为a*a(13*13),空间块数量为n*n。使用滑动窗口池化实现SPP层,池化窗口大小win = ⌈a/n⌉ ,滑动步长str = ⌊a/n⌋(⌈⌉和⌊⌋分别表示向上取整和向下取整操作)。对于L层金字塔,实现L个这样的SPP层。随后,全连接层(fc6)将L个SPP层的输出进行拼接。

3.2 多尺度训练

 为了使用SPP网络处理不同尺寸的输入图像,定义两个固定尺寸:180*180和224*224,180*180是通过240*240图像缩放得到的,以保证内容的一致性。这两个网络是共享参数的,并且采用交替训练的方式,这种训练方式在一定程度上模拟了不同尺寸输入的训练效果。即在每个完整的训练周期内,使用224*224的网络进行训练,保持网络的参数更新。然后,在下一个完整的训练周期,切换到180*180的网络,但此时并不重新初始化参数,而是继续使用上一个网络训练得到的参数,继续训练。

实验结果显示,采用多尺度训练的收敛速度与单尺度训练相似,在测试阶段,可以直接使用SPP-Net处理任意尺度的图像。

四、SPP-Net 图像分类

4.1 在ImageNet 2012分类任务上进行实验

实验内容:在ImageNet 2012的1000类训练集上训练网络。先将短边缩放至256,然后在图像的中心或四个角裁剪224*224作为输入,数据通过水平翻转和颜色改变进行增强。

模型训练:在两个全连接层上使用了Dropou来防止过拟合;学习率为0.01,并在误差停止下降时除以10。

实现与配置:实验基于公开的代码库cuda-convnet和Caffe实现。在单个GeForce GTX Titan GPU(6GB内存)上训练,训练时间为两到四周。

作者测试了以下基线网络架构:

将SPP分别加在ZF-5、Convnet*-5、Overfeat-5/7上,单尺度训练尺寸是224,多尺度训练的训练尺寸是224和180。通过对单尺度进行多层次金字塔池化( b)提升了准确度({6×6,3×3,2×2,1×1}、{4×4,3×3,2×2,1×1}),还验证了多层次池化带来的提升不只是因为更多的参数,而是因为多层次池化对对象的变形和空间布局更加鲁棒;通过多尺寸训练提升了准确度(c)。

表3 研究了全图像视角提升准确度:

作者还研究了特征图上的多视图来验证了SPP-Net模型的优越性。。。

4.2  VOC 2007 Classification

 本次实验该实验在Pascal VOC 2007数据集上进行,包含9,963张图像,性能通过均值平均精度(mAP)评估。结果展示了SPP-net在图像分类任务中的有效性,特别是在处理不同尺度的图像信息时能够显著提高分类性能。

4.3 Caltech101

Caltech101数据集有9144张图片,分为102类(包括一个背景类)。随机选择每类30张图片用于训练,最多50张用于测试,重复10次随机划分并计算平均准确率。研究结果显示,SPP-net比没有SPP的网络效果好,全视图也比裁剪后的效果好。但与Pascal VOC相比,Caltech101的结果有些不同,全连接层不太准确,SPP层表现更好,可能是因为Caltech101中的对象类别与ImageNet中的类别相关性较低,深层网络更专注于特定类别。

五、SPP-Net 目标检测

R-CNN通过SS算法从每张图像中提取约2000个候选区域,并对每个候选区域固定大小(227×227),然后利用预训练的深度网络提取特征,最终使用SVM分类器进行检测。R-CNN需要对每张图像约2000个候选区域重复使用深度卷积网络,速度慢,耗时长。而SPP-Net只需对整张图像使用一次深度卷积网络提取特征图,然后对特征图的每个候选区域进行空间金字塔池化,生成固定长度的向量,从而大大提高了检测速度。

5.1 检测算法

作者使用使用ZF-5(单尺度训练)的SPP-Net模型从整个图像中提取特征图,在2000个候选区域中,使用4层空间金字塔({1×1, 2×2, 3×3, 6×6},共50个bins)进行特征池化,生成每个窗口的12,800维(256×50)表示,最后对每个类别,在提取的特征上训练线性分类器SVM。

作者通过将图片尺寸调整为{480,570,688,864,1200}等来进行多尺度特征提取改进方法,还对模型进行了微调和后处理,能够在保持高效训练的同时,提升模型的性能。

5.2 处理结果

5.3 用于检测的多模型融合

在基于卷积神经网络(CNN)的分类与检测任务中,作者提出模型融合有提升准确性的潜力,通过利用不同初始化训练的两个网络之间的互补性,有效提升了检测性能。

六、总结

回顾SPP-Net步骤:

  • 首先通过SS算法进行候选框选取;
  • 接着将原图进行卷积池化进行特征提取,得到特征图;
  • 然后根据候选框的位置通过卷积池化层层映射,映射到特征图相应的区域;
  • 接着将映射到特征图的区域输入到空间金字塔池化层,进行特征数量固定;
  • 接着将固定好的特征输入到全连接层中,得到输出,进而训练网络;
  • 最后将网络训练好之后,将金字塔池化层得到的特征做SVM的训练以及边框回归。

SPP-Net 对 R-CNN 进行了重要改进,其核心在于引入了SPP层,解决了R-CNN需要将每个候选区域单独缩放后送入CNN进行特征提取的问题。通过SPP层,无论输入候选区域的大小如何,都能输出固定维度的特征向量,大大提升了特征提取的效率,SPP-Net的检测速度大约是R-CNN的100倍。然而,尽管SPP-Net在速度和效率上取得了巨大进步,但它没有实现端到端的训练,后续的网络结构对此做出了改进。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值