课程链接:火爆全网的 OpenMMLab 实战项目来了(基于 PyTorch)
目录
- 一、图像分类算法技术演进
-
- 1.1 传统方法:设计图像特征 (1990s~2000s)
- 1.2 AlexNet (2012)
- 1.3 Going Deeper (2012~2014)
- 1.4 残差网络 ResNet (2015)
- 1.5 神经结构搜索 Neural Architecture Search (2016+)
- 1.6 Vision Transformers (2020+)
- 1.7 ConvNeXt (2022)
- 二、图像技术详解
-
- 2.1 如何计算卷积的参数量和计算量
- 2.2 如何减少卷积的计算量
- 2.3 注意力机制
- 2.4 Vision Transformer (2020)
- 2.5 Swin Transformer (ICCV 2021 best paper)
- 三、模型学习技术详解
-
- 3.1 学习率与优化器策略
- 3.2 数据增强 Data Augmentation
- 3.3 模型相关策略
一、图像分类算法技术演进
1.1 传统方法:设计图像特征 (1990s~2000s)
在 ImageNet 图像识别挑战赛里,2010 和 2011 年的冠军队伍都使用了经典的视觉方法,基于手工设计的特征 + 机器学习算法实现图像分类,Top-5 错误率在 25% 上下
受限于人类的智慧,手工设计特征更多局限在像素层面的计算,丢失信息过多,在视觉任务上的性能达到瓶颈
1.2 AlexNet (2012)
- 第一个成功实现大规模图像的模型,在 ImageNet 数据集上达到 ~85% 的 top-5 准确率
- 5 个卷积层,3 个全连接层,共有 60M 个可学习参数
- 使用 ReLU 激活函数,大幅提高收敛速度
- 实现并开源了 cuda-convnet ,在 GPU 上训练大规模神经网络在工程上成为可能
1.3 Going Deeper (2012~2014)
- VGG-19 19 层 ImageNet Top-5 准确率:92.7%
将大尺寸的卷积拆解为多层 3×3 的卷积相同的感受野、更少的参数量、更多的层数和表达能力
- GoogLeNet 22 层 ImageNet Top-5 准确率:93.4%
- 使用 Inception 模块堆叠形成, 22 个可学习层
- 最后的分类仅使用单层全连接层,可节省大量参数
- 仅 7M 权重参数(AlexNet 60M、VGG 138M
1.4 残差网络 ResNet (2015)
- 视觉领域影响力最大、使用最广泛的模型结构,获得 CVPR 2016 最佳论文奖
1.5 神经结构搜索 Neural Architecture Search (2016+)
基本思路:借助强化学习等方法搜索表现最佳的网络
代表工作:NASNet (2017)、MnasNet (2018)、EfficientNet (2019) 、RegNet (2020) 等
1.6 Vision Transformers (2020+)
使用 Transformer 替代卷积网络实现图像分类,使用更大的数据集训练,达到超越卷积网络的精度
代表工作:Vision Transformer (2020),Swin-Transformer (2021 ICCV 最佳论文)
1.7 ConvNeXt (2022)
将 Swin Transformer 的模型元素迁移到卷积网络中,性能反超 Transformer
二、图像技术详解
2.1 如何计算卷积的参数量和计算量
参数量计算公式: ′ × ( × × + 1) = ′2 + ′
乘加次数计算公式:′ × ′× ′ × ( × × ) = ′′′2
2.2 如何减少卷积的计算量
- 基本思路:降低通道数 ′ 和 (平方级别)、减小卷积核的尺寸 (平方级别)
- GoogLeNet 使用不同大小的卷积核。基本思路:并不是所有特征都需要同样大的感受野,在同一层中混合使用不同尺寸的特征可以减少参数量
- ResNet 使用1×1卷积压缩通道数
- 可分离卷积:将常规卷积分解为逐层卷积和逐点卷积,降低参数量和计算量
2.3 注意力机制
- 实现层次化特征: 后层特征是空间邻域内的前层特征的加权求和。权重越大,对应位置的特征就越重要
- 多头注意力 Multi-head (Self-)Attention:使用不同参数的注意力头产生多组特征,沿通道维度拼接得到最终特征,Transformer Encoder 的核心模块
2.4 Vision Transformer (2020)
将图像切分成若干 16×16 的小块,当作一列"词向量",经多层 Transformer Encoder 变换产生特征
图块之外加入额外的 token,用于 query 其他 patch 的特征并给出最后分类
注意力模块基于全局感受野,复杂度为尺寸的 4 次方
2.5 Swin Transformer (ICCV 2021 best paper)
为了减少序列长度和降低计算复杂度,在小窗口之内计算自注意力,所以只要窗口大小固定,自注意力的计算复杂度也是固定的,那么总的计算复杂度就是图像尺寸的线性倍。也就是使用了局部性的先验知识,在小窗口使用自注意力就可以了,并不需要去做全局的自注意力。
为了生成多尺寸的特征,回想卷积神经网络为什么会有多尺寸的特征,主要是Pooling操作。Pooling可以增大每一个卷积核的感受野,所以可以获得不同尺寸的特征。于是提出了一个类似池化的操作patch merging,也就是将相邻的四个小patch合成一个大patch,从而获得不同尺寸的特征。所以swin transformer可以作为一个通用的骨干网络,不仅可以用于图像分类,还能做密集预测型的任务
三、模型学习技术详解
3.1 学习率与优化器策略
- 学习率退火 Annealing :在训练初始阶段使用较大的学习率,损失函数稳定后下降学习率:
- 学习率升温 Warmup :在训练前几轮学习率逐渐上升,直到预设的学习率,以稳定训练的初始阶段
- Linear Scaling Rule:针对同一个训练任务,当 batch size 扩大为原来的 倍时,学习率也应对应扩大 倍
- 自适应梯度算法:不同的参数需要不同的学习率,根据梯度的历史幅度自动调整学习率
- 正则化与权重衰减 Weight Decay
- 早停 Early Stopping:将训练数据集划分为训练集和验证集,在训练集上训练,周期性在验证集上测试分类精度当验证集的分类精度 达到最值时,停止训练,防止过拟合
- 模型权重平均 EMA
- 模型权重平均 Stochastic Weight Averaging:原理同 EMA,但在训练末期使用较高的学习率,在损失平面的平坦区域上做更多的探索,最后平均模型
3.2 数据增强 Data Augmentation
- 数据增强 Data Augmentation
- 组合数据增强 AutoAugment & RandAugment
- 组合图像 Mixup & CutMix
- 标签平滑 Label Smoothing
3.3 模型相关策略
- 丢弃层 Dropout
- 随机深度 Stochastic Depth