深度学习:卷积神经网络(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 已经广泛用在图像识别(比如人脸识别、车牌识别)、目标检测(比如自动驾驶里的障碍物检测)、图像分割(比如医学影像中的器官分割)等领域,是人工智能视觉技术的重要基础。

相关推荐
算家计算5 分钟前
“下一代”图像模型——ComfyUI-Flux-Krea本地部署教程,体验划时代的图像质量
人工智能·开源·flux
算家计算13 分钟前
国务院发布“人工智能+”行动意见,算力基建或将迎来风口!
人工智能·云计算·资讯
johnny23317 分钟前
文本转语音TTS工具合集(下)
人工智能
艾醒24 分钟前
大模型面试题剖析:大模型微调与训练硬件成本计算
人工智能·后端·算法
三花AI28 分钟前
风口真的要来了,国务院关于深入实施“人工智能+”行动的意见
人工智能·开源
辣椒http_出海辣椒29 分钟前
如何使用python 抓取Google搜索数据
python
Ciel_752129 分钟前
AmazeVault 核心功能分析,认证、安全和关键的功能
python·pyqt·pip
LLM精进之路39 分钟前
上海AI实验室突破扩散模型!GetMesh融合点云与三平面,重塑3D内容创作
人工智能·深度学习·机器学习·语言模型·transformer
星期天要睡觉1 小时前
深度学习——神经网络简单实践(在乳腺癌数据集上的小型二分类示例)
深度学习·神经网络·分类
肥仔哥哥19301 小时前
基于OpenCv做照片分析(Java)
java·人工智能·opencv·图像原理