图像分类的任务目标:给定一张图片,识别图像中物体的类别
图像分类问题:构建一个可计算实现的函数(即将图像映射到对应的类别)
图像为: X ∈ R H ∗ W ∗ 3 X \in R^{H*W*3} X∈RH∗W∗3
类别为: y ∈ { 1 , … , k } y \in \left \{ {1,\dots,k} \right \} y∈{1,…,k}
F : R H ∗ W ∗ 3 → { 1 , … , k } F:R^{H*W*3}\to \left \{ {1,\dots,k} \right \} F:RH∗W∗3→{1,…,k}
难点:图像的内容与单个像素的值无关,难以遵循具体的规则设计算法
解决方法:让机器从数据中学习
收集数据
定义模块
通常为含参变量的函数: y = F Θ ( X ) y=F_{\Theta}(X) y=FΘ(X)
例子: y = σ ( Θ T X ) y=\sigma(\Theta^{T}X) y=σ(ΘTX)
训练
寻找最佳参数$ \Theta ^{*}$,使得模型 y = F Θ ∗ ( X ) y=F_{\Theta^{*}}(X) y=FΘ∗(X),在训练集上达到最高正确率
预测
对于新图像 X ^ \widehat{X} X ,用训练好的模型预测其类别,即 y ^ = F Θ ∗ ( X ^ ) \widehat{y} =F_{\Theta^{*}}(\widehat{X} ) y =FΘ∗(X )
特征工程与特征学习的区别:
层次化特征的实现方式:
AlexNet的诞生:在 2012 年的竞赛中,来自多伦多大学的团队首次使用深度学习方法,一举将错误率降低至 15.3% ,而传统视觉算法的性能已经达到瓶颈,2015 年,卷积网络的性能超越人类。
图像分类的数学表示:
图像 → P ( y ∣ X ) = F Θ ( X ) 概率向量 → y ∗ = a r g m a x y ( P ( y ∣ X ) ) 类别 图像 \xrightarrow[]{P(y\mid X)=F_{\Theta}(X)} 概率向量 \xrightarrow[]{y^{*}=\mathop{argmax}\limits_{y}(P(y\mid X))} 类别 图像P(y∣X)=FΘ(X)概率向量y∗=yargmax(P(y∣X))类别
AlexNet:
VGG-19 19层 ImageNet Top-5 准确率:92.7%
GoogLeNet 22层 ImageNet Top-5 准确率:93.4%
残差学习的基本思路:
ResNet-34 34层 ImageNet Top-5 准确率:94.4%
ResNet中的两种残差模块:
神经结构搜索 Neural Architecture Search (2016+)
Vision Transformers (2020+)
使用 Transformer 替代卷积网络实现图像分类,使用更大的数据集训练,达到超越卷积网络的精度
代表工作:Vision Transformer (2020),Swin-Transformer (2021 ICCV 最佳论文)
ConvNeXt (2022)
将 Swin Transformer 的模型元素迁移到卷积网络中,性能反超 Transformer
卷积的参数量
卷积层的可学习参数包括:卷积核 + 偏置值
参数量的计算公式: C ′ ∗ ( C ∗ K ∗ K + 1 ) = C ′ C K 2 + C ′ C'*(C*K*K+1)=C'CK^{2}+C' C′∗(C∗K∗K+1)=C′CK2+C′
卷积的计算量(乘加次数)
输出特征图每个通道上的每个值都是输入特征图和1个 C C C通道的卷积核进行一次卷积的结果
乘加次数计算公式: H ′ ∗ W ′ ∗ C ′ ∗ ( C ∗ K ∗ K ) = H ′ W ′ C ′ C K 2 H'*W'*C'*(C*K*K)=H'W'C'CK^{2} H′∗W′∗C′∗(C∗K∗K)=H′W′C′CK2
降低模型参数量和计算量的方法:
参数量计算公式: C ′ ∗ ( C ∗ K ∗ K + 1 ) = C ′ C K 2 + C ′ C'*(C*K*K+1)=C'CK^{2}+C' C′∗(C∗K∗K+1)=C′CK2+C′
乘加次数计算公式: H ′ ∗ W ′ ∗ C ′ ∗ ( C ∗ K ∗ K ) = H ′ W ′ C ′ C K 2 H'*W'*C'*(C*K*K)=H'W'C'CK^{2} H′∗W′∗C′∗(C∗K∗K)=H′W′C′CK2
GoogLeNet使用不同大小的卷积核
基本思路: 并不是所有特征都需要同样大的感受野,在同一层中混合使用不同尺寸的特征可以减少参数量
ResNet 使用1×1卷积压缩通道数
可分离卷积将常规卷积分解为逐层卷积和逐点卷积,降低参数量和计算量
例:MobileNet V1/V2/V3 (2017~2019)
MobileNet V1 使用可分离卷积,只有 4.2M 参数,MobileNet V2/V3 在 V1 的基础上加入了残差模块和 SE 模块
ResNeXt将ResNet中的3×3卷积改为分组卷积,降低了模型的计算量
实现层次化特征: 后层特征是空间邻域内的前层特征的加权求和
权重越大,对应位置的特征就越重要
使用不同参数的注意力头产生多组特征,沿通道维度拼接得到最终特征,Transformer Encoder 的核心模块
模型学习的范式:
目标: 确定模型 F Θ F_{\Theta} FΘ的具体形式后,找到最优参数 Θ ∗ \Theta^{*} Θ∗,使得模型 F Θ ∗ ( X ) F_{\Theta^{*}}(X) FΘ∗(X)给出准确的分类结果 P ( y ∣ X ) P(y\mid X) P(y∣X)
交叉熵损失 Cross-Entropy Loss
优化目标 & 随机梯度下降
动量 Momentum SGD
权重初始化
学习率对训练的影响
数据增强 Data Augmentation
训练泛化性好的模型,需要大量多样化的数据,而数据的采集标注是有成本的图像可以通过简单的变换产生一系列**“副本”,扩充训练数据集数据增强操作可以组合**,生成变化更复杂的图像。
组合数据增强 AutoAugment & RandAugment
组合图像 Mixup & CutMix
Dropout
神经网络在训练时会出现共适应现象 (co-adaption),神经元之间产生高度关联,导致过拟合
训练时随机丢弃一些连接,破坏神经元之间的关联,鼓励学习独立的特征;推理时使用全部连接。
常用于全连接层,通常不与 BN 混用
随机深度 Stochastic Depth
训练 ResNet 网络时,加入了随机变量 b(伯努利随机变量,只能取 0/1,取 0 的概率是 1−p,取 1 的
概率是 p),对整个 ResBlock 卷积部分做了随机丢弃。
• 如果 b = 1,则简化为原始的 ResNet 结构;
• 如果 b = 0,则这个 ResBlock 未被激活,降为恒等函数。
H l = R e L u ( b l f l ( H l − 1 ) + i d ( H l − 1 ) ) H_{l}=ReLu(b_{l}f_{l}(H_{l-1})+id(H_{l-1})) Hl=ReLu(blfl(Hl−1)+id(Hl−1))
自监督学习的常见类型
基本假设:模型只有很好地理解到图片内容,才能够预测图像块之间的关系
基本假设:如果模型能很好地提取图片内容的本质,那么无论图片经过什么样的数据增强操作,提取出来的特征都应该极为相似。
对于某种图片 ,对它进行两次数据增强,得到 1 和 2
• 1 和 2 互为正样本
• 其他图片的增强结果都是 1 和 2 的负样本
基本假设:模型只有理解图片内容、掌握图片的上下文信息,才能恢复出图片中被随机遮挡的内容。