为什么CNN中的卷积核一般都是奇数

为什么CNN中的卷积核一般都是奇数
 

为什么CNN中的卷积核一般都是奇奇数*奇数,没有偶数*偶数的?

咱们经常见到的多为 3 * 3、5*5;怎么从来没有见过 4*4,6*6 之类的卷积核?无论奇数 or 偶数,都是能够做卷积的呀

之前学习的时候真的没有想过这些问题,再复习时,觉得全是 Why?说明之前还是没有搞明白

从AlexNet模型的11*11、5*5、3*3,还有VGG开始统一卷积核为3*3,再到之后的模型,都没有用过 偶数*偶数的卷积核,说明它是有问题的,或者是没有 奇数*奇数的方便

这一串的问题,原因有两个:

1.保证了 锚点 刚好在中间

       锚点也就是卷积核滑动时的一个参考点(相对于图像来说,自己理解的,不保证正确,没找到相关资料)。奇数过滤器的锚点正好在中心位置,避免了位置信息发生偏移,如果卷积核是偶数*偶数时,这时候就没有办法确定了锚点了。让谁是锚点,卷积核上下左右移动之后,位置信息都会发生偏移。

2. same convolution,偶数卷积核会出现问题

       说点题外话

       做卷积时会出现两种问题

          1)图像越来越小;

          2)图像边界信息丢失,即有些图像角落和边界的信息发挥作用较少

       所以有时候我们会在图像的周围填补 0 ,一来减缓图像变小的速度,二来,保证边界信息不丢失。甚至有时候会让输入输出的大小一样,也就是 same convolution 比如下图的VGG模型,卷积时输入输出的大小是保持不变的,只有在池化层是才会缩减一半。

 卷积之后的尺寸大小计算公式为:

输入图片大小 W×W
Filter大小 F×F
步长strides  S
padding的像素数 P
输出大小为NxN
于是我们可以得出

                                                                     

这里写一下我的理解:公式中Padding 为啥要乘以 2 ,我的理解为 在周围填 0 的话,左右(上下)两边都填补 0 才有意义,保证是对称的

做same convolution,步长S=1  Padding  P = (F-1)/ 2,也即是:需要在原图边长基础上padding F-1个 0 (这个应该很好理解),当卷积核为偶数时,P就不能保证平均分配到卷积两边  。



posted @ 2020-01-05 20:35  yumoye  阅读(1311)  评论(1编辑  收藏  举报