如何理解卷积神经网络空洞卷积

如何理解空洞卷积(dilated convolution)? - 知乎462被浏览16345分享邀请回答117 条评论分享收藏感谢收起如何理解空洞卷积(dilated convolution)?
来源:知乎
作者:谭旭
简单讨论下dilated conv,中文可以叫做空洞卷积或者扩张卷积。首先介绍一下dilated conv诞生背景[4],再解释dilated conv操作本身,以及应用。
首先是诞生背景,在图像分割领域,图像输入到CNN(典型的网络比如FCN[3])中,FCN先像传统的CNN那样对图像做卷积再pooling,降低图像尺寸的同时增大感受野,但是由于图像分割预测是pixel-wise的输出,所以要将pooling后较小的图像尺寸upsampling到原始的图像尺寸进行预测(upsampling一般采用deconv反卷积操作,deconv可参见知乎答案如何理解深度学习中的deconvolution networks?),之前的pooling操作使得每个pixel预测都能看到较大感受野信息。因此图像分割FCN中有两个关键,一个是pooling减小图像尺寸增大感受野,另一个是upsampling扩大图像尺寸。在先减小再增大尺寸的过程中,肯定有一些信息损失掉了,那么能不能设计一种新的操作,不通过pooling也能有较大的感受野看到更多的信息呢?答案就是dilated conv。
下面看一下dilated conv原始论文[4]中的示意图:
(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的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。在图像需要全局信息或者语音文本需要较长的sequence信息依赖的问题中,都能很好的应用dilated conv,比如图像分割[3]、语音合成WaveNet[2]、机器翻译ByteNet[1]中。简单贴下ByteNet和WaveNet用到的dilated conv结构,可以更形象的了解dilated conv本身。
下面再阐述下deconv和dilated conv的区别:
deconv的具体解释可参见如何理解深度学习中的deconvolution networks?,deconv的其中一个用途是做upsampling,即增大图像尺寸。而dilated conv并不是做upsampling,而是增大感受野。可以形象的做个解释:
对于标准的k*k卷积操作,stride为s,分三种情况:
1. s&1,即卷积的同时做了downsampling,卷积后图像尺寸减小;
2. s=1,普通的步长为1的卷积,比如在tensorflow中设置padding=SAME的话,卷积的图像输入和输出有相同的尺寸大小;
3. 0&s&1,fractionally strided convolution,相当于对图像做upsampling。比如s=0.5时,意味着在图像每个像素之间padding一个空白的像素后,stride改为1做卷积,得到的feature map尺寸增大一倍。
而dilated conv不是在像素之间padding空白的像素,而是在已有的像素上,skip掉一些像素,或者输入不变,对conv的kernel参数中插一些0的weight,达到一次卷积看到的空间范围变大的目的。
当然将普通的卷积stride步长设为大于1,也会达到增加感受野的效果,但是stride大于1就会导致downsampling,图像尺寸变小。大家可以从以上理解到deconv,dilated conv,pooling/downsampling,upsampling之间的联系与区别,欢迎留言沟通交流。
[1] Kalchbrenner, Nal, et al. "Neural machine translation in linear time." arXiv preprint arXiv: (2016).
[2] Oord, Aaron van den, et al. "Wavenet: A generative model for raw audio." arXiv preprint arXiv: (2016).
[3] Long J, Shelhamer E, Darrell T, et al. Fully convolutional networks for semantic segmentation[C]. Computer Vision and Pattern Recognition, 2015.
[4] Yu, Fisher, and Vladlen Koltun. "Multi-scale context aggregation by dilated convolutions." arXiv preprint arXiv: (2015).
转自: 全球人工智能
关于 Imagination微信号
权威发布有关Imagination公司CPU,GPU以及连接IP、无线IP最新资讯,提供有关物联网、可穿戴、通信、汽车电子、医疗电子等应用信息,每日更新大量信息,让你紧跟技术发展,欢迎关注!伸出小手按一下二维码我们就是好朋友!
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点如何通俗易懂地解释卷积? - 知乎4013被浏览613232分享邀请回答64 条评论分享收藏感谢收起如何通俗易懂地解释卷积? - 知乎4013被浏览613232分享邀请回答0添加评论分享收藏感谢收起对卷积的一点理解 - TiffanyZhou - 博客园
If you're absent from my struggle,then,don't be present for my success
在图像处理中,经常会遇到高斯光滑的操作,大部分人也都知道将图像与高斯函数卷积就实现了高斯光滑的操作,但是为什么?
卷积公式如下:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
从公式中可以看出,卷积是两个函数的乘积的积分,其中\tau的范围即是函数f的定义域。这里假定函数f即是我们的图像函数。
由积分的意义我们可以知道,如果只对f(x)进行积分,那么首先对f(x)进行无限分割,然后求和,即:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
现在,对于卷积的计算,我们也是先对f(x)进行分割,然后对于分割后的每一个点都乘以一个值,即:(这里对于每一次计算,t作为一个常量看待)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
从上面的积分角度的理解可以看出,我们相当于对f(x)进行了一个加权求和。
现在我们看看当函数g为高斯函数(考虑均值u=0)的情况,显然对于每一个t,当\tau=t时,函数值g最大,也就是f(t)这个点对应的权重最大,也可以说它的重要性最大,所以,我们给它最大的权重。
在处理图像时,我们通常设置一个平滑窗口,例如3*3窗口,5*5窗口等,显然图像中的每个像素点(除了边缘点)都是以这个点为中心的窗中各个像素的加权平均,这样对每个点的像素值的求取都考虑到了邻域中点的像素值,这样就会使每个点的像素值与其邻域中的像素值的差值减少,达到了平滑的效果
阅读(...) 评论()
Copyright & TiffanyZhou
Powered by:
模板提供:

我要回帖

更多关于 对卷积的理解 的文章

 

随机推荐