深度学习-卷积神经网络(CNN)

文章目录

卷积神经网络是一种前馈型神经网络, 受生物自然视觉认知机制启发而来的. 现在, CNN 已经成为众多科学领域的研究热点之一, 特别是在模式分类领域, 由于该网络避免了对图像的复杂前期预处理, 可以直接输入原始图像, 因而得到了更为广泛的应用. 可应用于图像分类, 目标识别, 目标检测, 语义分割等等. 本文介绍可用于图像分类的卷积神经网络的基本结构.

深度学习是一种特殊的机器学习,通过学习将世界使用嵌套的概念层次来表示并实现巨大的功能和灵活性,其中每个概念都定义为与简单概念相关联,而更为抽象的表示则以较不抽象的方式来计算。

一、网络构造

上面是一个简单的 CNN 结构图, 第一层输入图片, 进行卷积(Convolution)操作, 得到第二层深度为 3 的特征图(Feature Map). 对第二层的特征图进行池化(Pooling)操作, 得到第三层深度为 3 的特征图. 重复上述操作得到第五层深度为 5 的特征图, 最后将这 5 个特征图, 也就是 5 个矩阵, 按行展开连接成向量, 传入全连接(Fully Connected)层, 全连接层就是一个 BP 神经网络. 图中的每个特征图都可以看成是排列成矩阵形式的神经元, 与 BP神经网络中的神经元大同小异. 下面是卷积和池化的计算过程.

1. 卷积层(Convolutional Layer)

  • 功能:卷积层是CNN的核心,负责提取图像中的局部特征。它通过滤波器(也称为卷积核)在输入图像上滑动,进行卷积运算,从而提取出图像的边缘、纹理等低级特征。

  • 卷积运算:卷积核的每个元素与图像对应位置的元素相乘后求和,得到输出特征图上的一个像素值。不同的卷积核可以捕捉到不同的特征。

  • 参数共享:卷积核的参数在整个输入图像上共享,这大大减少了网络的参数数量,降低了计算复杂度,并有助于防止过拟合。

(1)卷积

对于一张输入图片, 将其转化为矩阵, 矩阵的元素为对应的像素值. 假设有一个 5 × 5 的图像,使用一个 3 × 3 的卷积核进行卷积,可得到一个 3 × 3的特征图. 卷积核也称为滤波器(Filter).

具体的操作过程如下图所示:

黄色的区域表示卷积核在输入矩阵中滑动, 每滑动到一个位置, 将对应数字相乘并求和, 得到一个特征图矩阵的元素. 注意到, 动图中卷积核每次滑动了一个单位, 实际上滑动的幅度可以根据需要进行调整. 如果滑动步幅大于 1, 则卷积核有可能无法恰好滑到边缘, 针对这种情况, 可在矩阵最外层补零, 补一层零后的矩阵如下图所示:

可根据需要设定补零的层数. 补零层称为 Zero Padding, 是一个可以设置的超参数, 但要根据卷积核的大小, 步幅, 输入矩阵的大小进行调整, 以使得卷积核恰好滑动到边缘.

(2)特征图计算公式

一般情况下, 输入的图片矩阵以及后面的卷积核, 特征图矩阵都是方阵, 这里设输入矩阵高宽为h、w, 卷积核大小为 k , 步长为 s, 补零层数为 p, 则卷积后产生的特征图大小计算公式为:
H = ( h + 2 p − k ) s + 1 H = \frac{(h+2p−k)}{s}+1 H=s(h+2p−k)+1
W = ( w + 2 p − k ) s + 1 W = \frac{(w+2p−k)}{s}+1 W=s(w+2p−k)+1

(3)三通道卷积

为了提取更多的特征, 可以采用多个卷积核分别进行卷积, 这样便可以得到多个特征图. 有时, 对于一张三通道彩色图片, 或者如第三层特征图所示, 输入的是一组矩阵, 这时卷积核也不再是一层的, 而要变成相应的深度。

上图中, 最左边是输入的特征图矩阵, 深度为 3, 补零(Zero Padding)层数为 1, 每次滑动的步幅为 2. 中间两列粉色的矩阵分别是两组卷积核, 一组有三个, 三个矩阵分别对应着卷积左侧三个输入矩阵, 每一次滑动卷积会得到三个数, 这三个数的和作为卷积的输出. 最右侧两个绿色的矩阵分别是两组卷积核得到的特征图.

2. 激活函数(Activation Function)

作用:激活函数用于在卷积层之后引入非线性因素,使得网络能够学习更复杂的特征。常用的激活函数包括ReLU(Rectified Linear Unit),它计算简单且能有效解决梯度消失问题。

3. 池化层(Pooling Layer)

  • 功能:池化层主要用于降低特征图的维度(即宽度和高度),从而减少计算量和防止过拟合。通过池化操作(如最大池化或平均池化),可以在保留重要特征信息的同时,减少特征图的尺寸。
  • 最大池化:取池化窗口内的最大值作为输出,有助于保留图像的显著特征。
  • 平均池化:计算池化窗口内的平均值作为输出,有助于平滑图像。

4.全连接层(Fully Connected Layer)

  • 功能:全连接层将卷积层和池化层提取的特征映射到最终的输出类别或回归值上。
  • 连接方式:全连接层的每个神经元都与前一层的所有神经元相连接。
  • 参数:全连接层包含大量的参数,这些参数通过训练过程进行学习和调整。

二、经典CNN架构

  • LeNet-5:最早的卷积神经网络之一,主要用于手写数字识别。
  • AlexNet:在2012年ImageNet竞赛中表现出色,推动了深度学习的发展。
  • VGGNet:探索了卷积神经网络的深度与其性能之间的关系,构筑了16~19层深的卷积神经网络。
  • GoogLeNet:引入了Inception模块,使用并行网络结构提高了模型的泛化能力。
  • ResNet:通过引入残差连接(shortcut connection)解决了深层网络训练中的梯度消失问题。
相关推荐
lucas_AI8 分钟前
AI 思考时非要「说人话」吗?哈工大团队让模型「用数据格式思考」,省 5 倍 token 还更准
人工智能
知行产研11 分钟前
紫创智械:工程机械具身智能的「非运输」破局者
人工智能
微订校园外卖系统40 分钟前
校园代取快递系统选型:现成系统与定制开发的技术核对项
大数据·运维·人工智能·外卖系统·本地生活·微订
QXWZ_IA44 分钟前
管道GIS测绘如何实现自动化成图:三种成图方式怎么选
运维·人工智能·安全·自动化
严肃小白兔1 小时前
第 04/24 期:深度学习中的损失函数及其数学解释
人工智能·深度学习
无责任此方_修行中1 小时前
「不止技术」AIE 2026 会后感悟
人工智能·后端·ai编程
BYSJMG1 小时前
计算机毕业设计选题推荐:【基于深度学习的车辆损坏严重程度评估方法研究】ResNet50 图像分类
人工智能·深度学习·目标检测·机器学习·计算机视觉·分类·课程设计
在所不辞兄2 小时前
为什么在电池供电场景下,不能采用固定电压频率策略,而需要动态调整以最大化 Race-to-Sleep 收益?
人工智能·深度学习·神经网络·机器学习
jianqiang.xue2 小时前
3倍向量算力:Arm给最小MCU装上本地AI
arm开发·人工智能·单片机
北京迅为2 小时前
案例分享 | RK182X算力卡:多路视频VLM监控,四路画面AI同时看懂,一句人话说清现场
linux·人工智能·嵌入式·rk3588·算力卡·rk182x