深入理解卷积网络的卷积
卷积神经网络是一种特殊的神经网络结构,是自动驾驶汽车、人脸识别系统等计算机视觉应用的基础,其中基本的矩阵乘法运算被卷积运算取代。它们专门处理具有网格状拓扑结构的数据。例如,时间序列数据和图像数据可以看作是一个二维像素网格。
历史
卷积神经网络最初是由福岛核电站在1980年引入的,当时名为Neocognitron。它的灵感来自于Hubel和Weisel提出的神经系统的层次模型。但由于其复杂的无监督学习算法,即无监督学习,该模型并不受欢迎。1989年,Yann LeCun利用反向传播和Neocognitron的概念提出了一种名为LeNet的架构,该架构被美国和欧洲用于手写的邮政编码识别。邮政服务。Yann LeCun进一步研究了这个项目,最终在1998年发布了LeNet-5——第一个引入了我们今天在CNN仍然使用的一些基本概念的现代卷积神经网络。他还发布了MNIST手写数字数据集,这可能是机器学习中最著名的基准数据集。在20世纪90年代,计算机视觉领域转移了它的焦点,许多研究人员停止了对CNN架构的研究。神经网络的研究经历了一个寒冷的冬天,直到2012年,多伦多大学的一组研究人员在著名的ImageNet挑战赛中进入了一个基于CNN的模型(AlexNet),最终以16.4%的错误率赢得了比赛。此后,卷积神经网络不断向前发展,基于CNN的体系结构不断赢得ImageNet, 2015年,基于卷积神经网络的体系结构ResNet的误差率超过人类水平的5.1%,误差率为3.57%。
卷积的误称
在CNN中广泛使用的卷积运算是用词不当的。严格地说,所使用的操作是相关,而不是卷积。这两个操作符都有一点不同,我们将分别讨论它们,以理解它们之间的区别。
互相关
相关是在图像上移动滤波掩码(通常称为核)并计算每个位置的乘积和的过程。相关是滤波器位移的函数。换句话说,相关的第一个值对应滤波器的零位移,第二个值对应一个位移,以此类推。
数学公式:
图3给出了使用F滤波器与图像I的一维互相关运算的数学公式。假设F具有奇数个元素会很方便,因此我们可以假设F随其中心移动。我们说F有2N 1的元素,这些索引从-N到N,F(0)是中心元素。
类似地,我们可以将这个概念扩展到下图所示的2d情况。基本思想是一样的,除了图像和滤波器现在是2D。我们可以假设我们的滤波器有奇数个元素,所以它由一个(2N 1)x(2N 1)矩阵表示。
二维的相关运算非常简单。我们只是取一个给定大小的滤波器,然后把它放在与滤波器大小相同的图像的一个局部区域上。我们继续这个操作,在整个图像中移动相同的滤波器。这也帮助我们实现了两个非常受欢迎的属性:
- 平移不变性:我们的视觉系统应该感知、响应或检测相同的物体,而不管它出现在图像的什么地方。
- 局部性:我们的视觉系统聚焦于局部区域,而不考虑图像的其他部分发生了什么。
互相关函数具有一个特性,当它应用于离散的单位脉冲(一个二维矩阵,其中只有一个1,其他都是0)时,得到的结果是滤波器的副本,但旋转了180度。
卷积:
卷积运算与互相关运算非常相似,但有细微的区别。在卷积运算中,首先将核翻转180度,然后应用于图像。卷积的基本性质是将一个核与一个离散的单位脉冲进行卷积,在脉冲的位置上得到一个核的拷贝。
我们在互相关部分看到,一个互相关操作产生一个脉冲的拷贝,但是旋转了180度。因此,如果我们预先旋转滤波器并执行相同的乘积滑动和运算,我们应该能够得到期望的结果。
数学公式:
利用核函数F对图像I进行的卷积运算由一维的公式给出。卷积就像相关一样,只是我们在互相关之前先把滤波器翻转一下
在二维卷积的情况下,我们水平和垂直翻转滤波器。这可以写成:
卷积运算同样遵循平移不变性和局部性的性质。
注意:
尽管这两个操作稍有不同,但是所使用的核是否对称并不重要。
结论:
在这篇文章中,我们简要讨论了卷积神经网络的历史和一些特性。我们讨论了卷积这个错误的说法,即在各种文本中经常提到的卷积运算其实是互相关运算。这种差别很细微,但却很有用,每个进入、练习或经验丰富的计算机视觉领域的人都应该知道。
引用
- Deep Learning book by Ian Goodfellow and Yoshua Bengio and Aaron Courville.
- Digital Image Processing by Rafael C. Gonzalez.
- Dive into Deep Learning by Aston Zhang, Zack C. Lipton, Mu Li and Alex J. Smola.
- Correlation and Convolution by David Jacobs.
- Figure 9 taken from https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2.
- https://spatial-lang.org/conv
- The meme is taken from 7. https://www.mihaileric.com/posts/convolutional-neural-networks/.
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/
欢迎关注PyTorch官方中文教程站:
http://pytorch.panchuang.net/
OpenCV中文官方文档:
http://woshicver.com/
深入理解卷积网络的卷积相关推荐
- 卷积网络和卷积神经网络_卷积神经网络的眼病识别
卷积网络和卷积神经网络 关于这个项目 (About this project) This project is part of the Algorithms for Massive Data cour ...
- 卷积网络和卷积神经网络_CNTK-卷积神经网络
卷积网络和卷积神经网络 CNTK-卷积神经网络 (CNTK - Convolutional Neural Network) In this chapter, let us study how to c ...
- 卷积网络和卷积神经网络,卷积神经网络三大特点
前馈神经网络.BP神经网络.卷积神经网络的区别与联系 一.计算方法不同1.前馈神经网络:一种最简单的神经网络,各神经元分层排列.每个神经元只与前一层的神经元相连.接收前一层的输出,并输出给下一层.各层 ...
- 吴恩达神经网络和深度学习-学习笔记-30-相关符号和计算+单层卷积网络+简单卷积网络示例
卷积相关的符号和计算 单层卷积网络 首先执行线性函数,然后所有元素相乘做卷积. 具体做法是运用线性函数,再加上偏差,然后应用激活函数Relu. 也即是说,通过神经网络的一层,把一个6×6×3维度的a[ ...
- 4.1)深度卷积网络:卷积神经网络基础
目录 1)Computer vision 2)Edge detection example(理解) 3)More edge detection 4)Padding(重点) 5)Strided conv ...
- Gram矩阵与卷积网络中的卷积的直观理解
Gram矩阵其实是一种度量矩阵.矩阵分析中有这样的定义. 设 V V是nn维欧式空间 ϵ1,⋯,ϵn \mathbf{\epsilon_1, \cdots, \epsilon_n }是它的一个基, g ...
- 基于三维卷积网络的时空特征学习
摘要 本文提出了一种基于大规模监督视频数据集的深三维卷积网络(3D卷积网)的时空特征学习方法.我们的研究结果有三方面:1)三维卷积网比2d卷积网更适用于时空特征学习:2)在所有层中具有小3×3×3卷积 ...
- 【CV】膨胀卷积详解以及时间卷积网络TCN论文笔记和源码实现
这篇博文分为两部分.第一部分详细讲解了TCN模型(Temporal Convolutional Network)中涉及的1D卷积,因果卷积,膨胀卷积中设计的计算,非常值得一看,有醍醐灌顶的作用.第二部 ...
- 从一维卷积、因果卷积(Causal CNN)、扩展卷积(Dilation CNN) 到 时间卷积网络 (TCN)
来源: AINLPer微信公众号(每日干货分享!!) 编辑: ShuYini 校稿: ShuYini 时间: 2022-09-30 引言 卷积神经网络 (CNN) 尽管通常与图像分类任务相关,但经过改 ...
最新文章
- 关于node-sass安装失败的解决办法
- 0728pm 控制器
- npm和yarn的区别,我们该如何选择?
- php js跨域上传文件,Jquery实现跨域异步上传文件步骤详解
- 当OpenOrg和OpenGov发生冲突时
- Python机器学习:KNN算法02scikit-learn中的机器学习算法封装
- Windows 下安装 MySQL 及使用可视化工具执行 SQL 脚本过程记录
- Android SDK环境变量配置(windows和Linux)
- js存取cookie以及设置cookie储存时间
- Pycharm导入已有的Project
- 英国第一位重要的浪漫主义诗人
- 商贸批发进销存管理软件,仓库条码管理,库存管理。采购入库单,供应商档案管理。
- 懂车帝上配置高的国产车为什么那么便宜?
- 操作系统 --- 磁盘调度算法
- 双系统linux触摸板不能用,windows系统与ubuntu双系统导致笔记本触摸板失灵的解决办法(非输入代码)...
- Keras深度学习实战(11)——可视化神经网络中间层输出
- # Odoo丨Odoo框架源码研读一:前后端交互
- js绘制超炫酷3D化学元素周期表
- 手机控?这两款神器能让你远离手机
- Xcode Embedded Binaries动态添加库