美文网首页
Spatial Pyramid Pooling 详解

Spatial Pyramid Pooling 详解

作者: Wangcy | 来源:发表于2017-07-30 20:40 被阅读0次

    问题抛出:卷积神经网络中,当输入不是固定size时,如何解决?

    方案1:对输入进行resize,统一到同一大小。

    方案2:取消全连接层,对最后的卷积层global average polling(GAP。

    方案3:在第一个全连接层前,加入SPP layer。本文要介绍的。

    p.s.以上方案还要实测,具体哪种方案比较好,强烈推荐方案2,3。


    以VGG16网络为例,如下图

    vgg16 模型

    现有两种规格输入:224*224*3和180*180*3

    准备在全连接层前加入spp net,也就是上图7*7*512那一层后。

    224*224*3:全连接层前卷积层大小7*7*512

    180*224*3:全连接层前卷积层大小5*5*517

    由于这样不同大小卷积层全连接到1*1*4096,权值W是不一样的,所以 要统一全连接的输入大小。

    SPP layer方法:

    用不同size,stride的pooling layer,对全连接层前的卷积层进行pooling,然后做flatten。见下图

    spp layer

    输入7*7*512时:

    pooling layer1(输出4*4*512): size = 7/4(向上取整)=2, stride = 7/4(向下取整)=1

    pooling layer2(输出2*2*512): size = 7/2(向上取整)=4,stride = 7/2(向下取整)=3 

    pooling layer3(输出1*1*512):  size = 7/1(向上取整)=7,stride = 7/1(向下取整)=7

    然后做flatten,输出(4*4+2*2+1)*512 = 21*512

    输入5*5*512时:

    pooling layer1(输出4*4*512): size = 5/4(向上取整)=2, stride = 5/4(向下取整)=1

    pooling layer2(输出2*2*512): size = 5/2(向上取整)=3,stride = 5/2(向下取整)=2

    pooling layer3(输出1*1*512):  size = 5/1(向上取整)=5,stride = 5/1(向下取整)=5

    然后做flatten,输出(4*4+2*2+1)*512=21*512

    这样全连接层输入都是21*512,是跟网络输入图像size大小无关的。

    相关文章

      网友评论

          本文标题:Spatial Pyramid Pooling 详解

          本文链接:https://www.haomeiwen.com/subject/pcyklxtx.html