SPP Net

作者: yalesaleng | 来源:发表于2017-06-27 15:50 被阅读56次

    SPPnet

    R-CNNvsSPP net:

    SPP net的优势:

    1.SPP可以生成固定大小的向量,以此适应fc层所要求的固定输入

    2.多个pooling窗口,可以取出不同层次的特征

    3.可以不再限制输入图片的尺寸

    4.对于每张图片只需要跑一遍CNN

    SPP net的大体步骤:

    1.假设原图输入是224*224,5个conv layers(以5层卷积为例)卷积出来的输出是13*13*256(因为最后一层共256个filter),即13*13大小的共256张feature maps;

    2.spp一共分3层:

    第一层是对整张feature map做池化(最大、均值等);

    第二层是将整张feature map划分为2*2=4个块,分别对每个块做池化;

    第三层是将整张feature map划分为4*4=16个块,分别对每个块做池化。

    注意!以上步骤每一步的max pooling的window size和stride都不同,具体的计算公式是:win= a/n(上舍入), str = a/n(下舍入),其中a是原图经过5层卷积后得到的feature map的大小,如果是第三层那么n = 3,以此类推。

    举个栗子:当a = 13时,win = 13/3 = 4.333 ~=5(因为上舍入),str = 13/3 = 4.3333 ~=4(因为下舍入)。所以了第三层的max pooling的sliding window大小就是5*5,stride就是4*4。以此类推。

    当然了,每一张图的max pooling也不一样。

    举个栗子:当输入图像大小= 180*180时,经过5层卷积后得到的feature map的大小就是10*10。那么第三层的max pooling的sliding window大小就是a/n = 10/3 = 3.333~=4,stide就是3。以此类推。

    具体内容请参考原文:

    当输入是224*224大小的图像时,5层conv后得到13*13:

    当输入是180*180大小的图像时,5层conv后得到10*10:

    通过以上步骤,最后可获得1+4+16=21个池化后的特征。

    总的来说,在固定spp层数的前提下,就是根据图像的具体大小来设计具体的max pooling。最终保证输入到fc层的结果是相同维度大小的。

    相关文章

      网友评论

        本文标题:SPP Net

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