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

文章目录

在深度学习领域,卷积神经网络(CNN)在图像识别、计算机视觉等任务中应用广泛,主要因为它能高效提取图像特征。下面就从基础原理、核心结构和实践要点三个方面,结合图示,把 CNN 的相关知识讲清楚。


一、CNN 基础认知

要懂 CNN,先得知道计算机是怎么处理图像的 ------ 图像在计算机里其实就是按顺序排列的数字矩阵。

1.1 图像在计算机中的存储形式

  • 灰度图 :黑白灰度图用二维矩阵表示,每个元素的数值在 0 到 255 之间,0 是最暗,255 是最亮,矩阵的行和列分别对应图像的高度和宽度。

  • RGB 彩色图 :彩色图常用 RGB 三原色模型,存储为三维张量(宽 × 高 × 深),其中 "深" 指 3 个通道,分别是红(R)、绿(G)、蓝(B)通道,每个通道都是独立的二维矩阵,三个通道的数值组合起来就形成了各种颜色。

1.2 图像识别的核心需求:画面不变性

CNN 设计的一个重要目标是满足图像不变性,也就是说,不管物体在图像里的位置、角度、大小怎么变,或者光照条件不同,都能准确识别出来。具体有四种不变性需求:

  • 平移不变性:物体在画面左边或右边,都能认出是同一个物体;

  • 旋转 / 视角不变性:物体转了方向,或者从不同角度拍,识别结果不受影响;

  • 尺寸不变性:物体放大或缩小后,依然能正确分类;

  • 光照不变性 :在不同光照下,物体的特征不会被干扰。

1.3 传统神经网络的局限

传统神经网络处理图像时,要把二维矩阵改成一维向量才能输入,这样会丢失图像的空间结构信息。比如数字 "0-9" 和字母 "a-f",只要位置不一样,改成一维向量后就完全不同,传统网络就认不出来了。只能靠大量数据训练,再增加隐藏层来优化,效率很低。


二、CNN 核心原理:三大核心层与关键操作

CNN 的优势来自它特殊的分层结构,主要包括卷积层、池化层、全连接层,每层有明确的作用,一起完成特征提取和分类。

2.1 卷积层

卷积层是 CNN 的核心,通过卷积操作提取图像的局部特征,比如边缘、纹理、颜色块这些。

(1)什么是卷积操作?

卷积就是拿图像局部窗口的数,和卷积核(Filter)做内积 ------ 也就是对应元素相乘再相加。卷积核是一组固定权重的小矩阵,就像 "特征探测器",不同的卷积核能提取不同的特征,比如检测边缘、让图像变模糊等。

  • 把卷积核的中心对准输入图像的某个像素,然后把这个像素和周围像素的数值,跟卷积核的权重分别相乘,再把结果加起来,就是输出的像素值;

  • 举个例子:输入图像某区域的像素是 [1,2;0,1],卷积核是 [0,1;-4,2],那输出像素值就是(1×0)+(2×1)+(0×-4)+(1×2)=4。

(2)卷积层的关键参数

卷积操作的输出结果,受三个核心参数影响,我们用 7×7×3 的输入和 3×3×3 的卷积核来举例说明:

  • 步长(Stride):指卷积核每次在图像上滑动的像素数。步长是 1,就每次移 1 个像素;步长是 2,就每次移 2 个像素,步长越大,输出的特征图尺寸越小。

  • 卷积核个数:决定输出特征图的 "深度(Depth)"。比如用 2 个卷积核,输出的特征图就有 2 个通道,对应 2 种不同的特征。

  • 填充(Zero-Padding):为了不让图像边缘的特征丢失,也为了让图像尺寸能被步长整除,会在图像边缘补几圈 0。比如 7×7 的图像,补 1 圈 0 后变成 9×9,这样步长为 2 时,卷积核就能完整滑动。

(3)输出特征图尺寸计算

卷积层输出尺寸有固定公式:

  • 长度: H 2 = H 1 − F H + 2 P S + 1 H_2 = \frac{H_1 - F_H + 2P}{S} + 1 H2=SH1−FH+2P+1

  • 宽度: W 2 = W 1 − F W + 2 P S + 1 W_2 = \frac{W_1 - F_W + 2P}{S} + 1 W2=SW1−FW+2P+1

其中, H 1 H_1 H1和 W 1 W_1 W1是输入图像的长度和宽度, F H F_H FH和 F W F_W FW是卷积核的长度和宽度, P P P是填充数, S S S是步长。

示例 :输入 32×32×3 的图像,用 10 个 5×5×3 的卷积核,步长 1,填充 2,按照公式计算,输出的长度和宽度都是 32 − 5 + 2 × 2 1 + 1 = 32 \frac{32-5+2×2}{1}+1=32 132−5+2×2+1=32,所以最终输出 32×32×10 的特征图。

2.2 池化层

池化层一般在卷积层后面,主要作用是降采样 ------ 减少数据量和计算量,同时能控制过拟合,让模型对物体的位置变化更不敏感。

(1)池化层的操作逻辑

池化层和卷积层类似,也是用 "池化窗口" 在特征图上滑动,但没有可学习的参数,只按固定规则计算输出。以 2×2 的最大池化为例:

  • 池化窗口按设定的步长滑动,对每个窗口里的像素计算输出值;

  • 比如 2×2 最大池化,就是取窗口里的最大值作为输出,像窗口 [1,2;6,8],输出就是 8。

(2)常见池化方式

主流的池化方式有三种:

  • 最大池化(Max Pooling):取窗口内的最大值,能保留关键特征,比如边缘的强度,用得最多;

  • 平均池化(Average Pooling):取窗口内的平均值,能保留图像整体的灰度信息;

  • 全局平均池化 / 全局最大池化:把整个特征图当一个池化窗口,计算平均值或最大值,直接输出一维向量,常用来代替全连接层以减少参数(可分别插入这几种池化方式在图像上操作的对比图)。

(3)最大池化的优势

用 3×3 最大池化的例子来说明:最大池化能把特征图 "压缩",但不会影响识别结果。因为卷积后的特征图有冗余信息,最大池化能保留最关键的特征信号,还能降低过拟合的风险。

2.3 全连接层

等卷积层和池化层提取到足够的特征后,就轮到全连接层发挥作用了 ------ 它把这些特征映射到类别空间,完成最终的分类。

(1)全连接层的工作流程

全连接层的工作逻辑分两步:

  1. 特征摊平(Flatten):把卷积层、池化层输出的多维特征图,比如 32×32×10 的,改成一维向量,这个向量的长度就是 32×32×10=10240;

  2. 线性映射:把一维向量输入全连接层,层里每个神经元都和前一层所有神经元相连,通过权重计算,把特征映射到类别对应的维度。比如做 10 分类任务,就输出 10 个神经元,分别对应 0-9 这 10 个类别的概率。

(2)全连接层的作用

全连接层就像 "分类器",通过学习权重参数,把边缘、纹理这些低级特征,整合变成物体形状、结构这类高级特征,最后输出每个类别的概率。比如识别手写数字时,哪个神经元输出的概率最大,模型就认为输入的图像是对应的数字。


三、CNN 的网络结构与经典模型

3.1 CNN 的典型架构

一个完整的 CNN,结构通常是 "输入层→卷积层→激活层→池化层→(重复卷积 - 激活 - 池化)→全连接层→输出层"。

  • 浅层:通过卷积层提取边缘、颜色这些低级特征;

  • 中层:反复用卷积层和池化层,把低级特征组合成纹理、局部形状等中级特征;

  • 深层:全连接层整合高级特征,输出分类结果。

3.2 经典 CNN 模型

有 6 种经典的 CNN 模型,能看出技术的发展过程:

模型名称 核心特点 应用价值
LeNet 第一个成功应用的 CNN,结构是卷积 - 池化 - 全连接 手写数字识别
AlexNet 网络更深更大,用了 ReLU 激活函数和 GPU 加速 实现 ImageNet 图像分类的突破
ZF Net 缩小了第一层的步长和卷积核尺寸,提高了特征提取精度 优化图像分类精度
GoogLeNet 加入 Inception 模块,减少参数,用全局池化代替全连接 高效融合特征
VGGNet 只用 3×3 的卷积核和 2×2 的池化层堆叠,加深了网络深度 增强特征抽象能力
ResNet 加入残差连接和 Batch Normalization,解决了梯度消失问题 实现 152 层这类超深网络的训练

四、总结:CNN 的核心优势与应用场景

总结一下 CNN 的核心优势,主要有三点:

  1. 局部连接与权值共享:卷积层只和图像的局部区域连接,而且同一个卷积核的权重在整个图像上都能用,大大减少了参数数量,降低了计算成本;

  2. 层次化特征提取:从低级特征到高级特征逐步抽象,符合人眼认识图像的规律,能提高识别精度;

  3. 平移不变性:池化层和卷积操作配合,就算物体位置变了,也不影响识别结果,能适应复杂的场景。

现在,CNN 已经广泛用在图像识别(比如人脸识别、车牌识别)、目标检测(比如自动驾驶里的障碍物检测)、图像分割(比如医学影像中的器官分割)等领域,是人工智能视觉技术的重要基础。

相关推荐
weixin_437497773 小时前
读书笔记:Context Engineering 2.0 (上)
人工智能·nlp
cnxy1883 小时前
围棋对弈Python程序开发完整指南:步骤1 - 棋盘基础框架搭建
开发语言·python
喝拿铁写前端3 小时前
前端开发者使用 AI 的能力层级——从表面使用到工程化能力的真正分水岭
前端·人工智能·程序员
goodfat3 小时前
Win11如何关闭自动更新 Win11暂停系统更新的设置方法【教程】
人工智能·禁止windows更新·win11优化工具
北京领雁科技4 小时前
领雁科技反洗钱案例白皮书暨人工智能在反洗钱系统中的深度应用
人工智能·科技·安全
落叶,听雪4 小时前
河南建站系统哪个好
大数据·人工智能·python
清月电子4 小时前
杰理AC109N系列AC1082 AC1074 AC1090 芯片停产替代及资料说明
人工智能·单片机·嵌入式硬件·物联网
Dev7z4 小时前
非线性MPC在自动驾驶路径跟踪与避障控制中的应用及Matlab实现
人工智能·matlab·自动驾驶
七月shi人4 小时前
AI浪潮下,前端路在何方
前端·人工智能·ai编程
橙汁味的风4 小时前
1隐马尔科夫模型HMM与条件随机场CRF
人工智能·深度学习·机器学习