学习要点
❖ 卷积的基本数学公式?
❖ 卷积神经网络的特性,他有什么优点和缺点?
❖ 能够学会对于不同卷积网络的参数,输出后的shape是什么?
❖ 能够自己完成简单的代码实现

8.1 多隐含层MLP

介绍了 MindSpore,这是一个由华为开发的开源深度学习框架

MindSpore 的目标

  • 旨在支持端、边、云协同AI\text{AI}AI 应用。

MindSpore 的主要特点

  1. 多场景支持:

    • 支持训练和推理

    • 可以在云服务器、边缘设备和移动设备上运行(体现了“端、边、云”协同的能力)。

  2. 自动微分 (Auto Differentiation):

    • 提供自动求导机制

    • 支持动态图静态图模式。

  3. 高性能:

    • 异构处理器 (Ascend\text{Ascend}Ascend)GPU\text{GPU}GPUCPU\text{CPU}CPU 都有良好的支持。

    • 特别针对异腾 (Ascend\text{Ascend}Ascend) 进行了优化(Ascend\text{Ascend}Ascend 是华为自研的 AI\text{AI}AI 芯片)。

  4. 生态支持:

    • 支持多种模型库(如 MindSpore ModelZoo\text{MindSpore ModelZoo}MindSpore ModelZoo)。

    • 提供可视化工具等,方便开发和调试。

总结: MindSpore\text{MindSpore}MindSpore 是一个致力于在各种硬件环境(云、边、端)上实现高效、灵活 AI\text{AI}AI 应用的深度学习平台,其特色在于对华为自研 Ascend\text{Ascend}Ascend 芯片的深度优化。

基于MindSpore的MLP实现

# 引入必要的包
import mindspore
import mindspore.nn as nn
from mindspore import Tensor
import mindspore.dataset as ds
import mindspore.dataset.vision as vision
import numpy as np

# 构建模型:定义一个多层感知机(MLP)
class MLP(nn.Cell):
    def __init__(self):
        super(MLP, self).__init__()
        self.flatten = nn.Flatten()                    # 将二维图像展平成一维向量
        self.fc1 = nn.Dense(28 * 28, 128)              # 第一层全连接,输入28*28=784,输出128
        self.relu = nn.ReLU()                          # ReLU激活函数
        self.fc2 = nn.Dense(128, 64)                   # 第二层全连接,输入128,输出64
        self.fc3 = nn.Dense(64, 10)                    # 第三层全连接,输入64,输出10(对应10个类别)

    def construct(self, x):
        x = self.flatten(x)                            # 展平图像
        x = self.relu(self.fc1(x))                     # 第一层全连接 + 激活
        x = self.relu(self.fc2(x))                     # 第二层全连接 + 激活
        x = self.fc3(x)                                # 第三层全连接,输出分类结果
        return x

# 创建数据集:加载并预处理MNIST训练集
def create_dataset(batch_size=64):
    # 加载MNIST训练数据集
    mnist_train = ds.MnistDataset(dataset_dir='./MNIST_Data/train', usage='train')
    # 定义图像预处理操作:归一化 + 格式转换(HWC -> CHW)
    transform = [vision.Rescale(1.0 / 255.0, 0), vision.HWC2CHW()]
    # 应用预处理操作到图像列
    mnist_train = mnist_train.map(operations=transform, input_columns="image")
    # 按batch大小打包数据
    mnist_train = mnist_train.batch(batch_size)
    return mnist_train

# 初始化模型、损失函数与优化器
net = MLP()  # 实例化模型
# 定义损失函数:交叉熵损失,适用于多分类任务
loss_fn = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')
# 定义优化器:Adam,学习率设为0.001
optimizer = nn.Adam(net.trainable_params(), learning_rate=0.001)

# 创建训练模型:封装网络、损失函数、优化器和评估指标
model = mindspore.Model(net, loss_fn=loss_fn, optimizer=optimizer, metrics={"Accuracy": nn.Accuracy()})

# 模型训练与推理
train_dataset = create_dataset()  # 获取训练数据
# 训练模型,epoch为5,不使用数据下沉模式
model.train(epoch=5, train_dataset=train_dataset, dataset_sink_mode=False)

# 示例推理:用随机输入测试模型输出
dummy_input = Tensor(np.random.rand(1, 1, 28, 28), mindspore.float32)  # 随机生成一个28x28图像
output = net(dummy_input)  # 模型前向推理
print("模型输出:", output)  # 打印输出结果

8.2 卷积运算基础

一、计算

连续函数卷积 (Convolution of Continuous Functions) 的演示和介绍。

总结要点

  1. 卷积的定义 (Convolution Formula):

    图片首先给出了两个连续函数 f(t)f(t)f(t)g(t)g(t)g(t) 的卷积分定义公式:

    h(x)=(f∗g)(x)=∫−∞+∞f(τ)g(x−τ)dτh(x) = (f * g)(x) = \int_{-\infty}^{+\infty} f(\tau) g(x - \tau) d\tauh(x)=(fg)(x)=+f(τ)g(xτ)dτ

    • 卷积分的结果 h(x)h(x)h(x) 也是一个函数。

    • 它涉及一个积分运算,其中一个函数 f(τ)f(\tau)f(τ) 保持不变,另一个函数 g(x−τ)g(x - \tau)g(xτ)翻转(变为 g(−τ)g(-\tau)g(τ))并平移(平移量为 xxx)。

  2. 卷积的几何解释 (Geometric Interpretation):

    右侧的图示展示了卷积分的计算过程,这是理解卷积分几何意义的关键:

    • 原始函数: f(t)f(t)f(t)g(t)g(t)g(t)

    • 翻转: g(t)g(t)g(t) 变为 g(−τ)g(-\tau)g(τ)(关于 τ\tauτ 轴翻转)。

    • 平移: g(−τ)g(-\tau)g(τ) 平移 xxx 得到 g(x−τ)g(x - \tau)g(xτ)

    • 乘积: 计算 f(τ)f(\tau)f(τ)g(x−τ)g(x - \tau)g(xτ) 的乘积。

    • 积分: 卷积分 h(x)h(x)h(x) 的值就是乘积函数 f(τ)g(x−τ)f(\tau) g(x - \tau)f(τ)g(xτ)τ\tauτ 轴上的面积(Area under the curve)。

    • 右下方的图示直观地展示了两个函数的重叠和乘积。

  3. 不同函数的卷积示例 (Examples):

    左侧的两个图示展示了具体的函数卷积分结果 (f∗g)(t)(f * g)(t)(fg)(t) 的形状:

    • 上图(矩形函数与矩形函数的卷积): 展示了两个矩形函数(或方波函数)进行卷积的过程和结果。矩形函数与自身的卷积结果通常是三角形

      • 图中的 f(t)f(t)f(t) 似乎是一个从 −0.5-0.50.50.50.50.5 的方波。

      • 卷积分 (f∗g)(t)(f * g)(t)(fg)(t) 似乎是一个梯形三角形,代表两个方波重叠面积随平移量 ttt 的变化。

    • 下图(矩形函数与指数衰减函数的卷积): 展示了一个矩形函数(方波)与一个指数衰减函数(如 e−λte^{-\lambda t}eλt)进行卷积的过程和结果。卷积分的结果是平滑的,它代表了指数衰减函数对输入方波的滤波平滑作用。

![[Pasted image 20251022111632.png]]

结论

这张图片系统地介绍了连续函数卷积的数学定义计算过程的几何分解(翻转、平移、相乘、积分)以及在不同函数组合下的卷积分结果的图形化表现。卷积是信号处理、图像处理以及现代深度学习(卷积神经网络 CNN\text{CNN}CNN)中的核心数学工具。

问题描述

有两枚骰子:

  • 第一枚骰子:有 5 个面,点数是 1 到 5。每个面出现的概率相同。

  • 第二枚骰子:有 8 个面,点数是 1 到 8。每个面出现的概率相同。

将两枚骰子同时投出,求两枚骰子点数加起来为 6 的概率是多少?

解答步骤

1. 确定概率分布函数

由于每个面的出现概率相同,这是一个均匀概率分布

  • 第一枚骰子 (f(n)f(n)f(n)): 有 5 个面 (1, 2, 3, 4, 5)。

    f(n)=15=0.2(对于 n=1,2,3,4,5)f(n) = \frac{1}{5} = 0.2 \quad (\text{对于 } n=1, 2, 3, 4, 5)f(n)=51=0.2(对于 n=1,2,3,4,5)

  • 第二枚骰子 (g(n)g(n)g(n)): 有 8 个面 (1, 2, 3, 4, 5, 6, 7, 8)。

    g(n)=18=0.125(对于 n=1,2,…,8)g(n) = \frac{1}{8} = 0.125 \quad (\text{对于 } n=1, 2, \dots, 8)g(n)=81=0.125(对于 n=1,2,,8)

2. 分析点数组合情况

要求两枚骰子点数之和为 6,设第一枚骰子点数为 iii,第二枚骰子点数为 jjj,则 i+j=6i + j = 6i+j=6

合法的组合 (满足 1≤i≤51 \le i \le 51i51≤j≤81 \le j \le 81j8) 如下:

骰子 1 点数 (i)骰子 2 点数 (j)总点数 (i+j)
156
246
336
426
516
3. 计算概率(使用概率卷积)

两枚骰子点数之和的概率分布 h(n)h(n)h(n) 是两个独立随机变量概率分布的卷积。求点数加起来为 6 的概率,即求卷积函数 h(n)h(n)h(n)n=6n=6n=6 时的值。

由于骰子 1 和骰子 2 的结果是相互独立的,所以 P(i 且 j)=P(i)×P(j)=f(i)×g(j)P(i \text{ 且 } j) = P(i) \times P(j) = f(i) \times g(j)P(i  j)=P(i)×P(j)=f(i)×g(j)

总概率 h(6)h(6)h(6) 是所有满足 i+j=6i+j=6i+j=6 的组合概率之和:

h(6)=∑iP(骰子 1 为 i 且 骰子 2 为 6−i)h(6) = \sum_{i} P(\text{骰子 } 1 \text{ 为 } i \text{ 且 骰子 } 2 \text{ 为 } 6-i)h(6)=iP(骰子 1  i  骰子 2  6i)

h(6)=∑i=15f(i)×g(6−i)h(6) = \sum_{i=1}^{5} f(i) \times g(6-i)h(6)=i=15f(i)×g(6i)

将所有组合代入公式:

h(6)=f(1)g(5)+f(2)g(4)+f(3)g(3)+f(4)g(2)+f(5)g(1)h(6) = f(1)g(5) + f(2)g(4) + f(3)g(3) + f(4)g(2) + f(5)g(1)h(6)=f(1)g(5)+f(2)g(4)+f(3)g(3)+f(4)g(2)+f(5)g(1)

代入概率值:

h(6)=(0.2×0.125)+(0.2×0.125)+(0.2×0.125)+(0.2×0.125)+(0.2×0.125)h(6) = (0.2 \times 0.125) + (0.2 \times 0.125) + (0.2 \times 0.125) + (0.2 \times 0.125) + (0.2 \times 0.125)h(6)=(0.2×0.125)+(0.2×0.125)+(0.2×0.125)+(0.2×0.125)+(0.2×0.125)

h(6)=5×(0.2×0.125)h(6) = 5 \times (0.2 \times 0.125)h(6)=5×(0.2×0.125)

h(6)=1×0.125h(6) = 1 \times 0.125h(6)=1×0.125

h(6)=0.125h(6) = 0.125h(6)=0.125

结论

两枚骰子点数加起来为 6 的概率是 0.125(或 18\frac{1}{8}81)。

(注: 这个过程清晰地展示了离散概率分布卷积的应用,即求两个独立随机变量之和的概率分布。

二、感受野

介绍了卷积神经网络 (Convolutional Neural Network, CNN) 的核心概念——感受野 (Receptive Field),及其生物学起源。

1. 感受野 (Receptive Field) 的概念来源

  • 研究者: 大卫·休伯尔 (David Hubel) 和 托尔斯滕·维塞尔 (Torsten Wiesel)(图片中写作大卫·休伯尔等)。

  • 研究对象: 猫大脑皮层。

  • 核心发现:

    • 物体在视网膜上投影出影像后,在视觉信号向大脑传导的过程中,并非采用所有神经元的全连接方式

    • 而是首先进行局部处理,经过多个层次的局部处理提取出特征值,再逐层传递。

    • 感受野的定义: 这个局部的大小范围就是“感受野”。

2. 卷积神经网络 (CNN) 的起源

  • 结论: 基于卷积算法思想感受野概念构成的神经网络就被命名为“卷积神经网络”。

  • 意义: CNN\text{CNN}CNN 模仿了生物视觉系统对局部特征的逐层提取和抽象过程。

3. 图像示意

![[Pasted image 20251022130053.png]]

  • 左图: 展示了图像上一个局部区域(方框)对应于视觉系统的一个感受野

  • 右图 (Layered Structure): 展示了 CNN\text{CNN}CNN多层感受野的连接和传递:

    • Layer 1 (第一层): 接受来自输入图像(或前一层)的一个小局部区域(图中绿色和黄色的方块,即该层的感受野)。

    • Layer 2 (第二层): 该层的一个神经元(例如中间的黄色方块)的输入来自于第一层中多个神经元的输出。因此,第二层神经元的感受野(即它能“看到”的原始输入图像区域)比第一层的更大

    • Layer 3 (第三层): 同样,第三层神经元的感受野进一步扩大,它能捕捉到图像中更宏观、更抽象的特征

总结: 感受野是 CNN\text{CNN}CNN 区别于全连接网络的核心特征,它通过局部连接和权重共享(即卷积核)极大地减少了参数数量,并实现了对图像局部特征的有效提取和分层抽象。

三、数字化图像

解释了图像数字化 (Digital Image Representation) 的概念、过程和不同颜色模式的表示方法。

1. 图像数字化的概念和过程 (Image Digitization)

概念:

  • 数字化图像是将模拟图像转化为计算机可处理的数字形式的图像

转换过程:

  • 第一步:采样 (Sampling)

    • 模拟图像经过采样,将连续的空间分割成离散的网格,形成采样图像

    • 每个网格对应图像中的一个小区域(即一个像素)。

  • 第二步:量化 (Quantization)

    • 对采样图像中每个网格的颜色、亮度等信息进行数字化转换

    • 具体的数值来表示,例如用 0−2550-2550255 的整数值来表示亮度或颜色强度。

    • 最终结果: 经过采样和量化得到的图像就是数字化图像

  • 目的: 这些数值方便计算机存储、处理和传输图像信息。

  • 应用: 数字化图像在摄影、影视制作、医疗影像、工业检测等众多领域都有广泛应用。

2. 图像数字化处理和表示方法

  • 图像数字化: 要实现物理世界图像的数字化处理,需要通过扫描仪、数字相机等设备。

  • 彩色图像表示 (Color Image Representation):

    • 数字图像的每个像素用 RGB 三原色表示。

    • 存储: 每种颜色强度用 1 字节存储,取值范围是 0-255

    • 颜色数: 256×256×256≈16777216256 \times 256 \times 256 \approx 16777216256×256×25616777216 种颜色(即 24 位真彩色),能满足计算机区分颜色的需求。

    • 图示: 右上方展示了彩色图像分解成的红色 ®、绿色 (G)、蓝色 (B) 三个独立的数值矩阵(分量)。下方是对应的三个颜色通道图像。

  • 灰度图像表示 (Grayscale Image Representation):

    • 灰度图像用 1 个亮度通道(通常也是 1 字节)表示。

    • 取值范围: 0-2550 为最黑,255 为最亮

    • 黑白图像(二值图像): 是特殊的灰度图像,也常用 1 字节表示,黑 0 白 255。早期因计算机内存小,黑白图像曾常用 1 位表示,黑 0 白 1

总结: 图像数字化是将连续的模拟图像通过采样(空间离散化)和量化(数值离散化)转化为数字矩阵的过程。彩色图像由 RGB\text{RGB}RGB 三个通道(每个通道 8 位)表示,而灰度图像只用一个亮度通道表示。

8.3 卷积神经网络及其实现方法

一、卷积运算

解释了卷积运算 (Convolution Operation) 在处理数字图像时的作用和过程,这是卷积神经网络 (CNN) 的核心机制。

1. 卷积运算的定义

  • 核心: 卷积运算就是通过设计一系列大小适中的卷积核(感受野),对数字图像的各个通道分量(二维矩阵) 进行卷积,提取特征值的过程。

  • 常用卷积核大小: 3×33 \times 33×35×55 \times 55×57×77 \times 77×7

2. 卷积运算过程图解

左侧的图示展示了从输入图像输出特征的整个卷积过程:
![[Pasted image 20251022131146.png]]

  • 输入图像: 一个二维矩阵,包含原始图像的像素值(例如 r11,r12,…\text{r}11, \text{r}12, \dotsr11,r12,)。

  • 卷积核 (Kernel/Filter): 一个小的二维矩阵(图中小黄框),其尺寸就是感受野的大小。它包含了一组用于特征提取的权重参数。

  • 运算过程:

    1. 卷积核在输入图像上滑动(从左上角开始,向右和向下移动)。

    2. 在每个位置,卷积核的元素与输入图像对应区域的像素值进行逐元素相乘

    3. 将所有乘积结果相加,得到一个单一的输出值。

  • 输出特征 (Feature Map): 将所有位置的计算结果排列起来,形成一个新的二维矩阵(a11,a12,…\text{a}11, \text{a}12, \dotsa11,a12,)。这个矩阵就是从输入图像中提取到的特征图

3. 具体数值计算示例

![[Pasted image 20251022131158.png]]
右侧的图示给出了一个具体的数值计算例子:

  • 输入区域: 一个 3×33 \times 33×3 的矩阵(图中绿色数字,表示输入像素值)。

  • 卷积核: 一个 3×33 \times 33×3 的矩阵(图中蓝色数字,表示卷积核权重)。

  • 计算:

    • 卷积核的元素与输入区域的元素逐一相乘,然后求和

    • 计算公式示例: 1×(−1)+0×0+⋯+5×1=01 \times (-1) + 0 \times 0 + \dots + 5 \times 1 = 01×(1)+0×0++5×1=0

    • 结果: 得到的和(图中绿色方块中的 01,图中给出两个计算结果)就是输出特征图上的一个像素值。

总结: 卷积运算是 CNN\text{CNN}CNN 中通过滑动一个小的、可学习的核对输入数据进行局部加权求和,从而将原始像素信息转换为更抽象、更有意义的特征的过程。这个过程是实现图像特征提取的关键。

一、卷积运算

展示了卷积神经网络 (CNN) 中的一个重要预处理步骤——补零操作 (Padding, 补 0),以及使用卷积核 (Kernel) 计算输出特征图(Output Matrix)上一个像素值的过程。

1. 补零操作 (Padding, 补 0)

![[Pasted image 20251022131346.png]]

  • 图示: 在原始 Image Matrix\text{Image Matrix}Image Matrix 的周围添加了一圈值为 0 的像素(图中 Image Matrix\text{Image Matrix}Image Matrix 最外围的一圈 0\text{0}0)。

  • 目的:

    1. 保持空间尺寸: 卷积操作通常会使输出特征图的尺寸小于输入图像。通过补零,可以控制输出尺寸与输入尺寸相同(称为 “Same” Padding)。

    2. 保留边界信息: 图像边缘的像素点在没有补零的情况下只参与少数几次卷积运算,导致其特征信息容易丢失。补零可以确保边缘像素被卷积核充分覆盖,从而更好地保留边界信息。

2. 卷积计算过程

图片展示了如何计算 Output Matrix\text{Output Matrix}Output Matrix 的左上角第一个像素值 (320\text{320}320):

  • 输入图像区域 (Image Matrix\text{Image Matrix}Image Matrix): 3×33 \times 33×3 的区域(图中紫色框),包含了补零后的像素值。

  • 卷积核 (Kernel Matrix\text{Kernel Matrix}Kernel Matrix): 3×33 \times 33×3 的矩阵,其权重为:

    (0−10−15−10−10)\begin{pmatrix} 0 & -1 & 0 \\ -1 & 5 & -1 \\ 0 & -1 & 0 \end{pmatrix}010151010

  • 计算步骤 (逐元素相乘并求和):

    (0×0)+(0×−1)+(0×0)+(0×−1)+(105×5)+(102×−1)+(0×0)+(103×−1)+(99×0)(0 \times 0) + (0 \times -1) + (0 \times 0) + \\ (0 \times -1) + (105 \times 5) + (102 \times -1) + \\ (0 \times 0) + (103 \times -1) + (99 \times 0) \\ (0×0)+(0×1)+(0×0)+(0×1)+(105×5)+(102×1)+(0×0)+(103×1)+(99×0)

    • 计算结果: 0+0+0+0+525−102+0−103+0=3200 + 0 + 0 + 0 + 525 - 102 + 0 - 103 + 0 = \mathbf{320}0+0+0+0+525102+0103+0=320
  • 输出: 计算结果 320\mathbf{320}320 成为 Output Matrix\text{Output Matrix}Output Matrix 左上角的第一个元素(图中绿色方块)。

3. 卷积核的作用(锐化滤波器)

图示中的卷积核 (0−10−15−10−10)\begin{pmatrix} 0 & -1 & 0 \\ -1 & 5 & -1 \\ 0 & -1 & 0 \end{pmatrix}010151010 是一个经典的图像锐化滤波器(或高通滤波器)。它的作用是通过增加中心像素的权重并减去周围像素的权重来增强图像的边缘和细节。

总而言之,该图清晰地演示了 CNN\text{CNN}CNN 中如何通过补零保持尺寸,以及如何通过卷积核滑动窗口、逐元素相乘、求和操作来提取和变换图像特征。

一、卷积运算

详细展示了卷积运算的数学过程,特别是如何通过卷积核计算输出特征图上的每一个元素。

1. 基本假设和输入/输出

  • 假设卷积核 (Kernel\text{Kernel}Kernel) 大小: 3×33 \times 33×3

  • 卷积核参数: 记为 cijc_{ij}cij,其中 iiijjj 的取值范围都是 1∼31 \sim 313

  • 输入图像 (Input Image\text{Input Image}Input Image): 一个矩阵,元素记为 rijr_{ij}rij。图中已经对输入图像进行了补零 (Padding\text{Padding}Padding) 处理(外围一圈的 000)。

  • 输出特征 (Output Feature\text{Output Feature}Output Feature): 一个矩阵,元素记为 aija_{ij}aij

2. 卷积运算过程 (数学公式)

卷积运算是通过将卷积核输入图像上滑动,对重叠区域进行逐元素相乘再求和来实现的。

3×33 \times 33×3 卷积核为例,计算输出特征图上的一个元素 amna_{mn}amn

amn=∑i=13∑j=13cij×r(m+i−2),(n+j−2)a_{mn} = \sum_{i=1}^{3} \sum_{j=1}^{3} c_{ij} \times r_{(m+i-2), (n+j-2)}amn=i=13j=13cij×r(m+i2),(n+j2)

图中具体元素的计算示例:
![[Pasted image 20251022131601.png]]

  • 计算 a11a_{11}a11 (输出特征图的左上角元素):

    a11a_{11}a11 是由卷积核与输入图像左上角 3×33 \times 33×3 区域的元素相乘求和得到的。

    输入图像的该 3×33 \times 33×3 区域为(包含补零):

    (0000r11r120r21r22)\begin{pmatrix} 0 & 0 & 0 \\ 0 & r_{11} & r_{12} \\ 0 & r_{21} & r_{22} \end{pmatrix}0000r11r210r12r22

    其计算过程为(图中第一行公式):

    a11=(c11×0)+(c12×0)+(c13×0)+(c21×0)+(c22×r11)+(c23×r12)+(c31×0)+(c32×r21)+(c33×r22)a_{11} = (c_{11} \times 0) + (c_{12} \times 0) + (c_{13} \times 0) + \\ (c_{21} \times 0) + (c_{22} \times r_{11}) + (c_{23} \times r_{12}) + \\ (c_{31} \times 0) + (c_{32} \times r_{21}) + (c_{33} \times r_{22})a11=(c11×0)+(c12×0)+(c13×0)+(c21×0)+(c22×r11)+(c23×r12)+(c31×0)+(c32×r21)+(c33×r22)

  • 计算 a12a_{12}a12 (向右移动一步):

    卷积核右移一格,与输入图像重叠的 3×33 \times 33×3 区域的左上角从 r11\text{r}11r11 变为 r12\text{r}12r12

    其计算过程为(图中第二行公式):

    a12=(c11×0)+(c12×0)+(c13×0)+(c21×r11)+(c22×r12)+(c23×r13)+(c31×r21)+(c32×r22)+(c33×r23)a_{12} = (c_{11} \times 0) + (c_{12} \times 0) + (c_{13} \times 0) + \\ (c_{21} \times r_{11}) + (c_{22} \times r_{12}) + (c_{23} \times r_{13}) + \\ (c_{31} \times r_{21}) + (c_{32} \times r_{22}) + (c_{33} \times r_{23})a12=(c11×0)+(c12×0)+(c13×0)+(c21×r11)+(c22×r12)+(c23×r13)+(c31×r21)+(c32×r22)+(c33×r23)

  • 计算 a76a_{76}a76 (中间区域的元素):

    计算 a76a_{76}a76 时,卷积核覆盖了输入图像中以 r65r_{65}r65 为中心的一片区域。

    其计算过程为(图中倒数第二行公式):

    a76=(c11×r65)+(c12×r66)+(c13×r67)+(c21×r75)+(c22×r76)+(c23×r77)+(c31×r85)+(c32×r86)+(c33×r87)a_{76} = (c_{11} \times r_{65}) + (c_{12} \times r_{66}) + (c_{13} \times r_{67}) + \\ (c_{21} \times r_{75}) + (c_{22} \times r_{76}) + (c_{23} \times r_{77}) + \\ (c_{31} \times r_{85}) + (c_{32} \times r_{86}) + (c_{33} \times r_{87})a76=(c11×r65)+(c12×r66)+(c13×r67)+(c21×r75)+(c22×r76)+(c23×r77)+(c31×r85)+(c32×r86)+(c33×r87)

  • 计算 a87a_{87}a87 (右下角边缘的元素):

    由于输入图像经过了补零,计算 a87a_{87}a87 时,部分卷积核元素会与 0\text{0}0 相乘。

    其计算过程为(图中最后一行公式):

    a87=(c11×r76)+(c12×r77)+(c13×0)+(c21×r86)+(c22×r87)+(c23×0)+(c31×0)+(c32×0)+(c33×0)a_{87} = (c_{11} \times r_{76}) + (c_{12} \times r_{77}) + (c_{13} \times 0) + \\ (c_{21} \times r_{86}) + (c_{22} \times r_{87}) + (c_{23} \times 0) + \\ (c_{31} \times 0) + (c_{32} \times 0) + (c_{33} \times 0)a87=(c11×r76)+(c12×r77)+(c13×0)+(c21×r86)+(c22×r87)+(c23×0)+(c31×0)+(c32×0)+(c33×0)

3. 结果

  • 最终,通过计算输出特征图上的所有元素(例如 a11a_{11}a11a87a_{87}a87),生成了特征向量 ALR\mathbf{A}_{LR}ALR

  • 注:图中的 ALR\mathbf{A}_{LR}ALR 应该是表示整个输出特征图矩阵 A\mathbf{A}A,其中的 LLLRRR 可能代表某种特定的维度或处理方向,但在 CNN\text{CNN}CNN 中,通常将这个输出矩阵称为特征图 (Feature Map\text{Feature Map}Feature Map)

总而言之,该图展示了卷积运算如何通过卷积核的参数(权重)输入图像的局部数据进行线性加权求和,从而将输入图像转换为抽象的特征表示。

一、卷积运算

描述了在深度学习或计算机视觉中处理多个颜色通道(例如RGB图像)时特征向量生成的步骤:

  1. 计算其他颜色通道:

    • 对其他颜色通道使用卷积运算操作重复计算,共用卷积核C1C_1C1的参数,生成特征向量A1RA_{1R}A1RA1GA_{1G}A1GA1BA_{1B}A1B

    • (注:文字中列出了A1GA_{1G}A1GA1BA_{1B}A1B,根据上下文推测这里可能是在前一步骤(未显示)中已经得到了一个颜色通道的特征A1XA_{1X}A1X,然后对剩下的两个通道进行计算。R,G,BR, G, BR,G,B 通常代表红色、绿色和蓝色通道。)

  2. 采用新的卷积核:

    • 采用新的卷积核C2C_2C2,通常经过神经网络学习后,C2C_2C2C1C_1C1会是不同的参数值,按照卷积运算操作和计算其他颜色通道操作生成特征向量A2RA_{2R}A2RA2GA_{2G}A2GA2BA_{2B}A2B
  3. 生成nnn组特征向量:

    • 重复卷积运算操作、计算其他颜色通道操作和采用新的卷积核操作,生成 nnn组特征向量AnRA_{nR}AnRAnGA_{nG}AnGAnBA_{nB}AnB

    • nnn根据具体任务自由设计

图片右侧的示意图展示了卷积操作的基本过程:
![[Pasted image 20251022133958.png]]

  • 输入(上面的大网格): 这是一个二维的输入层(可能是某一颜色通道或特征图)。

  • 卷积核/滤波器(灰色小方块,覆盖在输入上): 一个小的权重矩阵,用于滑动并与输入数据进行元素乘积并求和。

  • 输出(下面的大网格,实线框中的一个蓝色方块): 卷积操作的结果,即特征图中的一个像素点。

  • 虚线框: 可能表示特征图的完整大小,或者由于“填充(padding)”操作而产生的额外区域。

总结: 这段文字描述了通过使用多个不同的卷积核(C1,C2,…,CnC_1, C_2, \dots, C_nC1,C2,,Cn)对图像的多个颜色通道(R,G,BR, G, BR,G,B)进行卷积操作,从而生成多组(nnn组)特征向量AiR,AiG,AiBA_{iR}, A_{iG}, A_{iB}AiR,AiG,AiB)的过程,这是卷积神经网络(CNN)中提取特征的标准方法。

一、卷积运算

1. 顶部示例:卷积计算过程
  • Image Matrix (图像矩阵): 一个 6×56 \times 56×5 的数字矩阵,代表图像的一个通道的像素值。

  • Kernel Matrix (卷积核矩阵): 一个 3×33 \times 33×3 的矩阵,其参数为 [−1,0,1;−1,5,−1;0,−1,0][-1, 0, 1; -1, 5, -1; 0, -1, 0][1,0,1;1,5,1;0,1,0]

  • Convolution with horizontal and vertical strides = 1 (步长为1的水平和垂直卷积):

    • 计算过程展示了卷积核覆盖图像左上角 3×33 \times 33×3 区域时的计算:

      0×0+0×105+0×1020 \times 0 + 0 \times 105 + 0 \times 1020×0+0×105+0×102

      +0×(−1)+105×5+102×(−1)+ 0 \times (-1) + 105 \times 5 + 102 \times (-1)+0×(1)+105×5+102×(1)

      +0×0+103×(−1)+99×0+ 0 \times 0 + 103 \times (-1) + 99 \times 0+0×0+103×(1)+99×0

      =320= 320=320

    • 计算结果 320\mathbf{320}320 填入 Output Matrix (输出矩阵) 的左上角。

  • 右侧文字:

    • 卷积核就是要训练的参数:这是核心思想,卷积核中的数值(权重)是在神经网络训练过程中学习得到的。

    • 多个卷积核提取不同特征:每个卷积核学习并提取图像中的一种特定特征(如边缘、纹理等)。


• 卷积运算运算中的三个主要参数

这部分列出了影响卷积操作和特征提取的三个关键参数:

1. 卷积核形状 (Kernel Shape)
  • 决定了卷积核的大小。图中列出了几种常见的形状:

    • 3×33 \times 33×3

    • 5×55 \times 55×5

    • 7×77 \times 77×7

  • 卷积核越大,能看到的图像局部区域就越大,提取的特征就越宏观。3×33 \times 33×3 是最常用的形状。

2. 步长 (Stride)
  • 决定了卷积核在输入图像上移动的距离和速度

  • 步长 =1= 1=1 (Stride = 1): 卷积核每次移动一个像素单位,生成与输入尺寸相近的输出特征图(如果进行零填充)。

  • 步长 =2= 2=2 (Stride = 2): 卷积核每次移动两个像素单位。这会使输出特征图的尺寸大幅减小,起到降采样的作用。

3. 卷积核数量 (Number of Kernels)
  • 决定每一层能提取的特征数。

  • 图中所示:一个输入(如狗的图像),经过不同的卷积核(每向下的一组方块代表一个特征图),每个卷积核都会生成一个不同的特征图

  • 例如,如果有 NNN 个卷积核,就会生成 NNN 个特征图,每个特征图代表图像的一种特定抽象特征。

总结: 整张图清晰地阐述了卷积操作的基本原理、计算过程以及构成卷积层设计的三个主要超参数。

二、池化

池化 (Pooling) 的作用与原理

  • 定义: 池化也称下采样 (Downsampling)

  • 作用: 缩小特征图的尺寸减少计算量

  • 原理: 用某一图像子区域块的统计信息来代表该子区域块的全局信息

主要的池化操作类型

CNN中常用的池化操作包括:

  • 最大池化 (Max Pooling)

  • 平均池化 (Average Pooling)

  • 随机池化 (Stochastic Pooling)

  • L2范数池化 (L2\text{L2}L2 Norm Pooling)

  • K\text{K}K-max池化

  • 全局平均池化 (Global Average Pooling)

(注:CNN最常用的是 2×22 \times 22×2 区域进行池化。)

为什么要进行池化?

  1. 聚合空间信息 (Aggregate Spatial Information): 将局部特征聚合成一个统计值,从而实现平移不变性(即图像中的物体即使发生微小移动,提取出的特征也大致相同)。

  2. 使特征图更小且更易于处理 (Smaller and Easier to Process Feature Maps): 减少数据的维度,加快计算速度,并有助于防止过拟合 (Overfitting)

具体的池化操作示例

图片中展示了四种池化方法的计算原理:

池化类型输入区域 (例如 2×2)池化结果 (Output)原理
最大池化(125115137120)\begin{pmatrix} 125 & 115 \\ 137 & 120 \end{pmatrix}(125137115120)137取该区域中的最大值作为输出。
平均池化(33465740)\begin{pmatrix} 33 & 46 \\ 57 & 40 \end{pmatrix}(33574640)44计算该区域所有元素的平均值(33+46+57+40)/4=44(33+46+57+40) / 4 = 44(33+46+57+40)/4=44
随机池化(12111710)\begin{pmatrix} 12 & 11 \\ 17 & 10 \end{pmatrix}(12171110)Random(12, 11, 17, 10)按照某种概率分布(通常基于数值大小),随机选择一个值作为输出。
L2范数池化(19152623)\begin{pmatrix} 19 & 15 \\ 26 & 23 \end{pmatrix}(19261523)192+152+262+232\sqrt{19^2 + 15^2 + 26^2 + 23^2}192+152+262+232计算该区域所有元素的平方和的平方根(L2范数)作为输出。
右侧的平均池化计算示例:

![[Pasted image 20251022134435.png]]
右侧的 6×66 \times 66×6 矩阵(特征图)被分割成 3×33 \times 33×32×22 \times 22×2 的区域,展示了平均池化的计算过程:

  • A1A1A1 (左上角区域): (23+34+15+43)/4=28.75(23+34+15+43) / 4 = 28.75(23+34+15+43)/4=28.75

  • A2A2A2 (第二区域): (55+32+27+30)/4=36(55+32+27+30) / 4 = 36(55+32+27+30)/4=36

  • A9A9A9 (右下角区域): (65+32+29+54)/4=45(65+32+29+54) / 4 = 45(65+32+29+54)/4=45

最终,这 999 个计算结果(A1A1A1A9A9A9)就构成了缩小后的 3×33 \times 33×3 池化结果图

三、归一化

归一化 (Normalization) 的目的和方法

目的
  • 问题: 模型的训练需要高质量的数据。如果多个特征值的输入数据分布严重不均数值范围差异巨大,则会产生训练不可收敛或其他不可预料的问题

  • 解决方案: 应该让不同特征值的数据取值范围一致

核心方法
  • 最简单的处理方法就是 归一化 (Normalization),即:

    将特征值的取值范围**压缩在** 0∼1 **之间**。\text{将特征值的取值范围**压缩在** } \mathbf{0 \sim 1} \text{ **之间**。}将特征值的取值范围**压缩在** 01 **之间**

归一化公式

图片中展示的归一化方法是最小-最大归一化 (Min-Max Normalization),其公式为:

y=x−min⁡max⁡−min⁡y = \frac{x - \min}{\max - \min}y=maxminxmin

其中:

  • xxx 是原始数据中的某个特征值。

  • min⁡\minmin 是该特征所有数据中的最小值

  • max⁡\maxmax 是该特征所有数据中的最大值

  • yyy 是归一化后的新值(其取值范围在 [0,1][0, 1][0,1] 之间)。

归一化处理示例

图片展示了“原始数据”经过“归一化处理”得到“归一化后数据”的过程:

原始数据特征 1特征 2
Max900090009000999
Min100010001000111

特征 1 的归一化计算:

y=x−10009000−1000=x−10008000y = \frac{x - 1000}{9000 - 1000} = \frac{x - 1000}{8000}y=90001000x1000=8000x1000

特征 2 的归一化计算:

y=x−19−1=x−18y = \frac{x - 1}{9 - 1} = \frac{x - 1}{8}y=91x1=8x1

序号原始数据 特征 1 (x)归一化后 特征 1 (y)原始数据 特征 2 (x)归一化后 特征 2 (y)
130003000−10008000=0.25\frac{3000-1000}{8000} = 0.25800030001000=0.2533−18=0.25\frac{3-1}{8} = 0.25831=0.25
250005000−10008000=0.5\frac{5000-1000}{8000} = 0.5800050001000=0.555−18=0.5\frac{5-1}{8} = 0.5851=0.5
390009000−10008000=1\frac{9000-1000}{8000} = 1800090001000=199−18=1\frac{9-1}{8} = 1891=1
420002000−10008000=0.125\frac{2000-1000}{8000} = 0.125800020001000=0.12522−18=0.125\frac{2-1}{8} = 0.125821=0.125
510001000−10008000=0\frac{1000-1000}{8000} = 0800010001000=011−18=0\frac{1-1}{8} = 0811=0
640004000−10008000=0.375\frac{4000-1000}{8000} = 0.375800040001000=0.37544−18=0.375\frac{4-1}{8} = 0.375841=0.375

结果: 经过归一化处理后,原始数据中数值范围差异巨大的两个特征(特征 1: [1000,9000][1000, 9000][1000,9000];特征 2: [1,9][1, 9][1,9])都被成功压缩到相同的 [0,1][0, 1][0,1] 范围内,从而确保了模型训练的稳定性和效率。

四、CNN模型

1. 简单的卷积神经网络 (Simple CNN)

![[Pasted image 20251022134648.png]]
这是上方的图示,代表了基础且常见的 CNN 结构。

层类型英文缩写功能描述
输入层Input\text{Input}Input接收原始数据,例如图像。
卷积 + 最大池化层Conv + Maxpool\text{Conv + Maxpool}Conv + Maxpool卷积层 (Conv\text{Conv}Conv) 提取特征,最大池化层 (Maxpool\text{Maxpool}Maxpool) 减小尺寸并增加平移不变性。这个过程通常重复多次。
全连接层FC\text{FC}FC位于网络末端,将前面提取到的特征展平后进行分类回归计算。
输出层Output\text{Output}Output给出最终结果,例如分类的概率分数或具体的回归值。

特点: 这种结构简单、模块化,是理解和构建 CNN\text{CNN}CNN 的基础范式。


2. AlexNet 拓扑结构 (AlexNet Architecture)

这是下方的图示,是 2012 年 ImageNet\text{ImageNet}ImageNet 挑战赛的冠军模型,标志着深度学习在计算机视觉领域的重大突破。
![[Pasted image 20251022134710.png]]

层名称尺寸变化功能描述
输入数据227×227×3227 \times 227 \times 3227×227×3接收 227×227227 \times 227227×227 像素的 RGB\text{RGB}RGB 图像(3个颜色通道)。
Conv1\text{Conv1}Conv155×55×9655 \times 55 \times 9655×55×96第一层卷积,特征数量增加到 96 个。
Conv2\text{Conv2}Conv227×27×25627 \times 27 \times 25627×27×256第二层卷积,通常会伴随池化操作,尺寸减半。
Conv3\text{Conv3}Conv313×13×38413 \times 13 \times 38413×13×384中间卷积层,特征图尺寸进一步减小。
Conv4\text{Conv4}Conv413×13×38413 \times 13 \times 38413×13×384卷积层。
Conv5\text{Conv5}Conv513×13×25613 \times 13 \times 25613×13×256最后一个卷积层。
FC6\text{FC6}FC6 / FC7\text{FC7}FC7409640964096两个全连接层,特征维度展平为 4096 维。
FC8\text{FC8}FC8Class Number\text{Class Number}Class Number最终的全连接层,输出类别数量的得分,用于分类。

AlexNet 结构的关键特点:

  1. 深度: 结构包含 8 层(5个卷积层 + 3个全连接层),比当时流行的网络更深。

  2. ReLU\text{ReLU}ReLU 激活函数: (ReLU\text{ReLU}ReLU:Rectified Linear Unit) AlexNet\text{AlexNet}AlexNet 首次大规模使用 ReLU\text{ReLU}ReLU,解决了传统激活函数(如 Sigmoid\text{Sigmoid}Sigmoid)的梯度消失问题。

  3. Dropout\text{Dropout}Dropout (未在图中明确标注): 用于全连接层,防止过拟合。

  4. 局部响应归一化 (LRN\text{LRN}LRN, 早期版本使用): 帮助模型泛化。

  5. Side Supervision (侧向监督/分组训练): 图中用红框标出,特别是早期 AlexNet 模型为了在两块 GPU 上并行训练,将网络拆分成两个流,并在某些层引入了侧向监督(通过SVM\text{SVM}SVM 或其他分类器进行辅助判断),尽管现代 CNN\text{CNN}CNN 已不再常用此方法,但它代表了 AlexNet 的一个原始设计特征。

  6. 大规模数据: 依赖 ImageNet\text{ImageNet}ImageNet 的大规模数据进行训练。

总结: AlexNet 是一个具有里程碑意义的深度 CNN 模型,它的出现验证了通过更深的网络结构、更大的数据集和 GPU\text{GPU}GPU 加速可以显著提高图像识别的准确率。

CNN 模型本质——层次性特征学习

层次性特征学习的定义
  • 核心观点: 深度神经网络之所以如此强大,一个很重要的原因在于它可以通过层次性处理逐渐抽取抽象特征

  • 过程描述: 随着网络层次的深入,模型能够从原始数据中学习到越来越复杂的特征。

层次性特征的演化(自下而上)

图片上方展示了特征从低级到高级的演化过程:

  1. Edges (边缘): 最底层的特征,例如图像中物体轮廓的线条和边界。

  2. Textures (纹理): 中低级特征,由简单的边缘组合而成的细微表面模式,如点状、颗粒状。

  3. Patterns (图案): 中级特征,由纹理组合成的固定形状和重复结构,例如花瓣的形状。

  4. Parts (部件): 中高级特征,图案组合成的具有语义意义的物体部件,例如动物的眼睛、鼻子、耳朵。

  5. Objects (物体): 最高级特征,所有部件组合成的完整物体或场景,例如完整的狗群或花朵。

总结: 随着层次的深入,低级特征逐渐向高级特征进化。

层次性特征学习的意义

右下方列出了层次性特征学习的三个重要意义:

  1. 抽象特征具有很强的不变性:

    • 例如,抽象特征不会随外貌动作的改变而改变,还是一个人

    • 这指的是特征对平移、缩放、旋转等微小变化的鲁棒性(不变性),这是 CNN\text{CNN}CNN 在视觉任务中表现优秀的关键。

  2. 从数据中自动获得:

    • 特征无需人工设计,而是通过反向传播和优化算法在大量数据中自动学习和提取。这大大减少了对领域专家的依赖。
  3. 简化设计,避免人为设计的主观性:

    • 由于特征是自动学习的,因此避免了传统计算机视觉中人工设计特征时可能带有的主观偏差低效性,使得模型能够学习到更优、更通用的特征表示。

与人脑的类比

左下方图示将深度学习的层次性特征提取过程与人脑的视觉皮层进行类比:

  • Lower Level (低级): 对应于 CNN\text{CNN}CNN 的浅层,处理简单的特征(如线条、颜色变化)。

  • Higher Level (高级): 对应于 CNN\text{CNN}CNN 的深层,处理复杂的、抽象的语义特征(如物体的形状、身份)。

这表明深度神经网络的分层处理机制与生物体的认知机制有相似之处。

1. 展平 (Flatten) 操作

![[Pasted image 20251022135931.png]]

  • 作用: 用于将多维的数据降为一维,以便接入多层感知机 (MLP\text{MLP}MLP)全连接层 (FC\text{FC}FC),完成最后的分类任务。

  • 过程图解(左上):

    • 输入: 卷积层或池化层输出的特征图(例如 64×16×1664 \times 16 \times 1664×16×16 的三维数据块,代表 64 个 16×1616 \times 1616×16 的特征图)。

    • 展平: 将该三维数据拉伸成一个长长的一维向量(例如 64×16×16=1638464 \times 16 \times 16 = 1638464×16×16=16384 维)。

    • MLP\text{MLP}MLP / 全连接层: 该一维向量作为 MLP\text{MLP}MLP 的输入,经过多层运算(例如降维到 150 维)。

    • 分类 (Softmax\text{Softmax}Softmax): 最终输出层使用 Softmax\text{Softmax}Softmax 激活函数,输出对应类别的概率。

  • 过程图解(右上):

    • 将一个 3×33 \times 33×3 的矩阵(例如 (123456789)\begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix}147258369)按顺序拉伸成一个一维向量:(123456789)\begin{pmatrix} 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 \end{pmatrix}(123456789)

2. 独热编码 (One-Hot Code)

  • 定义: 在分类问题中,我们不能将不同的类别简单地用 1,2,3,…1, 2, 3, \dots1,2,3, 这种有序的数字来表示(因为数字之间隐含的大小关系会误导模型)。

  • 编码方式: 只能通过独热编码这样的向量/矩阵来进行编码,供计算机识别计算。

  • 预测方式: 模型通过预测向量中所在索引位置的概率来预测最终的分类结果。

独热编码 - 编码 (Ground Truth)

这是真实标签的表示方法,即模型应该学习到的目标输出:

真实标签
10000
01000
  • 对于**“猫”**这个样本,其目标向量是 [1,0,0,0,0][1, 0, 0, 0, 0][1,0,0,0,0]

  • 对于**“狗”**这个样本,其目标向量是 [0,1,0,0,0][0, 1, 0, 0, 0][0,1,0,0,0]

前馈网络运算结果 (Predicted Probability)

这是模型(例如 Softmax\text{Softmax}Softmax 层)的输出,表示模型对每个类别的预测概率:

预测样本求和
预测猫0.760.180.030.020.011
预测狗0.050.920.010.010.011
  • 预测猫的样本: 模型预测“猫”的概率为 0.76,是所有类别中最高的,因此模型预测正确。

  • 预测狗的样本: 模型预测“狗”的概率为 0.92,是所有类别中最高的,因此模型预测正确。

  • 特点: Softmax\text{Softmax}Softmax 输出的概率向量求和必须等于 1

总结: 展平是数据从特征图到全连接层的桥梁;独热编码是分类任务中表示目标标签和模型输出概率的标准方式。

四、CNN模型(MindSpore实现)

# 导入必要的模块和库
import mindspore  # 导入 MindSpore 深度学习框架
import mindspore.nn as nn  # 导入神经网络模块
from mindspore import Tensor  # 导入 Tensor 数据结构
import mindspore.dataset as ds  # 导入数据集处理模块
import mindspore.dataset.vision as vision  # 导入图像处理模块
import numpy as np  # 导入 NumPy 数学库

# 定义一个函数用于加载 MNIST 数据集
def create_dataset(batch_size=64):
    # 加载 MNIST 训练数据集
    mnist_train = ds.MnistDataset(dataset_dir='./MNIST_Data/train', usage='train')
    # 定义图像预处理操作:归一化和通道转换
    transform = [vision.Rescale(1.0 / 255.0, 0.0), vision.HWC2CHW()]
    # 对数据集应用预处理操作
    mnist_train = mnist_train.map(operations=transform, input_columns="image")
    # 按批次加载数据
    mnist_train = mnist_train.batch(batch_size)
    return mnist_train

# 定义一个简单的 CNN 模型,继承自 nn.Cell
class SimpleCNN(nn.Cell):
    def __init__(self):
        super(SimpleCNN, self).__init__()  # 调用父类构造函数
        # 第一个卷积层,输入通道数为 1,输出通道数为 32
        self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1)
        # ReLU 激活函数
        self.relu1 = nn.ReLU()
        # 最大池化层,池化窗口大小为 2x2,步长为 2
        self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2)
        # 第二个卷积层,输入通道数为 32,输出通道数为 64
        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1)
        # ReLU 激活函数
        self.relu2 = nn.ReLU()
        # 最大池化层,池化窗口大小为 2x2,步长为 2
        self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2)
        # 展平层,用于将多维特征图展平为一维向量
        self.flatten = nn.Flatten()
        # 第一个全连接层,输入大小为 64*7*7,输出大小为 128
        self.fc1 = nn.Dense(64 * 7 * 7, 128)
        # 第二个全连接层,输入大小为 128,输出大小为 10(对应 10 个类别)
        self.fc2 = nn.Dense(128, 10)

    # 定义前向传播过程
    def construct(self, x):
        # 第一个卷积块:卷积 -> ReLU -> 池化
        x = self.pool1(self.relu1(self.conv1(x)))
        # 第二个卷积块:卷积 -> ReLU -> 池化
        x = self.pool2(self.relu2(self.conv2(x)))
        # 展平特征图
        x = self.flatten(x)
        # 第一个全连接层
        x = self.fc1(x)
        # 第二个全连接层(输出层)
        x = self.fc2(x)
        return x

# 初始化网络、损失函数和优化器
net = SimpleCNN()  # 实例化 CNN 模型
# 定义交叉熵损失函数,sparse=True 表示标签是整数索引
loss_fn = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')
# 定义 Adam 优化器,学习率为 0.001
optimizer = nn.Adam(net.trainable_params(), learning_rate=0.001)

# 构建模型
model = mindspore.Model(net, loss_fn=loss_fn, optimizer=optimizer, metrics={"Accuracy": nn.Accuracy()})

# 加载数据集并训练模型
train_dataset = create_dataset()  # 加载训练数据集
# 训练模型,epoch=5 表示训练 5 轮
model.train(epoch=5, train_dataset=train_dataset, dataset_sink_mode=False)

# 推理测试
dummy_input = Tensor(np.random.rand(1, 1, 28, 28), mindspore.float32)  # 创建一个随机输入
output = net(dummy_input)  # 前向传播得到输出
print("模型输出 logits:", output)  # 打印输出结果

五、案例

一、 AlexNet 的历史地位与成就

![[Pasted image 20251022140439.png]]

  • 成就总结:2012\mathbf{2012}2012 年,辛顿组开发的 AlexNet\mathbf{AlexNet}AlexNetImageNet\mathbf{ImageNet}ImageNet 分类比赛中以压倒性优势取得冠军,证明了深度神经网络的强大。”

  • 右侧图表 (ImageNet Classification Error (Top 5)\text{ImageNet Classification Error (Top 5)}ImageNet Classification Error (Top 5)):

    • 该图表显示了历届 ImageNet\text{ImageNet}ImageNet 挑战赛中(预测结果前 5 名的错误率)的最低错误率。

    • 2011\mathbf{2011}2011 年,传统方法的错误率仍高达 26.0%26.0\%26.0%

    • 2012\mathbf{2012}2012 年,AlexNet\mathbf{AlexNet}AlexNet (Hinton/Toronto) 将错误率大幅降至 16.4%16.4\%16.4%,开启了深度学习在计算机视觉中的时代。

    • 随后的几年(ZFNet, GoogLeNet, ResNet\text{ZFNet, GoogLeNet, ResNet}ZFNet, GoogLeNet, ResNet 等)错误率持续下降,证明了深度 CNN\text{CNN}CNN 架构的有效性。

二、 AlexNet 的拓扑结构(顶部和底部图)

AlexNet 是一个包含 5 个卷积层 (Conv\text{Conv}Conv)3 个全连接层 (FC\text{FC}FC) 的深层网络。

1. 结构概览(左上图)

该图展示了 AlexNet 早期设计中的一个重要特点:分组卷积(将网络分为上下两部分,以便在多块 GPU\text{GPU}GPU 上并行训练)。

层次 (Layer)尺寸变化关键操作
Input\text{Input}Input224×224×3224 \times 224 \times 3224×224×3原始 RGB\text{RGB}RGB 图像输入。
Conv1\text{Conv1}Conv155×55×48×255 \times 55 \times 48 \times 255×55×48×2第一次卷积。图中显示了 Stride=4\text{Stride=4}Stride=4。输出被分成两组,每组 48 个特征图。
Max Pooling\text{Max Pooling}Max Pooling27×27×48×227 \times 27 \times 48 \times 227×27×48×2最大池化,尺寸减半。
Local Response Normalization\text{Local Response Normalization}Local Response Normalization-局部响应归一化(早期 CNN\text{CNN}CNN 用于增强模型泛化性,现代 CNN\text{CNN}CNN 已被批量归一化 (Batch Norm\text{Batch Norm}Batch Norm) 取代)。
Conv2\text{Conv2}Conv227×27×128×227 \times 27 \times 128 \times 227×27×128×2第二次卷积。
Max Pooling\text{Max Pooling}Max Pooling + LRN\text{LRN}LRN13×13×128×213 \times 13 \times 128 \times 213×13×128×2第二次池化。
Conv3\text{Conv3}Conv313×13×192×213 \times 13 \times 192 \times 213×13×192×2第三次卷积。
Conv4\text{Conv4}Conv413×13×192×213 \times 13 \times 192 \times 213×13×192×2第四次卷积。
Conv5\text{Conv5}Conv513×13×128×213 \times 13 \times 128 \times 213×13×128×2第五次卷积。
Max Pooling\text{Max Pooling}Max Pooling6×6×128×26 \times 6 \times 128 \times 26×6×128×2最后一次池化。
Flatten\text{Flatten}Flatten / Dense\text{Dense}Dense4096×2\mathbf{4096 \times 2}4096×2 (共 8192)将特征图展平,连接到全连接层。
Dense\text{Dense}Dense100010001000最终输出 1000 个类别分数。
2. AlexNet 拓扑结构(底部图)

![[Pasted image 20251022140519.png]]
底部图是 AlexNet 结构的标准简化表示,重点突出了特征图尺寸和数量的变化:

  • Input Data\text{Input Data}Input Data: 227×227×3227 \times 227 \times 3227×227×3

  • Conv1\text{Conv1}Conv1: 55×55×9655 \times 55 \times 9655×55×96

  • Conv2\text{Conv2}Conv2: 27×27×25627 \times 27 \times 25627×27×256

  • Conv3\text{Conv3}Conv3 / Conv4\text{Conv4}Conv4: 13×13×38413 \times 13 \times 38413×13×384

  • Conv5\text{Conv5}Conv5: 13×13×25613 \times 13 \times 25613×13×256

  • FC6\text{FC6}FC6 / FC7\text{FC7}FC7: 409640964096 维全连接层。

  • FC8\text{FC8}FC8: 输出类别数量

  • Side Supervision (侧向监督\text{侧向监督}侧向监督): 底部图用红框标注了 Conv3, Conv4, Conv5\text{Conv3, Conv4, Conv5}Conv3, Conv4, Conv5 处的 Side Supervision\text{Side Supervision}Side Supervision。这是 AlexNet 在早期训练时用于辅助训练增加泛化性的方法(通常是通过 SVM\text{SVM}SVM 或其他分类器进行辅助判断),是其历史结构的一个标志。

总结: AlexNet 的成功证明了深度 CNN\text{CNN}CNN 在大规模图像分类任务中的优越性,其结构至今仍是许多现代 CNN\text{CNN}CNN 的基础。

AlexNet网络各层的参数

AlexNet 网络结构参数表

第一部分:卷积层 (Convolutional Layers)

这一部分包含 5 个卷积块,通常每个卷积块包含一个卷积操作、一个 ReLU\text{ReLU}ReLU 激活函数,可能跟随一个池化操作。

层数 (Layer Index)算法 (Operation)Kernels (输出特征图数)Kernel Size (卷积核尺寸)Padding (填充)Stride (步长)Output Size (输出特征图尺寸)
1卷积 (Conv\text{Conv}Conv)9611×1111 \times 1111×11[1,2][1, 2][1,2] (注: 可能是指在 55×5555 \times 5555×55 的特征图上进行 11×1111 \times 1111×11 卷积的填充和步长,其确切含义在 AlexNet 的原始实现中有所不同,但目的是保持尺寸或达到目标输出)4[55,55,96][55, 55, 96][55,55,96]
激活函数 (Activation\text{Activation}Activation)-----
最大池化 (Max Pooling\text{Max Pooling}Max Pooling)-3×33 \times 33×302[27,27,96][27, 27, 96][27,27,96]
2卷积 (Conv\text{Conv}Conv)2565×55 \times 55×5[2,2][2, 2][2,2]1[27,27,256][27, 27, 256][27,27,256]
激活函数 (Activation\text{Activation}Activation)-----
最大池化 (Max Pooling\text{Max Pooling}Max Pooling)-3×33 \times 33×302[13,13,256][13, 13, 256][13,13,256]
3卷积 (Conv\text{Conv}Conv)3843×33 \times 33×3[1,1][1, 1][1,1]1[13,13,384][13, 13, 384][13,13,384]
激活函数 (Activation\text{Activation}Activation)-----
4卷积 (Conv\text{Conv}Conv)3843×33 \times 33×3[1,1][1, 1][1,1]1[13,13,384][13, 13, 384][13,13,384]
激活函数 (Activation\text{Activation}Activation)-----
5卷积 (Conv\text{Conv}Conv)2563×33 \times 33×3[1,1][1, 1][1,1]1[13,13,256][13, 13, 256][13,13,256]
激活函数 (Activation\text{Activation}Activation)-----
最大池化 (Max Pooling\text{Max Pooling}Max Pooling)-3×33 \times 33×302[6,6,256][6, 6, 256][6,6,256]

关键观察点:

  1. 尺寸变化: 输入到第一个卷积层的步长 Stride=4\text{Stride=4}Stride=4 导致尺寸快速减小(从 227×227227 \times 227227×227 左右到 55×5555 \times 5555×55)。池化操作 Stride=2\text{Stride=2}Stride=2 进一步将尺寸减半(55→27→13→655 \to 27 \to 13 \to 65527136)。

  2. 特征数量增加: 随着网络深入,特征图的数量(Kernels\text{Kernels}Kernels)从 96 增加到 384,然后回到 256,意味着网络提取的特征种类先增加后稳定。

  3. 小卷积核: 核心特征提取集中在 3×33 \times 33×35×55 \times 55×5 的卷积核。


第二部分:全连接网络层 (Fully Connected Layers)

这一部分将卷积层提取的特征(6×6×2566 \times 6 \times 2566×6×256)展平后进行分类计算。

层数 (Layer Index)算法 (Operation)Input Size (输入尺寸)Output Size (输出尺寸)Dropout激活函数 (Activation)
1 (FC6)全连接 (FC\text{FC}FC)256×6×6=9216256 \times 6 \times 6 = 9216256×6×6=921640960.5ReLU\text{ReLU}ReLU
2 (FC7)全连接 (FC\text{FC}FC)409640960.5ReLU\text{ReLU}ReLU
3 (FC8)全连接 (FC\text{FC}FC)4096numClass\text{numClass}numClass (类别数量)-Softmax\text{Softmax}Softmax

关键观察点:

  1. 展平输入: 最后的卷积输出是 6×6×256=92166 \times 6 \times 256 = 92166×6×256=9216 维的向量作为 FC\text{FC}FC 层的输入。(注:图中 Input size\text{Input size}Input size 写作 256×6×6256 \times 6 \times 6256×6×6,其乘积 921692169216 才是输入 FC\text{FC}FC 层的实际维度)。

  2. 高维特征: 中间的 FC\text{FC}FC 层将特征维度扩展到 4096,包含大量的参数。

  3. 防止过拟合: FC\text{FC}FC 层中使用了 Dropout=0.5\text{Dropout=0.5}Dropout=0.5,以随机丢弃一半神经元的方式来防止训练数据上的过拟合

  4. 最终分类: 最后一层使用 Softmax\text{Softmax}Softmax 激活函数,将 4096 维特征映射到 numClass\text{numClass}numClass 维的类别概率输出。

8.4 CNN的应用领域

一、图像分类

AlexNet 的历史意义和创新

历史意义
  • 时间与事件: 2012\mathbf{2012}2012 年,AlexNet\mathbf{AlexNet}AlexNetImageNet 大规模视觉识别挑战赛 (ILSVRC\text{ILSVRC}ILSVRC) 中夺冠。

  • 核心贡献: 首次验证了深度卷积神经网络 (CNN\text{CNN}CNN) 在大规模图像分类中的有效性。 这一成就标志着深度学习时代的真正开启,并确立了 CNN\text{CNN}CNN 在计算机视觉领域的主导地位。

AlexNet 的结构和创新点
  • 网络深度: AlexNet\mathbf{AlexNet}AlexNet 共有 8 层权重层,包括 5\mathbf{5}5卷积层 (Conv\text{Conv}Conv) 和 3\mathbf{3}3全连接层 (FC\text{FC}FC 层)。

  • 引入的重要创新:

    1. 激活函数 (ReLU\text{ReLU}ReLU): 大规模使用了 ReLU\text{ReLU}ReLU(修正线性单元),解决了传统 Sigmoid\text{Sigmoid}Sigmoidtanh\text{tanh}tanh 激活函数带来的梯度消失问题,加速了网络训练。

    2. Dropout\text{Dropout}Dropout 正则化: 在全连接层引入 Dropout\text{Dropout}Dropout,以随机丢弃神经元的方式来防止过拟合,增强模型的泛化能力。

    3. 重叠池化 (Overlapping Pooling\text{Overlapping Pooling}Overlapping Pooling): 使用的池化窗口大于步长,使得相邻池化单元之间有重叠,这在一定程度上可以避免训练误差增加。

  • 性能提升关键: 它通过增加网络的深度和宽度,结合 GPU 加速(原始设计使用双 GPU\text{GPU}GPU 进行分组训练),极大地提升了 CNN\text{CNN}CNN 的能力。

图片底部图示

  1. ImageNet 大规模视觉识别挑战赛 (ILSVRC\text{ILSVRC}ILSVRC):
    ![[Pasted image 20251022141003.png]]

    • 左侧的图示是 ImageNet\text{ImageNet}ImageNet 数据集的一个拼贴图,展示了该数据集包含的大规模(数百万张)和多样化(数千个类别)的图像。正是这个大规模数据集和 AlexNet\text{AlexNet}AlexNet 结合,才释放了深度学习的潜力。
  2. AlexNet 架构细节:
    ![[Pasted image 20251022140943.png]]

    • 右侧图示展示了 AlexNet\text{AlexNet}AlexNet 的结构图,包括特征图的尺寸变化(如 55→27→1355 \to 27 \to 13552713)和特征图的数量(如 48×2→128×248 \times 2 \to 128 \times 248×2128×2)。它明确显示了 Conv\text{Conv}Conv(卷积)、Max Pooling\text{Max Pooling}Max Pooling(最大池化)以及 Local Response Normalization (LRN\text{LRN}LRN,局部响应归一化,早期 AlexNet\text{AlexNet}AlexNet 用于辅助泛化)等组件的位置。

总结: AlexNet\text{AlexNet}AlexNet 不仅仅是一个模型,它代表了深度学习在图像识别领域的范式转变,其引入的关键技术至今仍是现代 CNN\text{CNN}CNN 的核心组件。

介绍深度学习领域在图像识别竞赛(ImageNet)中的发展历程,特别强调了残差网络(ResNet) 的出现及其带来的“深度革命”。

图片中的关键信息包括:

  1. 2014年GoogLeNetVGGNet成为ImageNet竞赛的焦点。

  2. 2015年微软超深残差网络ResNet152层深度将错误率降低至3.57%首次超越人类水平(人类错误率5.1%)。其核心创新是残差连接,解决了深层网络梯度消失问题。
    ![[Pasted image 20251022141359.png]]

  3. 左侧图表:展示了历年ImageNet竞赛冠军及冠军网络识别错误率,清晰地显示了从2010年到2017年错误率的显著下降,以及ResNet在2015年将错误率大幅度降低(从3.6%到3.57%,图中标注3.6%),并超越了人类(5.1%)。图中用红色方框和“深度革命”标注了ResNet及其后续变种的突出贡献。

  4. 右侧图表:展示了深层残差网络ResNet训练曲线,比较了不同层数(20层到110层)ResNet的训练错误率(error)随迭代次数(iter.)的变化。该图通常用来证明ResNet在增加深度时仍然能够有效训练并取得更低错误率的优势。

总结来说,图片的核心主题是: 残差网络(ResNet)通过引入残差连接,成功地解决了超深层网络的训练问题,并在2015年首次将ImageNet图像识别错误率降低到人类水平之下,标志着深度学习在图像识别领域的一次重要突破(深度革命)。

残差网络(ResNet) 及其相关技术在不同领域的 应用

主要分为两个大方面:

1. 医疗领域

  • 视网膜病变诊断: 基于ResNet的模型在视网膜病变检测中,可达到专家级精度

  • 病理图像分析: 自动识别病变部分,如癌细胞等,大幅提升筛查效率

  • 左下方配图: 展示了基于ResNet的糖尿病视网膜病变辅助诊断模型,通过热力图(heatmap)的方式显示了模型识别出的病变区域。

2. 工业与安防

  • 人脸识别:

    • 在LFW数据集上识别准确率超99.5%

    • 应用于身份核验、安防监控、智能相册等。

  • 缺陷检测:

    • 制造业中自动识别产品瑕疵等。
  • 右下方配图: 展示了人脸识别技术日益成熟的应用场景,图示中有一位女性面部被分析,背景有数据和识别框。
    ![[Pasted image 20251022141549.png]]

总结来说,图片的核心内容是介绍深度学习模型ResNet的强大泛化能力,使其在医疗领域的辅助诊断和工业安防领域的人脸识别、缺陷检测等方面都取得了重要的应用成果。

二、物体检测

⚫从图像识别到物体检测:R-CNN的突破性设计

介绍了物体检测领域的挑战以及区域卷积神经网络(R-CNN) 这一早期重要技术。

关键信息点如下:

1. 物体检测领域挑战

  • 定义: 物体检测是指确定图像中存在的物体,即对非限定类别的、多个物体进行检测,并确定其位置

  • 难度: 这项任务的难度比单个图像识别高很多

2. 任务核心

  • 候选区域筛选

  • 冗余区域去除

3. 一项新技术应运而生:区域卷积神经网络 (R-CNN)

  • 全称: R-CNN 是 Regions with Convolutional Neural Networks 的缩写。

  • 工作原理:

    • 它能通过选择性搜索(Selective Search) 的分割方法从图像中提取候选区域

    • 再对每个区域进行类别提取

    • 对于未在训练类别里的物体,可以通过迁移学习的方式,用新数据集进行微调训练

    • R-CNN 还能识别区域是否属于背景,这里使用了支持向量机(SVM) 进行识别。

总结: 图片解释了物体检测任务的复杂性,并介绍了R-CNN作为一种开创性的技术,通过结合选择性搜索、CNN特征提取、迁移学习和SVM分类等方法,解决了物体检测中的核心问题,推动了该领域的发展。

R-CNN 算法的基本流程分为4个步骤:

  1. 候选区域生成:

    • 一张图像生成 1K∼2K1K \sim 2K1K2K候选区域

    • 流程图中的对应步骤是:“选择性搜索生成候选区域”。

  2. 特征提取:

    • 对每个候选区域,使用深度卷积神经网络(CNN)提取特征

    • 流程图中的对应步骤是:“CNN特征提取”。

  3. 类别判断:

    • 特征送入每一类SVM分类器,判断是否属于该类。

    • 流程图中的对应步骤是:“SVM分类器判断类别”。

  4. 位置精修:

    • 使用回归器精细修正候选框位置

    • 流程图中的对应步骤是:“边界框回归微调位置”。

下方配图(“农夫骑马图”流程)

下方的图示(以“农夫骑马图”为例)直观地展示了这4个步骤:
![[Pasted image 20251022141914.png]]

  1. Input image: 原始输入图像。

  2. Extract region proposals (∼2k\sim 2k2k): 使用选择性搜索等方法提取出 2K2K2K 个候选框(图中有黄色框)。

  3. Compute CNN features: 将候选区域(可能经过形变/warped)送入 CNN 中计算特征。

  4. Classify regions: 使用分类器(如SVM)对特征进行分类(例如:aeroplane? no., person? yes., tvmonitor? no.),并用边界框回归精修位置。

总结: R-CNN通过结合传统的选择性搜索方法来生成潜在目标区域,再利用强大的深度学习模型(CNN) 来提取特征,最后使用SVM边界框回归来完成高精度的物体分类和定位。

R-CNN技术及其后续的演进路径

总结了从2014年到2017年物体检测领域几个重要的里程碑算法及其核心贡献。

演进路径如下:

年份算法名称核心技术/贡献提升效果/应用
2014R-CNN提出 “候选区域提取-CNN特征-SVM分类” 范式,结合迁移学习,显著提升检测精度。
2015Fast R-CNN通过 ROI池化(Region of Interest Pooling)层 统一不同尺寸候选区域特征,训练效率比R-CNN提升10倍道路状态识别(右侧配图:目标检测,用矩形框和类别概率识别出汽车、公交车等)。
2015Faster R-CNN提出 区域提议网络(RPN, Region Proposal Network),将候选区域生成集成到网络中,速度比Fast R-CNN快10倍且精度更高
2017Mask R-CNN在Faster R-CNN基础上增加 掩模预测分支(Mask Prediction Branch),成为首个高效解决 实例分割 问题的通用框架。分割癌细胞或组织(右侧配图:实例分割,用不规则的边界框和掩模精细分割出细胞区域)。

总结: R-CNN系列算法的演进核心在于不断提高物体检测的速度和精度,特别是通过引入ROI池化RPN等技术,并将应用领域从单纯的物体检测扩展到了更精细的实例分割(Mask R-CNN)。

三、图像分割

介绍了图像分割任务的定义、全卷积网络(FCN) 这一关键技术及其在多个领域的应用。

1. 图像分割任务与全卷积网络(FCN)

图像分割任务定义:

  • 每个像素的所属类别进行提取。

  • 分割对象可以是风景图像、人脸图像医用图像

全卷积网络 (FCN) 介绍:
![[Pasted image 20251022142258.png]]

  • 全称: Fully Convolutional Neural Networks。

  • 核心创新: 它将传统 CNN 中的全连接层替换为卷积层

  • 作用/优势:

    • 能有效地对图像进行分割。

    • 使得网络能够接受任意尺寸的输入图像

    • 输出相同尺寸的分割结果

    • 这种结构使其能够有效地处理图像分割任务,同时保留了空间信息,使得分割结果更加精确。

FCN 算法基本流程 (右下角图):
![[Pasted image 20251022142253.png]]

  1. 输入图像

  2. 卷积层提取尺寸

  3. 池化缩小尺寸

  4. 反卷积上采样

  5. 与浅层特征融合

  6. 输出分割图

FCN 结构细节 (左下角图):

  • 展示了传统分类网络(如VGG/AlexNet)的卷积层和全连接层(4096),FCN将全连接层替换为卷积层,最终进行像素级的预测(pixelwise prediction),输出分割图(segmentation G.T.)

2. FCN 及其改进模型的应用

全卷积网络(FCN)及其改进模型在多个领域有广泛应用:
![[Pasted image 20251022142329.png]]

  • 医学图像分析: (左侧配图)

    • 用于分析和分割病理图像中的细胞等,例如图中的黄色箭头指示了需要识别或计数的细胞核。
  • 自动驾驶技术: (中间配图)

    • 实现语义分割,准确识别道路、行人、汽车、建筑等不同物体,为自动驾驶车辆提供环境感知。
  • 卫星图像分析: (右侧配图)

    • 对卫星遥感图像进行分析和分类,例如识别土地类型、水域、植被和建筑区域等。

总结: FCN通过用卷积层替代全连接层,解决了传统CNN在分割任务中无法输出与输入同尺寸图像和丢失空间信息的问题,从而成为现代图像语义分割领域的基石,并在医疗、自动驾驶和遥感等领域发挥重要作用。

四、回归问题

介绍了卷积神经网络(CNN)核心原理及其在计算机视觉领域之外回归问题中的应用。

以下是内容的详细总结:

1. CNN 的核心原理与跨领域应用

CNN 的应用范围:

  • 主要战场: 计算机视觉领域。

  • 其他应用领域: 自然语言处理(NLP)、语音识别、推荐系统、游戏玩家分析、医学影像诊断、自然灾害预测和响应、财务分析等。

卷积神经网络的核心原理:

  • 通过卷积核卷积运算,把相邻的数据进行特征分析,而忽略较远的(非相邻)数据

  • 只要目标任务符合这样的特征(局部相关性),均可采用 CNN 进行建模。

跨领域应用示例(下方配图):
![[Pasted image 20251022142502.png]]

  • CNN自然语言处理: 展示了将文本(如句子)映射为嵌入矩阵,并通过多层卷积和池化进行特征提取和分类的结构。

  • CNN语音分析: 展示了多尺度的卷积网络结构(例如 2×2\times2× scale, 4×4\times4× scale, 8×8\times8× scale),用于处理语音信号的特征。

  • CNN财务分析(时间序列模型): 展示了结合CNN和Transformer的金融时间序列模型(CTS),用于进行分类或预测。


2. CNN 在回归问题中的应用

典型的回归问题:

  • 器官检测人体姿势估计

  • 通过网络能根据输入图像输出人脸区域的眼睛和嘴巴等器官的坐标

CNN 在回归问题中的优势:

  • 在回归问题中使用 CNN 可以直接预测各部位的坐标,而无需考虑其他限制条件和位置关系。

经典模型:DeepPose
![[Pasted image 20251022142600.png]]

  • DeepPose 是一个经典的利用CNN进行人体姿势估计的模型。

  • CNN分析人体姿势(左侧配图): 展示了网络如何识别舞者(芭蕾舞)关键点的坐标,用热图(heatmap)形式标示出关键关节的位置。

  • DeepPose结构(右侧配图): 展示了该模型的级联结构(Stage kkk),它通过迭代地精修预测结果,逐步提高关键点定位的精度。

总结: CNN的核心优势在于其局部特征提取能力,这不仅使其在图像领域取得巨大成功,也使其能够应用于自然语言、语音、财务等具有局部相关性特征的领域。同时,CNN在回归问题中,如器官检测和人体姿势估计,可以直接预测坐标,表现出强大的能力。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐