深度学习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图像中的一个值。

目录
相关文章
|
3天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习入门:理解卷积神经网络(CNN)
【9月更文挑战第14天】本文旨在为初学者提供一个关于卷积神经网络(CNN)的直观理解,通过简单的语言和比喻来揭示这一深度学习模型如何识别图像。我们将一起探索CNN的基本组成,包括卷积层、激活函数、池化层和全连接层,并了解它们如何协同工作以实现图像分类任务。文章末尾将给出一个简单的代码示例,帮助读者更好地理解CNN的工作原理。
16 7
|
1天前
|
机器学习/深度学习 算法 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第16天】本文将深入浅出地介绍卷积神经网络(CNN)的基本概念、结构和工作原理,同时通过一个实际的代码示例来展示如何在Python中使用Keras库构建一个简单的CNN模型进行图像识别。我们将看到,即使是初学者也能够通过简单的步骤实现深度学习的强大功能,进而探索其在复杂数据集上的应用潜力。
|
2天前
|
机器学习/深度学习 自动驾驶 搜索推荐
深度学习之探索神经网络、感知器与损失函数
在当今的数字化时代,深度学习作为一种强大的机器学习技术,正在迅速改变着我们的生活方式。无论是智能推荐系统、自动驾驶车辆还是语音识别应用,深度学习都在背后默默地发挥作用。
9 1
|
4天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于NSCT非采样轮廓波变换和CNN网络人脸识别matlab仿真
本项目展示了一种结合非采样轮廓波变换(NSCT)与卷积神经网络(CNN)的人脸识别系统。通过NSCT提取多尺度、多方向特征,并利用CNN的强大分类能力实现高效识别。项目包括ORL人脸库的训练结果对比,提供Matlab 2022a版本下的完整代码及详细中文注释,另有操作步骤视频指导。
|
4天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第13天】本文将深入浅出地介绍卷积神经网络(CNN)的基本原理,并探讨其在图像识别领域的应用。通过实例演示如何利用Python和TensorFlow框架实现一个简单的CNN模型,我们将一步步从理论到实践,揭示CNN如何改变现代图像处理技术的面貌。无论你是深度学习新手还是希望深化理解,这篇文章都将为你提供价值。
|
21天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第28天】本文将深入探讨深度学习领域的核心概念之一——卷积神经网络(CNN),并展示其在图像识别任务中的强大能力。文章首先介绍CNN的基本结构,然后通过一个简单的代码示例来演示如何构建一个基础的CNN模型。接着,我们将讨论CNN如何处理图像数据以及它在图像分类、检测和分割等任务中的应用。最后,文章将指出CNN面临的挑战和未来的发展方向。
|
9天前
|
机器学习/深度学习 自然语言处理 自动驾驶
CNN的魅力:探索卷积神经网络的无限可能
卷积神经网络(Convolutional Neural Networks, CNN)作为人工智能的重要分支,在图像识别、自然语言处理、医疗诊断及自动驾驶等领域展现了卓越性能。本文将介绍CNN的起源、独特优势及其广泛应用,并通过具体代码示例展示如何使用TensorFlow和Keras构建和训练CNN模型。
|
9天前
|
机器学习/深度学习 数据采集 数据可视化
深度学习实践:构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行分类
本文详细介绍如何使用PyTorch构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行图像分类。从数据预处理、模型定义到训练过程及结果可视化,文章全面展示了深度学习项目的全流程。通过实际操作,读者可以深入了解CNN在图像分类任务中的应用,并掌握PyTorch的基本使用方法。希望本文为您的深度学习项目提供有价值的参考与启示。
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
深入浅出卷积神经网络(CNN)的奥秘
【9月更文挑战第3天】在人工智能的浪潮中,卷积神经网络(CNN)无疑是最耀眼的明星之一。本文将通过浅显易懂的语言,带你一探CNN的核心原理和应用实例。从图像处理到自然语言处理,CNN如何改变我们对数据的解读方式?让我们一起走进CNN的世界,探索它的魅力所在。
|
18天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)入门
【8月更文挑战第31天】在人工智能的璀璨星空中,卷积神经网络(CNN)如同一颗耀眼的星辰,以其卓越的图像处理能力在深度学习领域熠熠生辉。本文将带你领略CNN的魅力,从其结构原理到实战应用,深入浅出地探索这一技术的奥秘。我们将通过Python代码片段,一起实现一个简单的CNN模型,并讨论其在现实世界问题中的应用潜力。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇通往深度学习世界的大门。