CNN 入门讲解:什么是卷积(Convolution)?

CNN 入门讲解:什么是卷积(Convolution)?

原创文章,一家之言。

个人公众号:follow_bobo

转载请通知本人。


今天起,我们要开始讲CNN啦,掌声在哪里?

CNN 是美国有线电视新闻网(Cable News Network)

‘咦,那不是NNK吗?’

NNK 是日本电视?

‘咦,日本电视不是Tokyo hot吗?’


你平时日本节目,都看些什么呀?这位同志。

好了,我们今天就来谈谈CNN

CNN 又叫 Convolutional neural network, 中文名有叫卷积神经网络,它怎么来的,它有多牛逼,这就不多说了,大家网上查。

希望大家在看之前有一点点基本的computer vision 和CNN 的基本知识。


我们第一部分先讲 Convolution,到底什么是卷积,别忙,大家都用过某美颜软件吧,


比如我老婆新垣结衣:



美的不要的不要的。。。。。


然后我锐化了一下,变成如下图所示:


我们会发现,锐化后的图像边缘细节的对比度加大了。

然后我强调边缘,变成如下图所示:


强调边缘之后,图像边缘细节变的高亮,非边缘图像变动暗淡或者模糊,边缘被突出。


我说你们,能不能别老盯着别人看!

看细节呀!

看变化啊!!

什么?!

管不住眼?

什么!????

还管不住手?????!


那我再放一张:


现在呢,看出来了吗?

你们每天拍拍拍,有没有想过是如何做到的呢?

对,就是卷积(Convolution)


首先我们先来回顾一下卷积公式:


它的物理意义大概可以理解为:系统某一时刻的输出是由多个输入共同作用(叠加)的结果。


放在图像分析里,f(x) 可以理解为原始像素点(source pixel),所有的原始像素点叠加起来,就是原始图了。

g(x)可以称为作用点,所有作用点合起来我们称为卷积核(Convolution kernel)


卷积核上所有作用点依次作用于原始像素点后(即乘起来),线性叠加的输出结果,即是最终卷积的输出,也是我们想要的结果,我们称为destination pixel.


我们来看看一张图,你就懂了:

最左边呢就是我们原始输入图像了,中间呢是卷积层,-8就是卷积的结果。

你肯定会问,我为啥要用卷积核,destination pixel 的意义何在,别急,我先挖个坑,我们往下走。


我们先来看看锐化。


图像的锐化和边缘检测很像,我们先检测边缘,然后把边缘叠加到原来的边缘上,原本图像边缘的值如同被加强了一般,亮度没有变化,但是更加锐利。

(仔细想想卷积的物理意义,是不是仿佛有点卷积的感觉)


但是,我们一般是什么操作去检测边缘呢?

我们先来看一,二阶微分。

对于一维函数f(x),其一阶微分的基本定义是差值:

我们将二阶微分定义成如下差分:


我们首先我们来看边缘的灰度分布图以及将一二阶微分作用于边缘上:



我们可以看到,在边缘(也就是台阶处),二阶微分值非常大,其他地方值比较小或者接近0 .

那我们就会得到一个结论,微分算子的响应程度与图像在用算子操作的这一点的突变程度成正比,这样,图像微分增强边缘和其他突变(如噪声),而削弱灰度变化缓慢的区域。

也就是说,微分算子(尤其是二阶微分),对边缘图像非常敏感。


很多时候,我们最关注的是一种各向同性的滤波器,这种滤波器的响应与滤波器作用的图像的突变方向无关。也就是说,各向同性滤波器是旋转不变的,即将原图像旋转之后进行滤波处理,与先对图像滤波再旋转的结果应该是相同的


可以证明,最简单的各向同性微分算子是拉普拉斯算子

一个二维图像函数f(x,y)的拉普拉斯算子定义为

那么对于一个二维图像f(x,y),我们用如下方法去找到这个拉普拉斯算子:

这个结果看起来太复杂,我们能不能用别的方式重新表达一下,如果我们以x,y 为坐标轴中心点,来重新表达这个算子,就可以是:



等等,这个是不是有点和上面提到的卷积核(Convolutional kernel)有点像了?

我们再回到拉普拉斯算子,

由于拉普拉斯是一种微分算子,因此其应用强调的是图像中的灰度突变。

将原图像和拉普拉斯图像叠加在一起,从而得到锐化后的结果。


于是模板就变为:

注:如果所使用的模板定义有负的中心系数,那么必须将原图像减去经拉普拉斯变换后的图像,而不是加上他。


上面这个,就是一个锐化卷积核模板了。原始边缘与它卷积,得到的就是强化了的边缘(destination pixel),图像变得更加锐利。


更详细的介绍,请移步:blog.csdn.net/zouxy09/a


额外再说明一点:

同样提取某个特征,经过不同卷积核卷积后效果也不一样(这是个重点,为什么说重点,因为CNN里面卷积核的大小就是有讲究的)。

比如说:


可以发现同样是锐化,下图5x5的卷积核要比上图3x3的卷积核效果细腻不少。


说了这么多,我只想说明,

(1)原始图像通过与卷积核的数学运算,可以提取出图像的某些指定特征(features)。

(2)不同卷积核,提取的特征也是不一样的。

(3)提取的特征一样,不同的卷积核,效果也不一样。


我为啥子要说这些,是因为,CNN实际上也就是一个不断提取特征,进行特征选择,然后进行分类的过程,卷积在CNN里,就是充当前排步兵,首先对原始图像进行特征提取。所以我们首先要弄懂卷积在干什么,才能弄懂CNN。

下一期将讲卷积在CNN是怎么运作的。

有什么疑问或者建议,请在下方留言哦,我会选择性(我懂的)回答。

延伸问题:

(1)如何使卷积层的输入和输出相同?

蒋竺波:关于卷积神经网络CNN问题汇总(3月10更新)zhuanlan.zhihu.com图标

编辑于 2018-04-20

文章被以下专栏收录