【深度学习】为什么CNN中的卷积核大小都是奇数?

参考资料:
知乎-为什么CNN中的卷积核一般都是奇数奇数,没有偶数偶数的?
深度学习: 卷积核 为什么都是 奇数size
【AI-1000问】为什么CNN中的卷积核半径都是奇数?

主要有两点原因:

1.便于进行padding
在卷积时,若要卷积前后的尺寸不变。需要对原图进行padding。

假设图像的大小,也就是被卷积对象的大小为 n ∗ n n*n nn,卷积核大小为 k ∗ k k*k kk

当padding的幅度设为 k − 1 2 \frac{k-1}{2} 2k1时,卷积后的输出就为 n − k + 2 ∗ k − 1 2 1 + 1 = n \frac{n-k+2*\frac{k-1}{2}}{1}+1=n 1nk+22k1+1=n,即卷积输出为n*n

保证了卷积前后尺寸不变。但是如果k是偶数的话, k − 1 2 \frac{k-1}{2} 2k1就不是整数了。

这样做保证 锚点 刚好在中间,方便以模块中心为标准进行滑动卷积,避免了位置信息发生 偏移

2.容易找到卷积锚点
在像素这个领域里,偶数框其实是没有一个“绝对的物理中心”的

奇数相对于偶数,有中心点,对边沿、对线条更加敏感,可以更有效的提取边沿信息。保证了 padding 时,图像的两边依然相对称

偶数也可以使用,但是效率比奇数低。在数以万计或亿计的计算过程中,每个卷积核差一点,累计的效率就会差很多。


如果只是想移动,那默认左上角为中心点也是可以的~

现在大家都那么约定俗成罢了

更多内容见参考资料里知乎上的讨论。

猜你喜欢

转载自blog.csdn.net/mooneve/article/details/96327854
今日推荐