anyuan2002.com - vwin网

查找: 您的方位主页 > 网络频道 > 阅览资讯:卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

2019-04-03 06:42:15 来历:www.anyuan2002.com 【

1.前语

传统的CNN网络只能给出图画的LABLE,可是在许多情况下需要对辨认的物体进行切割完结end to end,然后FCN呈现了,给物体切割供给了一个非常重要的处理思路,其间心便是卷积与反卷积,所以这儿就具体解说卷积与反卷积。

关于1维的卷积,公式(离散)与核算进程(接连)如下,要记住的是其间一个函数(原函数或许卷积函数)在卷积前要翻转180度

卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

图1

关于离散卷积,f的巨细是n1,g的巨细是n2,卷积后的巨细是n1+n2-1

2.图画卷积

卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

图2

同样地,卷积的时分需要对卷积核进行180的旋转,一起卷积核中心与需核算的图画像素对齐,输出结构为中心对齐像素的一个新的像素值,核算比如如下

卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

图3

这样核算出左上角(即榜首行榜首列)像素的卷积后像素值。

 

给出一个更直观的比如,从左到右看,原像素通过卷积由1变成-8。

卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

图4

在信号处理上,回转180度称作卷积,直接滑动核算称作自相关,在大部分深度学习框架上都没有回转180度的操作。

通过滑动卷积核,就能够得到整张图片的卷积成果,

卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

图5

到了这儿,大致能够了解图画卷积。可是咱们能够看出,通过图画卷积后,新图画的巨细跟本来相同,或许变校图2核算后图画巨细不变,如图5卷积后图画变小是因为没有对所用像素进行卷积核算。可是1维的卷积成果不是变大了吗? 下面临其解说。

 

在matlb中对2维卷积的核算分为了3类,1.full 2.same 3. valid 参阅:https://cn.mathworks.com/help/matlab/ref/conv2.html?requestedDomain=www.mathworks.com

图2对应的卷积便是便是所谓的same,图5对应的便是valid。那么full又是什么呢?如下图

卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

图6

图6中蓝色为原图画,白色为对应卷积所添加的padding,一般悉数为0,绿色是卷积后图片。图6的卷积的滑动是从卷积核右下角与图片左上角堆叠开端进行卷积,滑动步长为1,卷积核的中心元素对应卷积后图画的像素点。能够看到卷积后的图画是4X4,比原图2X2大了,咱们还记1维卷积巨细是n1+n2-1,这儿原图是2X2,卷积核3X3,卷积后成果是4X4,与一维彻底对应起来了。其实这才是完好的卷积核算,其他比它小的卷积成果都是省去了部分像素的卷积。下面是WIKI对应图画卷积后多出部分的解说:

Kernel convolution usually requires values from pixels outside of the image boundaries. There are a variety of methods for handling image edges.意思便是多出来的部分依据实际情况能够有不同的处理办法。(其实这儿的full卷积便是后边要说的反卷积)

 

这儿,咱们能够总结出full,same,valid三种卷积后图画巨细的核算公式:

1.full: 滑动步长为1,图片巨细为N1xN1,卷积核巨细为N2xN2,卷积后图画巨细:N1+N2-1 x N1+N2-1

如图6, 滑动步长为1,图片巨细为2x2,卷积核巨细为3x3,卷积后图画巨细:4x4

2.same: 滑动步长为1,图片巨细为N1xN1,卷积核巨细为N2xN2,卷积后图画巨细:N1xN1

3.valid:滑动步长为S,图片巨细为N1xN1,卷积核巨细为N2xN2,卷积后图画巨细:(N1-N2)/S+1 x (N1-N2)/S+1

如图5,滑动步长为1,图片巨细为5x5,卷积核巨细为3x3,卷积后图画巨细:3x3

 

3.反卷积(后卷积,转置卷积)

这儿说到的反卷积跟1维信号处理的反卷积核算是很不相同的,FCN作者称为backwards convolution,有人称Deconvolution layer is a very unfortunate name and should rather be called a transposed convolutional layer. 咱们能够知道,在CNN中有con layer与pool layer,con layer进行对图画卷积提取特征,pool layer对图画缩小一半挑选重要特征,关于经典的图画辨认CNN网络,如IMAGENET,终究输出成果是1X1X1000,1000是类别品种,1x1得到的是。FCN作者,或许后来对end to end研讨的人员,便是对终究1x1的成果运用反卷积(事实上FCN作者终究的输出不是1X1,是图片巨细的32分之一,但不影响反卷积的运用)。

这儿图画的反卷积与图6的full卷积原理是相同的,运用了这一种反卷积手法使得图画能够变大,FCN作者运用的办法是这儿所说反卷积的一种变体,这样就能够取得相应的像素值,图画能够完结end to end。

卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

图7

这儿说别的一种反卷积做法,假定原图是3X3,首要运用上采样让图画变成7X7,能够看到图画多了许多空白的像素点。运用一个3X3的卷积核对图画进行滑动步长为1的valid卷积,得到一个5X5的图画,咱们知道的是运用上采样扩展图片,运用反卷积填充图画内容,使得图画内容变得丰厚,这也是CNN输出end to end成果的一种办法。韩国作者Hyeonwoo Noh运用VGG16层CNN网络后边加上对称的16层反卷积与上采样网络完结end to end 输出,其不同层上采样与反卷积改变效果如下,

卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)

图8

 

到这儿就把图画卷积与反卷积解说完结,如有不当,请学者们指证。

弥补一个材料:
图6与图7出处,https://github.com/vdumoulin/conv_arithmetic

------------新增反卷积进程解说----------------
通过上面的解说与推导,对卷积有根本的了解,可是在图画上的deconvolution究竟是怎样一回事,或许仍是不能够很好的了解,因而这儿再对这个进程解说一下。
现在运用得最多的deconvolution有2种,上文都现已介绍。
办法1:full卷积, 完好的卷积能够使得本来的定义域变大
办法2:记载pooling index,然后扩展空间,再用卷积填充


图画的deconvolution进程如下,
卷积神经网络CNN(1)——图画卷积与反卷积(后卷积,转置卷积)
输入:2x2, 卷积核:4x4, 滑动步长:3, 输出:7x7
即输入为2x2的图片通过4x4的卷积核进行步长为3的反卷积的进程
1.输入图片每个像素进行一次full卷积,依据full卷积巨细核算能够知道每个像素的卷积后巨细为 1+4-1=4, 即4x4巨细的特征图,输入有4个像素所以4个4x4的特征图
2.将4个特征图进行步长为3的fusion(即相加); 例如赤色的特征图仍然是在本来输入方位(左上角),绿色仍是在本来的方位(右上角),步长为3是指每隔3个像素进行fusion,堆叠部分进行相加,即输出的第1行第4列是由赤色特阵图的榜首行第四列与绿色特征图的榜首行榜首列相加得到,其他如此类推。

能够看出翻卷积的巨细是由卷积核巨细与滑动步长决议, in是输入巨细, k是卷积核巨细, s是滑动步长, out是输出巨细
得到 out = (in - 1) * s + k
上图进程便是, (2 - 1) * 3 + 4 = 7

 
 

本文地址:http://www.anyuan2002.com/a/question/100226.html
Tags: 神经网络 卷积 CNN
修改:vwin网
关于咱们 | 联络咱们 | 友情链接 | 网站地图 | Sitemap | App | 回来顶部