卷积的本质

作者: 萧风博宇 | 来源:发表于2019-06-12 11:41 被阅读146次

    前言

    人生实在是有太多事情难以把控,并不是说人的力量多么渺小,而是在宇宙环境的大背景下,许多事情结果的本质往往取决于某些细节的某种程度的随机性。人生不如意事常八九,可与言者无二三。年轻时候遇到不开心的事情喜欢想想书本里的东西,感觉上,解读研究知识最为踏实,没有装模作样没有逆来顺受,可以敞开心扉忘却世间烦恼。现在看来那时是有些天真,想必若非为了生计应该不会甘心沉迷于此吧,况且我自身在科学技术领域并不擅长。花花世界有太多东西扰人心智,好在追求本质尚且是我一贯的执念。
    就我个人来说,cv领域有很多基本理论尚需学习。尽管也做了几个项目但仍有必要回过头来探讨一些基础概念。那么,从卷积开始。

    卷积的物理意义

    先不局限于图像领域,其实卷积是有特定的物理意义的,我本科学自动化的,那时候学习信号处理是学习了卷积的概念,但没能深刻理解,后来初接触到卷积神经网络发现好像又推翻了之前的理解。但实际上是没有建立感性到理性的认识联系。
    学过物理的都知道,物理学中有冲量的概念,可以简单描述为力F作用了t时间的结果F*t,假如保持冲量不变,让这个时间t无限短,于是在用t做横坐标、F做纵坐标的坐标系中,就形成一个高度极大宽度极小的形象,计算冲量可以用积分对它求面积,数学上叫卷积。
    卷积其实就是为冲击函数诞生的。“冲击函数”是狄拉克为了解决一些瞬间作用的物理现象而提出的符号。在“信号与系统”中卷积用来表示系统对输入信号的响应,假设系统H其响应函数为h(t),在t时刻其输入为x(t),输出为y(t),直观上理解其输出应该是y(t)=x(t)h(t),然而实际上并非如此,系统的输出不仅和当前时刻t的响应有关还与t时刻之前的响应有关,只不过t时刻之前响应应该是衰减的过程(也可以理解为t时刻之后的衰减),s时刻(s<t)对应的响应为x(t)h(t-s),这个过程可能是连续的也可能是离散的,但总可以理解为t 时刻的响应等于每一个输入信号在 t 时刻所产生的响应的叠加。可表示为:


    连续卷积(S1)
    离散卷积(S2)

    图像中的卷积

    图像处理中,用一个模板和一幅图像进行卷积可以描述为:对于图像上的每个点,先对模板旋转180度,为什么旋转看卷积公式就知道,在数学里我们知道f(-x)的图像是f(x)对y轴的反转, h(-m)就是把g(m)的序列反转,h(n-m)的意义是把h(-m)平移的n点,由于大多数模板都是对称的,旋转后和原模板相同,所以模板不旋转,然后让模板的中心点和该点重合,模板上的点和图像上对应的点相乘,然后各点的积相加,就得到了该点的卷积值。对图像上的每个点都这样处理,对于图像上的边角点与模板上的点无法对应的一般用0补齐,这就是padding方法。卷积是一种积分运算,用来求两个曲线重叠区域面积。可以看作加权求和,可以用来消除噪声、特征增强。深度卷积网络中一层层的卷积本质上就是大量的卷积核在发挥不同的作用,有的去噪声、有的做锐化、有的增强边缘、有的做滤波等等。

    卷积的计算

    图像中一般是离散卷积,这里以离散卷积计算为例,对于S2式,N为信号f(n)的长度,y(n)为卷积结果序列,长度为len(f(n))+len(g(n))-1。
    以3个元素的信号为例:

    f(n) = [1 2 3]; g(n) = [2 3 1];
    
    s(0) = f(0)g(0-0) + f(1)g(0-1)+f(2)g(0-2) = 1*2 + 2*0 + 3*0 =2
    
    s(1) = f(0)g(1-0) + f(1)g(1-1) + f(2)g(1-2) = 1*3 + 2*2 + 3*0 = 7
    
    s(2) = f(0)g(2-0) + f(1)g(2-1) + f(2)g(2-2) =1*1 + 2*3 + 3*2=13
    
    s(3) = f(0)g(3-0) + f(1)g(3-1) + f(2)g(3-2) =1*0 + 2*1 + 3*3=11
    
    s(4) = f(0)g(4-0) + f(1)g(4-1) + f(2)g(4-2) =1*0 + 2*0 + 3*1=3
    

    最终结果为:
    y(n) = [2 7 13 11 3]
    计算过程如下图:


    一维卷积计算

    相应的二维卷积定义如下:


    二维卷积计算

    有个更加形象的图示,针对3*3的卷积核:


    3*3卷积核计算
    我们会发现对于不同形状的卷积核其作用及其计算方式是不同的,比如2乘2卷积核与3乘3卷积核,甚至1乘1卷积。而且通过给定不同的padding与步长也会产生不同效果,这些都是深度卷积网络的架构参数。
    以下罗列几个典型的卷积核:
    一个没有任何作用的卷积核
    平滑均值滤波
    高斯平滑
    图像锐化
    水平梯度
    垂直梯度

    针对图像处理中的卷积理解:

    • 一种是滤波,比如最简单的高斯模板,就是把模板内像素乘以不同的权值然后加起来作为模板的中心像素值,如果模板取值全为1,就是滑动平均;如果模板取值为高斯,就是加权滑动平均,权重是中间高,四周低,在频率上理解就是低通滤波器;如果模板取值为一些边缘检测的模板,结果就是模板左边的像素减右边的像素,或者右边的减左边的,得到的就是图像梯度,方向不同代表不同方向的边缘;

    • 另一种理解是投影,因为当前模板内部图像和模板的相乘累加操作就是图像局部patch和模板的内积操作,如果把patch和模板拉直,拉直的向量看成是向量空间中的向量,那么这个过程就是patch向模板方向上的投影,一幅图像和一个模板卷积,得到的结果就是图像各个patch在这个方向上的response map或者feature map;如果这样的模板有一组,我们可以把这一组看成一组基,得到的一组feature map就是原图像在这组基上的投影。常见的如用一组Garbor滤波器提取图像的特征,以及卷积神经网络中的第一层,图像在各个卷积核上的投影。

    小结

    总结一下,卷积的概念尽管在不同领域具有不同的含义,但似乎有一种共性,可以总结为某种系统对某个物理量或输入的调制或污染。
    至此总算对卷积的定义及计算有了基本的理解,从感性到理性是知识化理论化的过程,从理性到感性是进一步升华知识提升理解层次的过程,在这个过程中往往能体会到事事共通万物归一的感觉。嗯,说的有点过分了。

    参考

    https://www.cnblogs.com/wujing-hubei/p/5682766.html

    https://blog.csdn.net/u013539952/article/details/80610260

    https://blog.csdn.net/alvinlyb/article/details/78892252

    https://blog.csdn.net/tiandijun/article/details/40080823

    相关文章

      网友评论

        本文标题:卷积的本质

        本文链接:https://www.haomeiwen.com/subject/eobqfctx.html