[EECS498/598] lecture 07: Convolutional Networks(CNN)

[EECS498/598] lecture 07: Convolutional Networks(CNN)

LeoJeshua Lv2

Course Info

lecture 7: Convolutional Networks(CNN)

slide: https://web.eecs.umich.edu/~justincj/slides/eecs498/498_FA2019_lecture07.pdf

  • Convolution
  • Pooling
  • Batch Normalization

Components of a CNN:
20241228132723

7.1 Fully-Connected Layer

在卷积神经网络(CNN)出现之前,人们将图片flatten成一维向量,然后使用全连接神经网络(FCN)进行图像分类。

20241228131725

缺点:

  • 计算量大,参数量多,容易过拟合
  • 无法捕捉到图像的空间特征

7.2 Convolution Layer

借鉴人眼 感受野(Receptive Fields) 的概念,使用卷积核(filter)input image进行卷积操作,得到特征提取的结果。

卷积层的目的:提取input image的特定特征(如边缘、形状、纹理等)
20241228173104

7.2.1 卷积核 (filter)

filter的深度(通道数) = input image的深度(通道数)

20241228132216

7.2.2 卷积操作 (Convolve)

filter * input image上对应chunk + bias = 卷积结果(特征图/激活图上的一个点)。

20241228162241

20241228175551

  • 卷积结果表示 该chunk与filter的匹配程度,值越大表示匹配程度越高
  • 后面的图示中通常会省略bias,但 计算中不要忘记bias项

边缘填充 (Padding)

在进行卷积操作时,边缘像素块没有得到很好的利用

20241228174739

解决方法:在边缘填充0 (zero-padding),使得卷积操作可以覆盖到边缘像素块。
填充像素的大小P = (卷积核的大小K - 1) / 2
eg: 3x3卷积核(K=3) -> 填充像素大小P=(3-1)/2=1

20241228175052

跨步卷积 (Strided Convolution)

单步卷积的问题:

20241228175930

  • 对于大图像,我们需要很多卷积层才能“看到”整个图像
  • 计算量大

解决方案:下采样(Downsampling) ,包括各种使spatial size减小的方法,如跨步卷积池化等。
20241228180542

输出图像大小:output_size = (input_size - filter_size + 2*padding) / stride + 1

7.2.3 特征图/激活图 (Feature Map/Activation Map)

Feature Map/Activation Map的个数 = filter的个数

使用filter对input image进行卷积操作
-> 得到特征图(feature map)
-> 再经过激活函数得到激活图(activation map)

20241228163005
使用另一个filter进行卷积操作,得到另一张Feature Map/Activation Map
20241228163530

视角1:多个单通道 Feature Map/Activation Map

eg: 6个filter -> 得到 6个 通道数为1的 Feature Map/Activation Map
20241228165106

视角2:一个多通道 Feature Map/Activation Map

eg: 6个filter -> 得到 1个 通道数为6的 Feature Map/Activation Map
20241228165634

7.2.4 卷积层的训练设置

批量输入

batch_size = N > 1
N张 input image -> 得到 N张 Feature Map/Activation Map

20241228171540

参数量和计算量

20241228183129

超参的一般选择

20241228182211

  • 1x1卷积核:改变通道数(不改变spatial size大小)。可以用于降低参数量。
  • 跨步卷积:stride > 1,用于下采样。

PyTorch实现

2D卷积
20241228182600

1D和3D卷积
20241228182624

7.2.5 线性卷积层的问题

多个线性卷积层叠加 == 一个线性卷积层

20241228172728

解决思路:和全连接层一样,需要非线性的引入(如Activation Function,Pooling Layer)。

7.3 Activation Function

目的:引入非线性,使神经网络可以学习到更复杂的模式。
20241228172836

7.4 Pooling Layer

  • 下采样的另一种方式,减小参数量
  • 同时也能引入非线性

20241228173624

7.4.1 Types of Pooling

  • Max Pooling:取池化窗口内的最大值
    20241228183602
  • Average Pooling:取池化窗口内的平均值
  • Global Average Pooling:取整个feature map的平均值 (2014年,GoogLeNet提出)

7.4.2 参数量 = 0

20241228183537

7.5 (2015) Normalization

Problem: Deep Networks are very hard to train!
Solution: Normalising the input data (mean 0, variance 1)

  • makes the data distribution more consistent
  • and speeds up training

Ioffe and Szegedy, “Batch normalization: Accelerating deep network training by reducing internal covariate shift”, ICML2015 [link]

20241228181834

Types of Normlization:
20241228131442

Batch Normalization

同一batch的不同图像(size=N) 进行归一化,使得 图像 之间分布一致。

  • 归一化输入:对于每一层的输入,Batch Normalization 通过计算小批量的平均值和标准差,将输入标准化为 均值为0、方差为1的分布 。这有助于缓解深层神经网络中的“ 内部协变量偏移(internal covariate shift) ”问题,从而稳定学习过程。
    20241228183955
  • 可学习参数:在标准化的基础上,Batch Normalization 引入了两个可学习的参数,即 尺度参数(gamma)偏移参数(beta) 。这允许网络在标准化后能够 恢复适当的表示能力,以便于学习复杂特征 是标准化后的输入,则标准化后的输出可以表达为:
    20241228184140

注:在训练和测试时,Batch Normalization的计算方式不同

  • 训练时的是根据当前batch计算的
    20241228184040
  • 测试时的是根据训练集计算的固定值
    20241228184107

Layer Normalization

同一图像的不同通道/层(depth=D) 进行归一化,使得 通道/层 之间分布一致。
20241228184247

Instance Normalization

同一通道/层的不同空间维度(H/W) 进行归一化,使得 空间维度 之间分布一致。
20241228184259

Group Normalization

同一图像的多个通道/通道组(group) 进行归一化,使得 通道组 之间分布一致。
20241228184329

  • Title: [EECS498/598] lecture 07: Convolutional Networks(CNN)
  • Author: LeoJeshua
  • Created at : 2025-01-01 08:07:00
  • Updated at : 2025-03-10 20:23:55
  • Link: https://leojeshua.github.io/Course/eecs498/eecs498-07/
  • License: This work is licensed under CC BY-NC-SA 4.0.