精华内容
下载资源
问答
  • SPPnet

    2020-10-20 19:59:09
    SPPnet2.1 SPP层的原理2.2 SPPnet的区域映射原理3. 总结 论文: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition. 来源:ECCV 2014 1. Motivation R-CNN模型存在很多缺点和可改进的...

    论文: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition.
    来源:ECCV 2014

    1. Motivation

    • R-CNN模型存在很多缺点和可改进的地方,其中的两个缺点如下:
    1. CNN网络后面接的FC层需要固定的输入大小,导致CNN也需要固定大小的输入,即要求候选区域在进入CNN前需要crop或warp等操作,这种操作可能会造成信息损失或信息改变。
    2. 重复使用同一个CNN对2000个候选区域进行特征提取,这个过程会存在大量的重复计算,既造成计算冗余,又影响目标检测速度。
    • 针对R-CNN存在的第一个缺点,SPPNet提出了著名的空间金字塔池化(Spatial Pyramid Pooling,SPP),实现了将任意大小的输入转化成固定大小的输出。有了SPP,一来我们无需对任意大小的候选区域进行其他操作,二来我们可以使用多尺度训练和多尺度测试。
      在这里插入图片描述
    • 针对R-CNN存在的第二个缺点,SPPNet将候选区域的产生和利用CNN提取特征这两个步骤互换,即,仅使用一次CNN对整张图像进行特征提取,得到feature map,然后将候选区域映射到特征图上(候选区域是由Selective Search得到的相对于原图像的区域,将其映射到特征图上的某一区域),然后将基于特征图的候选区域输入SPP层,得到固定大小的特征,后续采用和R-CNN一样的分类和回归方法。
    • 以上两处改进都会带来相对应的难点
    1. SPP层是怎么实现接收任意大小的输入,输出固定向量的?
    2. SPPNet怎么实现将基于全图的候选区域映射成基于feature map的区域?

    2. SPPnet

    2.1 SPP层的原理

    在这里插入图片描述

    • 对于最后一层卷积层conv5(通道数为256),先把conv5分割成多个不同尺寸的网格(论文中的bin),比如 4 × 4 4\times4 4×4 2 × 2 2\times2 2×2 1 × 1 1\times1 1×1,然后每个网格做全局max pooling,这样就得到了 16 × 256 16\times256 16×256 4 × 256 4\times256 4×256 1 × 256 1\times256 1×256的新特征图(这些图一起构成了特征金字塔),将这些特征图分别展平并连起来就形成了一个固定长度的特征向量,将这个向量输入到后面的全连接层。
    • 其实严格来说,上面的说法是不太准确的,只是帮助你理解。实际上,从原论文可以看出,根本不存在网格划分这一步骤,网格的尺寸实际上是最后要得到的各个新的特征图的尺寸。在实际做pooling时,对于每一个不同大小的conv5,池化核的尺寸和池化步长都是经过特定计算而得到的。比如为了得到 16 × 256 16\times256 16×256这个特征图,对于输入为某一大小的conv5,就使用相对应的提前计算好的池化核的尺寸和池化步长,对于输入为另一大小的conv5,就使用另一套提前计算好的池化核的尺寸和池化步长。

    如何计算池化核的尺寸和卷积步长呢?

    • 对于标准的池化来说,假设输入特征尺寸为 a × a a\times a a×a,池化核大小为 f × f f\times f f×f,池化步长为 s s s,padding大小为 p p p,输出特征的尺寸为 n × n n\times n n×n,则有:
      n = ⌊ a − f + 2 p s ⌋ + 1 n=\lfloor \frac{a-f+2p}{s} \rfloor+1 n=saf+2p+1在不考虑padding的情况下,为了得到尺寸为 n n n的输出特征, f f f s s s应满足:
      f = ⌈ a n ⌉ , s = ⌊ a n ⌋ f=\lceil \frac{a}{n} \rceil , s=\lfloor \frac{a}{n} \rfloor f=na,s=na在计算 f f f时向上取整的目的是:保证整数,使池化核尺寸稍大于或等于网格bin的尺寸,否则会丢失信息。在计算 s s s时向下取整的目的是:保证整数,使卷积步长稍小于或等于池化核尺寸,否则信息会重叠。

    举一个例子:假设 a = 13 a=13 a=13,则

    • n = 3 n=3 n=3时, f = 5 f=5 f=5 s = 4 s=4 s=4
    • n = 2 n=2 n=2时, f = 7 f=7 f=7 s = 6 s=6 s=6
    • n = 1 n=1 n=1时, f = 13 f=13 f=13 s = 13 s=13 s=13
      在这里插入图片描述

    SPP层的作用

    1. 使得网络可以接受任意大小的输入(任意尺寸,任意宽高比),产生固定长度的特征向量;
    2. 聚合不同范围的空间信息,提供不同大小的感受野,不同感受野捕捉不同尺度的特征;
    3. 可以用于多尺度训练(论文指出多尺度训练可以提高准确率)

    2.2 SPPnet的区域映射原理

    • 为什么可以将基于原图的候选区域映射成基于feature map的区域?由于卷积具有平移不变性,不会改变空间位置信息。特征可视化的结果也表明,图像中的目标区域会在特征图的相应位置表现得比较活跃。
      在这里插入图片描述
    • 如何将基于原图的候选区域映射成基于feature map的区域。SPPNet 是把候选区域的左上角和右下角分别映射到feature map上的两个对应点。 有了feature map上的两对角点就确定了对应的feature map区域(下图中橙色)。
    • 映射的准则为:映射后对应点在原图中的感受野的中心尽可能与原象接近。如,原图候选区域(蓝色)的左上角为 ( x , y ) (x,y) (x,y),其映射后在feature map上的坐标为 ( x ′ , y ′ ) (x',y') (x,y),那么应使得 ( x ′ , y ′ ) (x',y') (x,y) 在原图上的感受野(绿色框)的中心点与 ( x , y ) (x,y) (x,y)尽量接近。
    • 由于卷积具有平移不变性, ( x , y ) (x,y) (x,y) ( x ′ , y ′ ) (x',y') (x,y)的关系式为:
      ( x , y ) = ( S x ′ , S y ′ ) (x,y)=(Sx',Sy') (x,y)=(Sx,Sy)其中,S是总下采样率。显然这种映射是一种等比例缩放映射。

    论文中的最后做法为:

    • 左上角取: x ′ = ⌊ x / S ⌋ + 1 x'=\lfloor x/S \rfloor+1 x=x/S+1 y ′ = ⌊ y / S ⌋ + 1 y'=\lfloor y/S \rfloor+1 y=y/S+1
    • 右下角取: x ′ = ⌈ x / S ⌉ − 1 x'=\lceil x/S \rceil-1 x=x/S1 y ′ = ⌈ y / S ⌉ − 1 y'=\lceil y/S \rceil-1 y=y/S1

    在这里插入图片描述

    具体原理可参考这篇文章

    3. 总结

    R-CNNSPPNet
    R-CNN是让每个候选区域经过crop/wrap等操作变换成固定大小的图像SPPNet把全图塞给CNN得到全图的feature map,让候选区域与feature map直接映射,得到候选区域的映射特征向量(这是映射来的,不需要过CNN)
    固定大小的图像塞给CNN,CNN输出固定大小的特征向量,这些特征向量将后续的分类和回归映射过来的特征向量大小不固定,所以这些特征向量塞给SPP层,SPP层接收任何大小的输入,输出固定大小的特征向量,再塞给FC层
    这里每个候选区域是需要单独过一下CNN,2000个候选区域过2000次CNN,耗费时间啊经过映射+SPP转换,简化了计算,速度/精确度也上去了
    • SPPnet对R-CNN最大的改进就是特征提取步骤做了修改,其他模块仍然和R-CNN一样。特征提取不再需要每个候选区域都经过CNN,只需要将整张图片输入到CNN就可以了,ROI特征直接从特征图获取。和R-CNN相比,速度提高了百倍。

    • SPPnet缺点也很明显,CNN中的conv层在微调时是不能继续训练的。它仍然是R-CNN的框架,离我们需要的端到端的检测还差很多。既然端到端如此困难,那就先统一后面的几个模块吧,把SVM和边框回归去掉,由CNN直接得到类别和边框可不可以?于是就有了Fast R-CNN。

    展开全文
  • sppnet

    2017-12-08 18:45:14
    R-CNN 作为CNN引入目标检测的开篇之作,后来又出现了sppnet ,fast R-CNN,faster R-CNN等一系列目标检测算法,本次主要学习的是sppnet 首先介绍一下R-CNN的流程: 每张图片通过selectivesearch选出大约2000张候选框...

    1.Introduction

             R-CNN 作为CNN引入目标检测的开篇之作,后来又出现了sppnet ,fast R-CNN,faster R-CNN等一系列目标检测算法,本次主要学习的是sppnet

             首先介绍一下R-CNN的流程:

             每张图片通过selectivesearch选出大约2000张候选框,每个候选框单独输入CNN做卷积操作,在使用SVM分类,以及最后位置的精修。sppnet就提出能不能在整张图上提取候选框特征,这样在整幅图上只进行一次卷积。

             总的过程还是:使用selectivesearch得到候选区域---CNN提取候选区域特征---分类------位置的精修。其中一个亟待解决的就是如何将原始图像的候选区域映射到特征图,在后面我会说到这个问题。第二个问题就是特征区域在特征图上对应得维度不能满足全连接层的输入怎么办?

    之前流行的cnn网络一般都需要一个固定的输入尺寸,例如:alexnet(224*224)。而固定的尺寸一般都是通过crop和warp得到,crop可能会获取不到完整的物体,warp可能会导致物体的扭曲,这两种方法都有可能导致识别精确率的下降。 cnn之所以需要一个固定的输入尺寸,是因为最后的全连接层,卷积层并不需要固定的图片尺寸。因此本文介绍了spp 层来去除神经网络对固定尺寸的限制。我们在最后一个卷积层之后加上spp层,然后是全连接层。这样在网络的开始就不需要对图片进行裁剪(crop)或者扭曲(warp)。

    下面是spp-net网络结构:


     spp有几个突出的优点:

     (1)spp能在输入尺寸任意的情况下产生固定大小的输出。
     (2)spp使用多层次的空间箱(bin),而滑动窗口池化只用了一个窗口尺寸。多层次池化对物体的变形十分鲁棒

     (3)由于输入尺寸的灵活性,spp可以池化从各种尺度抽取出特征。

             spp-net不仅在测试阶段允许任意尺寸的输入能够产生表示,也允许在训练阶段有各种尺度,多尺寸训练可以提高缩放不变性以及减少过拟合。我们开发了一个简单的多尺度训练方法: 为了使一个单一网络可以接受不同尺寸的输入,我们通过共享所有参数的多个网络来近似它,这些网络中的每一个都是使用固定输入大小来训练。在每一个epoch,使用一个给定输入大小去训练网络,下一个epoch时切换到另一个输入大小。实验表明,这种多尺度训练比传统的但尺度训练一样收敛,并导致更好的测试精度。(我觉得应该就是同一个网络在不同的epoch切换不同的输入尺度)

     spp-net在图像检测方面也表现优异。目前领先的物体检测方法时R-CNN,但时R-CNN使用selctivesearch方式选择了多个候选区域,对于每个候选区域都会单独使用一次卷积神经网络,因此是费时的。而在本文中,我们只需要在整张图上运行一次卷积神经网络,然后使用spp-net在特征图上抽取特征,这个方法大大降低了耗时。


    2.空间金字塔池化层( the spatial pooling layer )

    要适应不同的尺寸输入,我们在最后的卷积层之后加上spp 层。因为对于不同的尺寸输入,在卷积层之后会有不同尺寸的输入,我们通过spp层替换掉最后的池化层,为全连接层获得固定的输入大小的向量。金字塔的输出是KM维向量,M代表块的数量,K代表最后一层卷积层的过滤器的数量,这个固定维度的向量就是全连接层的输入。



    下面给出一个对空间金字塔具体解释的事例,如下图:


    所谓金字塔池化,就是沿着金字塔的底端向顶端一层一层做池化。对于一个给定尺寸的图像,我们先计算空间金字塔池化所需要的块的大小,试想一个尺寸是a*a(也就是13*13)的conv5之后的特征图,对于n*n块的金字塔级,我们实现一个滑动窗口池化的过程,windows=上取整[a/n],  stride=下取整[a/n],对于L层金字塔,我们实现 L个这样的层,然后将L个层的输出进行连接输出给全连接层。

            下图中是一个3层金字塔(分别是1*1块,2*2块,3*3块)的实例,一个conv5后特征图尺寸为13*13*256,如果像下图这样将feature map分成1*1(金字塔底座),2*2(金字塔中间),3*3(金字塔顶)三张子图,分别做max pooling后,当然每个池化的stride和filter大小可能不同,出来的特征是(1*1+2*2+3*3)*256 =3584维,单个窗口将产生输出向量3584维。 这个表示将传递给全连接层。无论输入尺度是多大,都得到固定的输出尺度,即3584,只不过每次窗口大小可能不同,就像之前所说的那样。输入是a*a,输出是n*n,windows=上取整[a/n],  stride=下取整[a/n],

      



    3.训练网络

            我们实现了但尺度的训练和多尺度训练,但尺度训练是224*224大小,多尺度训练先考虑了两个尺寸:180*180,224*224,我们使用的是缩放,而不是裁剪,即把224*224缩放到180*180,这样不同尺度的区域仅仅是分辨率的不同,内容和布局上并没有不同。对于180*180的网络,我们实现了另一个固定尺寸的网络,conv5输出的特征图是a*a=10*10,windows=上取整[a/n],  stride=下取整[a/n],因此,最终180网络的空间金字塔的输出大小和224*224网络的金字塔输出大小相同。多尺度训练时,为了降低一个从一个网络到另一个网络的开销,我们再每个网络上训练一个完整的epoch(权重保留),实验中,我们发现多尺度训练的收敛速度和但尺寸差不多。

           多尺度训练主要是 为了保证充分利用已经优化好的固定尺寸网络的同时,模拟不同的输入尺寸。除了上述两个尺度的实现,我们还在每个epoch中测试了不同的输入大小,从180到224均匀选取。

           当然,上述单尺度或者多尺度只是针对于训练。在测试阶段,是直接对各种尺寸的图像应用spp-net的。


    4.实验结果:

      (1)多层次池化提升准确率

     (2)多尺寸训练提升准确率

            (3)全图像表示提升准确率


    5.目标检测

          使用spp进行目标检测,先用selectiveserach的fast模式对每张图片获取2000个候选区域。不过,不像R-CNN把每个候选区域送入神经网络提取特征,而是把整张图提一次特征,再把候选框映射到conv5层上,由于候选框的大小不同,映射到conv5后仍有不同,因此需要spp层提取相同的维度,再进行分类和回归,后面的与R-CNN类似。由于spp-net只需要对整张图提取一次特征,剩下的只需要再conv5层上操作就可以了。

            回答开头的第一个问题,如何将原始图像的候选区域映射到特征图?

    此处的映射概念跟overfeat网络是一样的,overfeat也是从卷积特征图中抽取特征,不同的是overfeat需要预定义好窗口尺寸,而spp-net的特征抽取可以在任意尺寸的深度卷积特征图上。

    这里我对映射的概念做出解释,如下图:

      第一行中对14*14*3的图片进行卷积,池化,最后获得了1*1*4,也就是整张图被提取相应的特征维度为1*1*4

              第二行中对16*16*3的图片检测,先使用14*14卷积核卷积,经过一系列步骤获得2*2*4,对于左上角蓝色的部分,最终被映射为2*2*4的左上角的1*1*4部分, 也就是它对应的特征图。步长为2,窗口向右滑动,蓝色的部分最终被映射为右上角1*1*4部分。。。。

             由于第二行对一张16*16的图片 分成了4部分,每部分分别进行了运行了一次卷积神经网络,这样是非常耗时的。

             第三行就引出了我们不需要把图片分成多个子集,而是把他们作为整张图输入给卷积神经网络进行计算,这样输入图片的区域还是会对应feature map上相应的区域,这种映射是一一对应的。也就产生了为什么sppnet中可以对整张图进行卷积,而不同的候选区域可以映射到conv5层(特征图)的不同位置了。


         




    展开全文
  • SPPNET

    2018-05-07 14:54:00
    SPPNet Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 文章地址:https://arxiv.org/pdf/1406.4729.pdf 摘要 沿着上一篇RCNN的思路,我们继续探索目标检测的痛点,其中RCNN使用...

    SPPNet

    Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    文章地址:

    摘要

    沿着上一篇RCNN的思路,我们继续探索目标检测的痛点,其中RCNN使用CNN作为特征提取器,首次使得目标检测跨入深度学习的阶段。但是RCNN对于每一个区域候选都需要首先将图片放缩到固定的尺寸(224*224),然后为每个区域候选提取CNN特征。容易看出这里面存在的一些性能瓶颈:

    • 速度瓶颈:重复为每个region proposal提取特征是极其费时的,Selective Search对于每幅图片产生2K左右个region proposal,也就是意味着一幅图片需要经过2K次的完整的CNN计算得到最终的结果。
    • 性能瓶颈:对于所有的region proposal防缩到固定的尺寸会导致我们不期望看到的几何形变,而且由于速度瓶颈的存在,不可能采用多尺度或者是大量的数据增强去训练模型。

    但是为什么CNN需要固定的输入呢?CNN网络可以分解为卷积网络部分以及全连接网络部分。我们知道卷积网络的参数主要是卷积核,完全能够适用任意大小的输入,并且能够产生任意大小的输出。但是全连接层部分不同,全连接层部分的参数是神经元对于所有输入的连接权重,也就是说输入尺寸不固定的话,全连接层参数的个数都不能固定。

    何凯明团队的SPPNet给出的解决方案是,既然只有全连接层需要固定的输入,那么我们在全连接层前加入一个网络层,让他对任意的输入产生固定的输出不就好了吗?一种常见的想法是对于最后一层卷积层的输出pooling一下,但是这个pooling窗口的尺寸及步伐设置为相对值,也就是输出尺寸的一个比例值,这样对于任意输入经过这层后都能得到一个固定的输出。SPPnet在这个想法上继续加入SPM的思路,SPM其实在传统的机器学习特征提取中很常用,主要思路就是对于一副图像分成若干尺度的一些块,比如一幅图像分成1份,4份,8份等。然后对于每一块提取特征然后融合在一起,这样就可以兼容多个尺度的特征啦。SPPNet首次将这种思想应用在CNN中,对于卷积层特征我们也先给他分成不同的尺寸,然后每个尺寸提取一个固定维度的特征,最后拼接这些特征不就是一个固定维度的输入了吗?

     

    上面这个图可以看出SPPnet和RCNN的区别,首先是输入不需要放缩到指定大小。其次是增加了一个空间金字塔池化层,还有最重要的一点是每幅图片只需要提取一次特征。

     

    通过上述方法虽然解决了CNN输入任意大小图片的问题,但是还是需要重复为每个region proposal提取特征啊,能不能我们直接根据region proposal定位到他在卷积层特征的位置,然后直接对于这部分特征处理呢?答案是肯定的,我们将在下一章节介绍。

    网络细节

    • 卷积层特征图

    SPPNet通过可视化Conv5层特征,发现卷积特征其实保存了空间位置信息(数学推理中更容易发现这点),并且每一个卷积核负责提取不同的特征,比如C图175、55卷积核的特征,其中175负责提取窗口特征,55负责提取圆形的类似于车轮的特征。我们可以通过传统的方法聚集这些特征,例如词袋模型或是空间金字塔的方法。
    • 空间金字塔池化层

    上图的空间金字塔池化层是SPPNet的核心,其主要目的是对于任意尺寸的输入产生固定大小的输出。思路是对于任意大小的feature map首先分成16、4、1个块,然后在每个块上最大池化,池化后的特征拼接得到一个固定维度的输出。以满足全连接层的需要。不过因为不是针对于目标检测的,所以输入的图像为一整副图像。
    • SPPNet应用于图像分类

    SPPNet的能够接受任意尺寸图片的输入,但是训练难点在于所有的深度学习框架都需要固定大小的输入,因此SPPNet做出了多阶段多尺寸训练方法。在每一个epoch的时候,我们先将图像放缩到一个size,然后训练网络。训练完整后保存网络的参数,然后resize 到另外一个尺寸,并在之前权值的基础上再次训练模型。相比于其他的CNN网络,SPPNet的优点是可以方便地进行多尺寸训练,而且对于同一个尺度,其特征也是个空间金字塔的特征,综合了多个特征的空间多尺度信息。
    • SPPNet应用于目标检测

    SPPNet理论上可以改进任何CNN网络,通过空间金字塔池化,使得CNN的特征不再是单一尺度的。但是SPPNet更适用于处理目标检测问题,首先是网络可以介绍任意大小的输入,也就是说能够很方便地多尺寸训练。其次是空间金字塔池化能够对于任意大小的输入产生固定的输出,这样使得一幅图片的多个region proposal提取一次特征成为可能。SPPNet的做法是:
    1. 首先通过selective search产生一系列的region proposal,参见:目标检测(1)-Selective Search - 知乎专栏
    2. 然后训练多尺寸识别网络用以提取区域特征,其中处理方法是每个尺寸的最短边大小在尺寸集合中:

    训练的时候通过上面提到的多尺寸训练方法,也就是在每个epoch中首先训练一个尺寸产生一个model,然后加载这个model并训练第二个尺寸,直到训练完所有的尺寸。空间金字塔池化使用的尺度为:1*1,2*2,3*3,6*6,一共是50个bins。

    3.在测试时,每个region proposal选择能使其包含的像素个数最接近224*224的尺寸,提取相 应特征。

    由于我们的空间金字塔池化可以接受任意大小的输入,因此对于每个region proposal将其映射到feature map上,然后仅对这一块feature map进行空间金字塔池化就可以得到固定维度的特征用以训练CNN了。关于从region proposal映射到feature map的细节我们待会儿去说。

    4.训练SVM,BoundingBox回归

    这部分和RCNN完全一致,参见:目标检测(2)-RCNN - 知乎专栏

    • 实验结果

    其中单一尺寸训练结果低于RCNN1.2%,但是速度是其102倍,5个尺寸的训练结果与RCNN相当,其速度为RCNN的38倍。
    • 如何从一个region proposal 映射到feature map的位置?

    SPPNet通过角点尽量将图像像素映射到feature map感受野的中央,假设每一层的padding都是p/2,p为卷积核大小。对于feature map的一个像素(x',y'),其实际感受野为:(Sx‘,Sy’),其中S为之前所有层步伐的乘积。然后对于region proposal的位置,我们获取左上右下两个点对应的feature map的位置,然后取特征就好了。左上角映射为:

     

    右下角映射为:

     

     

    当然,如果padding大小不一致,那么就需要计算相应的偏移值啦。

     

    • 存在的不足

    和RCNN一样,SPP也需要训练CNN提取特征,然后训练SVM分类这些特征。需要巨大的存储空间,并且分开训练也很复杂。而且selective search的方法提取特征是在CPU上进行的,相对于GPU来说还是比较慢的。针对这些问题的改进,我们将在Fast RCNN以及Faster RCNN中介绍,敬请期待。

    展开全文
  • SPPNet

    万次阅读 2015-07-10 16:57:48
    CNN网络需要固定尺寸的图像输入,SPPNet将任意大小的图像池化生成固定长度的图像表示,提升R-CNN检测的速度24-102倍。固定图像尺寸输入的问题,截取的区域未涵盖整个目标或者缩放带来图像的扭曲。事实上,CNN的卷...

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

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

    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如下表所示,第一个提出多尺度输入图像训练网络
    这里写图片描述

    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对比实验结果如下:
    这里写图片描述

    展开全文
  • sppnet目标检测

    2017-04-02 15:53:53
    sppnet,用于目标检测
  • 5.3 SPPNet

    2020-05-08 18:58:04
    5.3 SPPNet 学习目标 目标 知道SPPNet与RCNN的对比特点 掌握空间金字塔池化(spatial pyramid pooling)的原理和作用 掌握SPPNet的训练过程以及测试结果对比 知道SPPNet优缺点总结 ...
  • SPPnet 详解

    千次阅读 2018-08-06 22:24:11
    RCNN系列:RCNN,SPPNet,Fast RCNN,Faster RCNN,R-FCN。    前不久刚刚看完rcnn和fast rcnn,对目标检测的学习更进一步。sppNet简介: 作者: 何凯明  2016年加入成为FAIR(facebook 微软研究员),2011...
  • SPPnet详解

    2020-12-11 14:22:41
    RCNN系列:RCNN,SPPNet,Fast RCNN,Faster RCNN,R-FCN。 作者是何凯明 SPPNet出现的原因 之前的网络,比如LeNet,AlexNet,ZF,VGG等,它们的输入都是固定大小的,为什么要固定大小呐?原因就在最后连接的全连接...
  • SPPNet学习

    2021-10-20 21:28:30
    SPPNet 论文目的: 所有的神经网络都是需要输入固定尺寸的图片,比如224224(ImageNet)、3232(LenNet)、96*96等。这样对于我们希望检测各种大小的图片的时候,需要经过crop,或者warp等一系列操作,这都在一定程度...
  • 2.5 SPPNet

    2019-10-11 15:05:11
    目录2.5 SPPNet2.5.1 SPP 的目的2.5.2 SPP 架构2.5.3 SPP 用于目标检测2.5.4 候选区域映射参考资料 2.5 SPPNet SPP(Spatial Pyramid Pooling,空间金字塔池化) 由何凯明团队在 ILSVEC 2014 中提出,利用空间金字塔...
  • SPPnet 笔记

    2020-04-21 22:28:53
    SPPnet(ECCV2014)->Fast RCNN(ICCV2015)->Faster RCNN(NIPS2015) 现有的深度卷积网络需要固定大小的输入图片(比如 224×224224\times 224224×224),这个要求人工设计的痕迹过于明显,并且可能会降低一...
  • SPPNet网络模型

    2019-12-25 21:20:19
    上篇文章详细阐述了R-CNN网络模型,本篇本章本来准备阐述Fast-RCNN模型的,介于SPP-Net模型有许多技巧性的技术... SPPNet论文:https://arxiv.org/abs/1406.4729 SPPNet论文翻译:https://blog.csdn.net/mengduan...
  • RCNN和SPPnet

    2021-05-06 09:49:27
    Rcnn和SPPnet 先区域推荐然后进行目标分类:rcnn sppnet fastrcnn fasterrcnn 端到端的目标检测 一个网络一步到位 yolo ssd 输出物体位置 目标检测 :输入图片 输出物体类别物体的位置坐标 xmin ymin xmax ymax 左上...
  • SPPnet资源转载

    2020-11-01 19:43:00
     在SPPnet的那个时候一般CNN指的是卷积层加全连接层的网络,而卷积层对输入的大小没有限制,全连接层却对输入的大小有着限制。所以作者提出SPPnet的目的就是作为一个plugin-module去改进CNN网络。我在学习的时候看...
  • SSD+LeNet+SPPNet

    2019-04-17 15:19:53
    本资源包括目标检测SSD算法的PPT,LeNet的PPT以及空间金字塔SPPNet的PPT。
  • 深度学习——SPPNet原理

    千次阅读 2018-08-14 13:09:09
    从R-CNN 到Fast R-CNN,有必要了解下SPPNet,其全称为Spatial Pyramid Pooling Convolutional Networks(空间金字塔池化卷积网络)。 它将CNN的输入从固定尺寸改进为任意尺寸,例如在CNN结构中,输入图像的尺寸往往...
  • 目标检测:SPPNet

    2020-03-25 23:00:11
    日萌社 ...5.3 SPPNet 学习目标 目标 知道SPPNet与RCNN的对比特点 掌握空间金字塔池化(spatial pyramid pooling)的原理和作用 掌握SPPNet的训练过程以及测试结果对比 知道SPPNet优缺点总结 ...
  • SPPNet论文解析

    2020-07-25 15:29:10
    Spatial Pyramid Pooling Layer四、SPPNet目标检测算法流程五、总结六、参考文献 本篇博客将要解析的论文是Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition,论文地址为:...
  • SPPNet学习笔记

    2020-10-04 13:42:39
    上一期的最后讲到了R-CNN的训练时间长的缺点,这一期先介绍一下改进的SPPNet. 论文相关信息 论文全名为《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》(论文链接),于2015年...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,807
精华内容 1,122
关键字:

sppnet