|
|
|
|
移动端

2.4.2 一维卷积

《深度学习与计算机视觉:算法原理、框架应用与代码实现》本书全面介绍了深度学习及计算机视觉中最基础的知识,并结合最常见的应用场景和大量实例,带领读者进入丰富多彩的计算机视觉领域。作为一本“原理+实践”教程,本书在讲解原理的基础上,通过有趣的实例带领读者一步步亲自动手,不断提高动手能力,而不是枯燥和深奥原理的堆砌。本节为大家介绍一维卷积。

作者:叶韵来源:机械工业出版社|2017-10-23 16:44

开发者盛宴来袭!7月28日51CTO首届开发者大赛决赛带来技术创新分享

2.4.2  一维卷积

有了对点积的直观理解,接下来看看卷积。先看一维情况,对于两个离散信号f和g,(离散)卷积一般定义如下:

如果看到这个公式,尤其是对n-m感到很别扭也没关系,公式并不重要,直观来理解就是,一个信号倒序之后在不同位置和另一个信号中一段同样大小的部分做了点积。以一维为例子,如图2-42所示。

根据卷积的定义,做卷积的两个信号的顺序是没有影响的,也就是说谁是卷积核,谁是待卷积信号都一样。不过在图2-42中,我们规定每一行中上面的(1,2,1)作为卷积核,根据定义,把卷积核倒序一下,就是在不同位置做点积的信号,在这个例子中还是(1,2,1)。

由图2-42可知,整个卷积的过程就是(1,2,1)沿着一个方向(如图2-42,从左至右)“划过”待卷积的信号,同时在每一个位置上得到对应的点积的值。

在这个过程中,如果自始至终卷积核都在“信号内”,也就是两条虚线竖线内的部分,则最后得到的结果的长度会小于待卷积信号的长度。假设待卷积信号的长度是n,卷积核大小是m,则结果的长度是n-m+1。在图2-42所示的例子中,就是6-3+1=4。这种卷积的方式称为valid,结果是(8,9,4,2)。

如果卷积核的中心刚好是从待卷积信号的第一个元素“划”到最后一个元素,也就是图2-42所示中第二行到倒数第二行的情况,则需要把原来的信号扩展长度。一般来说扩展的方式是在原来信号的边缘添加0元素,这个过程通常称为零填充(zero padding)。通过零填充,卷积结果(4,8,9,4,2,1)的长度和待卷积信号长度一样,这种卷积的方式称为same。

当然,也可以通过零填充把卷积核能够划过的位置扩展到最大,也就是图2-42中从第一行到最后一行,则结果长度是n+m-1,在这个例子中就是6+3-1=8,结果是(1,4,8,9,4,2,1,0),这种方式称为full。

下面用一个一维卷积的例子来直观感受一下卷积的意义。我们把一个长度为20的sin信号,左右各接一个长度为20的随机信号作为一个新的待卷积信号,然后根据定义把一个倒序之后就是sin波形的信号作为卷积核,卷积方式是same,如图2-43所示。

图2-43中,上面部分是待卷积信号,下面是卷积结果。可以看到,在形如sin的信号划过被卷积信号的形如sin的区域时,卷积结果的值最大。从信号的角度,可以把卷积看作是卷积核作为一个滤波器,卷积的结果则是被卷积信号在这个滤波器上的响应。所以大体上越是和卷积核倒序之后相似的信号越是会获得较大的响应。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Windows Forms 编程实战

本书由浅入深地介绍Windows Forms编程的技巧和各种实用方法。本书先详细介绍了菜单、状态条、可复用类库、文件对话框、文本框、按钮、列表...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊