必威体育Betway必威体育官网
当前位置:首页 > IT技术

目标检测(六)--SPPNet

时间:2019-07-25 02:10:00来源:IT技术作者:seo实验室小编阅读:85次「手机版」
 

spp

空间金字塔池化

空间金字塔池化层简介:

          在对图片进行卷积操作的时候,卷积核的大小是不会发生变化的额,反向调节的权重仅仅是数值会发生变化。但是,但是,但是,输入的图片的大小你是否可以控制呢?哈哈,我们的输入图片大小是会发生变化的,这里图片大小的变化并不会在卷积操作和polling操作产生影响,但是会对全连接层的链接产生影响。这篇文章的核心就是解决如何对于不同的输入图片(主要是针对大小不同)都可以直接运用到已经训练好的网络中去。

为什么要引入空间金字塔池化:

  首先说一下为什么要有这个层:我们处理图片的大小不一,都有自己不同的像素值,但是同一批数据,如果非要进过一定的裁剪把他处理成为相同大小的图像,例如,我们可以先把图片的四个角裁剪下来,在加上一个中心区域的图片,这是五个变形的图片,然后再把图片水平翻转之后依然是相同的操作会得到五个图片,总合计是10个大小相同的图片,这是一种方法,当然还有其他的方法,例如在overFeat那篇论文中也提到一种方法,等等。这些裁剪技术都会达到不错的结果,但是依然会存在一些问题,例如,有些区域裁剪的时候都会有重复,无形之中加大了该区域的权重。所以,这篇paper就提出了金字塔池化来解决输入图片大小不一的情况。

  

观察图一,最上面代表的是把原来的图片都进行适当的crop和wrap之后得到适当的像素值,中间的就是对应的网络模型。最下面的是这篇论文的模型,在最后一个卷积层后面紧随种恶一个spatital pyramid polling层,紧跟着的是全连接层。这样就可以解决不管输入图片的大小是多大,都可以用当前的网络进行测试的问题。

但是我们需要明白的是为什么这个层放到了最后一个圈基层的后面呢?也就是说为什么convolution和polling都对如数图片的大小不敏感,而全连接层却敏感呢?我们来看看。假设输入图片的大小是100*100,经过5个卷积核3*3之后会差生5*98*98的feature maps,就算你的输入图片的大小变成102*102,那我的feature maps就是5*100*100。这里的feature maps经过2*2的polling之后得到的是25*25和26*26。没什么影响,这里的卷积核的大小是固定的,可以去卷积任何大小的图片。但是全连接层就不同了。假设最后一个卷积层有50个输出,下一层的全链接有1000个输入,那么这个链接矩阵就是50*1000,哈哈,你想想,如果这里每次的输入图片大小都不一样,到这里如何进行链接呢?因为不同的图片大小经过最后一个卷积层的输入到输出之后压根就不可能都是50啊。这就是我们为什么要在全连接层这人进行操作的原因。

空间金字塔池化层的特点

   当然,这篇paper的特点可不是仅仅有一个。金字塔池化层有如下的三个优点,第一:他可以解决输入图片大小不一造成的缺陷。第二:由于把一个feature map从不同的角度进行特征提取,再聚合的特点,显示了算法的robust的特性。第三:同时也在object recongtion增加了精度。其实,你也可以这样想,最牛掰的地方是因为在卷积层的后面对每一张图片都进行了多方面的特征提取,他就可以提高任务的精度。好比是不同大小的图片在不同的网络中进行训练一样,大大提高了模型的精度。SPP在现有的各种网络模型上都得到了state of the art 的高度,例如R-CNN上面。不仅仅如此,R-CNN需要对不同大小的边框内的图像feed into 不同的网络模型,整个过程是特别的耗时,SPP-Net刚好就可以决绝这个问题,大大的减少了时间。

什么是金字塔池化层

     哈哈,唧唧歪歪的说了半天,都没有说到重点上去,现在我们步入正题,说说什么是金字塔池化层。

                                                                     

   

   如上图所示,从下往上看,这是一个传统的网络架构模型,5层卷积层,这里的卷积层叫做convolution和pooling层的联合体,统一叫做卷积层,后面跟随全连接层。我们这里需要处理的就是在网络的全连接层前面加一层金字塔pooling层解决输入图片大小不一的情况。我们可以看到这里的spatital pyramid pooling layer就是把前一卷积层的feature maps的每一个图片上进行了3个卷积操作。最右边的就是原图像,中间的是把图像分成大小是4的特征图,最右边的就是把图像分成大小是16的特征图。那么每一个feature map就会变成16+4+1=21个feature maps。这不就解决了特征图大小不一的状况了吗?

                      

           

  那么具体是如何操作的呢?我们来看看:图片的输入大小相等的时候,我们假设图片经过第五层的卷积核之后的输出大小是a*a (例如,13*13),我们bins的大小是n*n,那么每一个窗口win=cell(a/n),然而stride的大小是stride=floor(a/n),前面一个是向上取整,后面的是向下取整,最终会形成如上图所示的三个pooling操作。这三个的本质都是最大化池,只不过使用了不同的窗口大小和移动的步长而已。fc6代表的是全链接层。实验表明,多层次的卷积行为可以使得实验的最终精度提升。而不同大小的图片操作都是一样的方法。

论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual recognition

转自:blog.csdn.net/liyaohhh/article/details/50614380

补充:

网络训练:

multi-size训练,输入尺寸在[180,224]之间,假设最后一个卷积层的输出大小为a,若给定金字塔层有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如下表所示,第一个提出多尺度输入图像训练网络

这里写图片描述

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

这里写图片描述

3).与其他方法在ImageNet分类的对比

这里写图片描述

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对比实验结果如下:

这里写图片描述

相关阅读

从YOLOv1到YOLOv3,目标检测的进化之路

本文来自 CSDN 网站,作

淘宝超级会员怎么达到?需要把淘气值提到1000以上

淘宝用户都是有会员等级之分的,划分的依据就是淘气值了,淘宝的超级会员享有一定的特权,最近比较火的活动就是88会员盛典了,成为超级会

君正X1000芯片性能和处理器介绍

君正X1000芯片是针对语音识别功能做了专门定制的芯片,可以支持4个MIC,支持远场唤醒,功耗很低,适用于物联网、智能家居、智能音频、智

e1000网络驱动分析

e1000网络驱动分析e1000是intel千兆以太网卡的驱动源码。官方关于驱动的使用可以参考如下链接。https://www.intel.cn/content/ww

马化腾:用户体验的10/100/1000法则

在研究用户需求上没有什么捷径可以走,不要以为自己可以想当然地猜测用户习惯产品研发中心最容易犯的一个错误是:研发者往往对自己挖

分享到:

栏目导航

推荐阅读

热门阅读