SPPNet

CNN网络需要固定尺寸的图像输入,SPPNet将任意大小的图像池化生成固定长度的图像表示,提升R-CNN检测的速度24-102倍。

固定图像尺寸输入的问题,截取的区域未涵盖整个目标或者缩放带来图像的扭曲。事实上,CNN的卷积层不需要固定尺寸的图像,全连接层是需要固定大小输入的,因此提出了SPP层放到卷积层的后面,改进后的网络如下图所示:
SPPNet_第1张图片

SPP是BOW的扩展,将图像从精细空间划分到粗糙空间,之后将局部特征聚集。在CNN成为主流之前,SPP在检测和分类的应用比较广泛。SPP的优点:1)任意尺寸输入,固定大小输出,2)层多,3)可对任意尺度提取的特征进行池化。

R-CNN提取特征比较耗时,需要对每个warp的区域进行学习,而SPPNet只对图像进行一次卷积,之后使用SPPNet在特征图上提取特征。结合EdgeBoxes提取的proposal,系统处理一幅图像需要0.5s。

SPP层的结构如下,将紧跟最后一个卷积层的池化层使用SPP代替,输出向量大小为kM,k=#filters,M=#bins,作为全连接层的输入。至此,网络不仅可对任意长宽比的图像进行处理,而且可对任意尺度的图像进行处理。尺度在深层网络学习中也很重要。

网络训练:
multi-size训练,输入尺寸在[180,224]之间,假设最后一个卷积层的输出大小为 a×a ,若给定金字塔层有 n×n 个bins,进行滑动窗池化,窗口尺寸为 win=a/n ,步长为 str=a/n ,使用一个网络完成一个完整epoch的训练,之后切换到另外一个网络。只是在训练的时候用到多尺寸,测试时直接将SPPNet应用于任意尺寸的图像。

SPPNet对ImageNet2012分类结果
1).对已有网络增加SPP层提升系能,包括ZF-5,Convnet-5,Overfeat-5/7,单尺度和多尺度输入图像的实验结果top-1及top-5 error如下表所示,第一个提出多尺度输入图像训练网络
SPPNet_第2张图片

2).使用全图作为SPPNet的输入及224*224图像中心的crop对比,网络使用ZF-5,Overfeat-7,结果如下表
SPPNet_第3张图片

3).与其他方法在ImageNet分类的对比
SPPNet_第4张图片

SPPNet for Object Detection
R-CNN重复使用深层卷积网络在~2k个窗口上提取特征,特征提取非常耗时。SPPNet比较耗时的卷积计算对整幅图像只进行一次,之后使用spp将窗口特征图池化为一个固定长度的特征表示。

检测算法:使用ss生成~2k个候选框,缩放图像min(w,h)=s之后提取特征,每个候选框使用一个4层的空间金字塔池化特征,网络使用的是ZF-5的SPPNet形式。之后将12800d的特征输入全连接层,SVM的输入为全连接层的输出。SVM如下使用,正样本为groundtruth,负样本与正样本的IoU<0.3,训练20类样本只需1h。使用ZF-5与R-CNN对比实验结果如下:

你可能感兴趣的:(深度学习)