目标检测,图像分类中的spp layer
常规CNN中的问题
-
卷积层虽然不要求网络输入图像的大小固定,但是后面的全连接层要求输入图像的大小size是固定的(因为全连接层的输入特征数是固定,网络搭建时的weight权重参数),所以当尺寸大小不同的图像输入到网络中,得到的feature map大小是不同的(根据卷积图像输入输出计算可知)。
-
对一个固定的CNN网络,最后的全连接层的输入时一个固定的值,为了解决这种对输入图像大小的限制,引入spp网络算法,将image——>crop/warp——>conv layers——>fc layers——output的过程换为
image——>conv layers——>spp layers——>fc layers——>output的处理过程。
spp(金字塔池化)的原理
-
spp的做法是使用多个不同大小的sliding window pooling对卷积输出的feature map进行池化,然后将这多个结果进行concat合并得到固定长度的输出。
-
网上找个图片,可以看出SPP层就是在前一卷积层得到的feature maps上进行了3个池化操作(实际情况根据自己设定的池化个数,控制全连接层的输入)。最右边的就是原图像,中间的是把图像分成大小是4的特征图,最右边的就是把图像分成大小是16的特征图。这样每一个feature map就会变成固定的21(16+4+1)个feature maps。