深度学习500问——Chapter05: 卷积神经网络(CNN)(1)

简介: 深度学习500问——Chapter05: 卷积神经网络(CNN)(1)

卷积神经网络是一种用来处理局部和整体相关性的计算网络结构,被应用在图像识别、自然语言处理甚至是语音识别领域,因为图像数据具有显著的局部与整体关系,其在图像识别领域的应用获得了巨大的成功。

5.1 卷积神经网络的组成层

以图像分类任务为例,在表5.1所示卷积神经网络中,一般包含5种类型的网络层次结构:

表5.1 卷积神经网络的组成


CNN层次结构 输出尺寸 作用
输入层 W1×H1×3 卷积网络的原始输入,可以是原始或预处理后的像素矩阵
卷积层 W1×H1×K 参数共享、局部连接,利用平移不变性从全局特征图提取局部特征
激活层 W1×H1×K 将卷积层的输出结果进行非线性映射
池化层 W2×H2×K 进一步筛选特征,可以有效减少后续网络层次所需的参数量
全连接层 (W2H2K)×C 将多维特征展平为2维特征,通常低维度特征对应任务的学习目标(类别或回归值)

W1×H1×3对应原始图像或经过预处理的像素值矩阵,3对应RGB图像的通道;K表示卷积层中卷积核(滤波器)的个数;W2×H2为池化后特征图的尺度,在全局池化中尺度对应1×1;(W2⋅H2⋅K)是将多维特征压缩到1维之后的大小,C对应的则是图像类别个数。

5.1.1 输入层

输入层(Input Layer)通常是输入卷积神经网络的原始数据或经过预处理的数据,可以是图像识别领域中原始三维的多彩图像,也可以是音频识别领域中经过傅里叶变换的二维波形数据,甚至是自然语言处理中一维表示的句子向量。以图像分类任务为例,输入层输入的图像一般包含RGB三个通道,是一个由长宽分别为H和W组成的3维像素值矩阵H×W×3,卷积网络会将输入层的数据传递到一系列卷积、池化等操作进行特征提取和转化,最终由全连接层对特征进行汇总和结果输出。根据计算能力、存储大小和模型结构不同,卷积神经网络每次可以批量处理的图像个数不尽相同,若指定输入层接收到的图像个数为N,则输入层的输出数据为N×H×W3。

5.1.2 卷积层

卷积层(Convolution Layer)通常用作对输入数据进行特征提取,通过卷积核矩阵对原始数据中隐含关联性的一种抽象。卷积操作原理上其实是对两张像素矩阵进行点乘求和的数学操作,其中一个矩阵为输入的数据矩阵,另一个矩阵则为卷积核(滤波器或特征矩阵),求得的结果表示为原始图像中提取的特定局部特征。图5.1表示卷积操作过程中的不同填充策略,上半部分采用零填充,下半部分采用有效卷积(舍弃不能完整运算的边缘部分)。

图5.1 卷积操作示意图

5.1.3 激活层

激活层(Activation Layer)负责对卷积层抽取的特征进行激活,由于卷积操作是由输入矩阵与卷积核矩阵进行相差的线性变化关系,需要激活层对其进行非线性映射。激活层主要由激活函数组成,即在卷积层输出结果的基础上嵌套一个非线性函数,让输出的特征图具有非线性关系。卷积网络中通常采用ReLU来充当激活函数(还包括tanh和sigmoid等),ReLU的函数形式如下公式所示,能够限制小于0的值为0,同时大于等于0的值保持不变。

image.png

5.1.4 池化层

池化层又被称为降采样层(Downsampling Layer),作用是对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出特征尺度,进而减少模型所需要的参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling),它们分别提取感受域内最大、平均与总和的特征值作为输出,最常用的是最大池化。

5.1.5 全连接层

全连接层(Full Connected Layer)负责对卷积神经网络学习提取到的特征进行汇总,将多维的特征输入映射为二维的特征输出,高维表示样本批次,低维常常对应任务目标。

5.2 卷积在图像中有什么直观作用

在卷积神经网络中,卷积常用来提取图像的特征,但不同层次的卷积操作提取到的特征类型是不相同的,特征类型粗分如表5.2所示。

表5.2 卷积提取的特征类型

卷积层次 特征类型
浅层卷积 边缘特征
中层卷积 局部特征
深层卷积 全局特征


图像与不同卷积核的卷积可以用来执行边缘检测、锐化和模糊等操作。表5.3显示了应用不同类型的卷积核(滤波器)后的各种卷积图像。

表5.3 一些常见卷积的作用


卷积作用 卷积核 卷积后图像
输出原图 [000 010 000]
边缘检测(突出边缘差异) [101 000 101]
边缘检测(突出中间值) [111 181 111]
图像锐化 [010 151 010]
方块模糊 [111 111 111]×19
高斯模糊 [121 242 121]×116

5.3 卷积层有哪些基本参数

卷积层中需要用到卷积核(滤波器或特征检测器)与图像特征矩阵进行点乘运算,利用卷积核与对应的特征感受域进行划窗式运算,需要设定卷积核对应的大小、步长、个数以及填充的方式,如表5.4所示。


表5.4 卷积层的基本参数

参数名 作用 常见设置
卷积核大小(Kernel Size) 卷积核的大小定义了卷积的感受野 在过去常设为5,如LeNet-5;现在多设为3,通过堆叠

3×33×3的卷积核来达到更大的感受域

卷积核步长(Stride) 定义了卷积核在卷积过程中的步长 常见设置为1,表示滑窗距离为1,可以覆盖所有相邻位置特征的组合;当设置为更大值时相当于对特征组合降采样
填充方式(Padding) 在卷积核尺寸不能完美匹配输入的图像矩阵时需要进行一定的填充策略 设置为'SAME'表示对不足卷积核大小的边界位置进行某种填充(通
输入通道数(In Channels) 指定卷积操作时卷积核的深度 默认与输入的特征矩阵通道数(深度)一致;在某些压缩模型中会采用通道分离的卷积方式
输出通道数(Out Channels) 指定卷积核的个数 若设置为与通道数一样的大小,可以保持输入输出维度的一致性;若采用比输入通道数更小的值,则可以减少整体网络的参数量


卷积操作维度变换公式:

image.png

其中,Id为输入维度,Od为输出维度,ksize为卷积核大小,s为步长。

5.4 卷积核有什么类型

常见的卷积主要由连续紧密的卷积核对输入的图像特征进行滑窗式点乘求和操作,除此之外还有其他类型的卷积核在不同的任务中会用到,具体分类如表5.5所示。

表5.5 卷积核分类

卷积类别 示意图 作用
标准卷积

最常用的卷积核,连续紧密的矩阵形式可以提取图像区域中的相邻像素之间的关联关系

3×3的卷积核可以获得3×3像素范围的感受野

扩张卷积(带孔卷积或空洞卷积)

引入一个称作扩张率(Dilation Rate)的参数,使同样尺寸的卷积核可以获得更大的感受野,相应的在相同感受野的前提下比普通卷积采用更少的参数。同样是3×3的卷积核尺寸,扩张卷积可以提取

5×5范围的区域特征,在实时图像分割领域广泛应用

转置卷积

先对原始特征矩阵进行填充使其维度扩大到适配卷积目标输出维度,然后进行普通的卷积操作的一个过程,其输入到输出的维度变换关系恰好与普通卷积的变换关系相反,但这个变换并不是真正的逆变换操

作,通常称为转置卷积(Transpose Convolution)而不是反卷积(Deconvolution)。转置卷积常见于目标检测领域中对小目标的检测核图像分割领域还原输入图像尺度

离卷积

标准的卷积操作是同时对原始图像H×W×C三个方向的卷积运算,假设有K个相同尺寸的卷积核,这样的卷积操作需要用到的参数为H×W×C×K个;若将长宽与深度方向的卷积操作分离出变为H×W

与C的两步卷积操作,则同样的卷积核个数K,只需要(H×W+C)×K个参数,便可得到同样的输出尺度。可分离卷积(Seperable Convolution)通常应用在模型压缩或一些轻量的卷积神经网络中,如MoblieNet[1]、Xception[2]等


5.5 二维卷积与三维卷积有什么区别

  • 二维卷积

二维卷积操作如图5.3所示,为了更直观的说明,分别展示在单通道和多通道输入中,对单个通道输出的卷积操作。在单通道输入的情况下,若输入卷积核尺寸为(kh,kw,1),卷积核在输入图像的空间维度上进行滑窗操作,每次滑窗和(kh,kw)窗口内的值进行卷积操作,得到输出图像中的一个值。在多通道输入的情况下,假定输入图像特征通道数为3,卷积核尺寸则为(kh,kw,3),每次滑窗与3个通道上的(kh,kw窗口内的所有值进行卷积操作,得到输出图像中的一个值。

  • 三维卷积

D卷积操作如图所示,同样分为单通道和多通道,且假定只使用1个卷积核,即输出图像仅有一个通道。对于单通道输入,与2D卷积不同之处在于,输入图像多了一个深度(depth)维度,卷积核也多了一个kd维度,因此3D卷积核的尺寸为(kh,kw,kd),每次滑窗与(kh,kw,kd)窗口内的值进行相关操作,得到输出3D图像中的一个值。对于多通道输入,则与2D卷积的操作一样,每次滑窗与3个channels上的(kh,kw,kd)窗口内的所有值进行相关操作,得到输出3D图像中的一个值。

目录
相关文章
|
7天前
|
机器学习/深度学习 搜索推荐 安全
深度学习之社交网络中的社区检测
在社交网络分析中,社区检测是一项核心任务,旨在将网络中的节点(用户)划分为具有高内部连接密度且相对独立的子群。基于深度学习的社区检测方法,通过捕获复杂的网络结构信息和节点特征,在传统方法基础上实现了更准确、更具鲁棒性的社区划分。
22 7
|
8天前
|
机器学习/深度学习 自然语言处理 TensorFlow
深度学习的奥秘:探索神经网络背后的魔法
【10月更文挑战第22天】本文将带你走进深度学习的世界,揭示神经网络背后的神秘面纱。我们将一起探讨深度学习的基本原理,以及如何通过编程实现一个简单的神经网络。无论你是初学者还是有一定基础的学习者,这篇文章都将为你提供有价值的信息和启示。让我们一起踏上这段奇妙的旅程吧!
|
8天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
23 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
9天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第21天】本文旨在深入探讨深度学习领域的核心组成部分——卷积神经网络(CNN)。通过分析CNN的基本结构、工作原理以及在图像识别、语音处理等领域的广泛应用,我们不仅能够理解其背后的技术原理,还能把握其在现实世界问题解决中的强大能力。文章将用浅显的语言和生动的例子带领读者一步步走进CNN的世界,揭示这一技术如何改变我们的生活和工作方式。
|
4天前
|
机器学习/深度学习 自然语言处理 TensorFlow
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第26天】在这篇文章中,我们将深入探讨卷积神经网络(CNN)的基本原理、结构和应用。CNN是深度学习领域的一个重要分支,广泛应用于图像识别、语音处理等领域。我们将通过代码示例和实际应用案例,帮助读者更好地理解CNN的概念和应用。
|
6天前
|
机器学习/深度学习 算法 计算机视觉
深度学习与生活:如何利用卷积神经网络识别日常物品
【10月更文挑战第24天】在这篇文章中,我们将探索深度学习如何从理论走向实践,特别是卷积神经网络(CNN)在图像识别中的应用。通过一个简单的示例,我们将了解如何使用CNN来识别日常生活中的物体,如水果和家具。这不仅是对深度学习概念的一次直观体验,也是对技术如何融入日常生活的一次深刻反思。文章将引导读者思考技术背后的哲理,以及它如何影响我们的生活和思维方式。
|
4天前
|
机器学习/深度学习 数据采集 人工智能
AI赋能教育:深度学习在个性化学习系统中的应用
【10月更文挑战第26天】随着人工智能的发展,深度学习技术正逐步应用于教育领域,特别是个性化学习系统中。通过分析学生的学习数据,深度学习模型能够精准预测学生的学习表现,并为其推荐合适的学习资源和规划学习路径,从而提供更加高效、有趣和个性化的学习体验。
37 8
|
3天前
|
机器学习/深度学习 监控 自动驾驶
深度学习在图像识别中的应用与挑战
本文探讨了深度学习在图像识别领域的应用现状,分析了其面临的主要技术挑战和解决方案。通过对比传统方法和深度学习模型的优势,揭示了深度学习如何推动图像识别技术的发展,并展望了未来的研究方向。
|
1天前
|
机器学习/深度学习 人工智能 算法
探索深度学习在图像识别中的应用与挑战
【10月更文挑战第28天】 本文深入探讨了深度学习技术,特别是卷积神经网络(CNN)在图像识别领域的应用及其面临的主要挑战。通过分析CNN的工作原理和架构设计,揭示了其在处理大规模图像数据时的优势。同时,本文也讨论了当前深度学习模型在图像识别任务中遇到的一些关键问题,如过拟合、数据不平衡以及计算资源的需求等,并提出了相应的解决策略。此外,文章还展望了未来深度学习技术在图像识别领域的发展方向,包括模型优化、算法创新及应用场景的拓展。
12 1
|
7天前
|
机器学习/深度学习 算法 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第22天】 本文深入探讨了深度学习在图像识别领域的应用,分析了其技术原理、优势以及面临的挑战。通过实例展示了深度学习如何推动图像识别技术的发展,并对未来趋势进行了展望。
22 5