深度学习中的卷积(conv)和空洞卷积(dilated conv)

最近做inpating的相关可以,出现了一个名字,叫dilated conv操作,不是很明白,现在把查阅资料后的理解简单记录一下.

1.参数比较:
构建一个卷积层,最核心的是卷积核的尺寸和stride的大小,而空洞卷积最核心的参数是卷积核尺寸和rate的大小.
当stride=1时候,和rate=1是一样的效果.

2.功能比较
那什么时候会有区别呢,就是在多个卷积连用,比如做encode操作时候,步长stride>=2,一直卷积下去,肯定会有信息缺失,做decode操作重构的时候,对于细节的重构肯定会不理想.这种情况就可以通过多个dilated的连用来避免.
这里引用知乎上一个讲解,我感觉很好:
深度学习中的卷积(conv)和空洞卷积(dilated conv)_第1张图片

下面是知乎的解释:
(a)图对应3x3的1-dilated conv,和普通的卷积操作一样,(b)图对应3x3的2-dilated conv,实际的卷积kernel size还是3x3,但是空洞为1,也就是对于一个7x7的图像patch,只有9个红色的点和3x3的kernel发生卷积操作,其余的点略过。也可以理解为kernel的size为7x7,但是只有图中的9个点的权重不为0,其余都为0。 可以看到虽然kernel size只有3x3,但是这个卷积的感受野已经增大到了7x7(如果考虑到这个2-dilated conv的前一层是一个1-dilated conv的话,那么每个红点就是1-dilated的卷积输出,所以感受野为3x3,所以1-dilated和2-dilated合起来就能达到7x7的conv),(c)图是4-dilated conv操作,同理跟在两个1-dilated和2-dilated conv的后面,能达到15x15的感受野。对比传统的conv操作,3层3x3的卷积加起来,stride为1的话,只能达到(kernel-1)*layer+1=7的感受野,也就是和层数layer成线性关系,而dilated conv的感受野是指数级的增长。

这里大概就应该明白了,dilated conv的连接使用,会让感受野指数变大,而且不损失信息,也就是经常看到的一个总结:’dilated的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息’.

我理解的也就这些,具体还得结合inpainting或者分割的论文和代码去理解.

还有一个更加详细的解读博客:https://blog.csdn.net/silence2015/article/details/79748729
知乎链接:https://www.zhihu.com/question/54149221

你可能感兴趣的:(深度学习)