OpenMMLab AI实战课笔记 -- 第2节课
1. 第二节课(图像分类)
- 图像分类目标:识别图像中有哪些物体
- 视觉任务的难点:图像中的物体是通过图像中的所有像素整体呈现出的效果,与单个像素没有直接关联,难以设计规则算法来处理,所以传统的基于特征的算法(如:HOG、LBP、SIFT等)无法很好地处理这些问题。为更好地解决此问题,既然无法设计规则,就超越规则,让机器自己从数据中学习映射方法。深度学习方法解决了传统特征提取方法的瓶颈。
- 特征的特性:特征对物体的抽象层次越高(即越抽象),其数据的分布就越“规整”,即更易于实现分类。
- 先进的特征提取方法(卷积):
- 特征和图像一样具有二维空间结构,保持了二维空间特征
- 可分层提取可学习的特征(如CNN)
- 可实现一步特征提取(如多头注意力:Transformer)
1.1 深度学习模型
- 模型设计:设计适合图像的
F
θ
(
X
)
F_{\theta}(X)
Fθ(X),模型可分为以下几类:
- 卷积神经网络
- 轻量化卷积神经网络
- 神经结构搜索 (NAS:Neural Architecture Search):
- 基本思路是借助强化学习等方法搜索表现最佳的网络
- 代表作有:NASNet (2017)、MnasNet (2018)、EfficientNet (2019) 、RegNet (2020) 等
- Transformer:
- 使用 Transformer 替代卷积网络实现图像分类,使用更大的数据集训练,达到超越卷积网络的精度
- 其代表作有:Vision Transformer (2020),Swin-Transformer (2021 ICCV 最佳论文) - 模型训练:学习一组好的参数
Θ
\Theta
Θ
- 监督学习:基于标注数据学习 (关键步骤:损失函数、随机梯度下降算法、视觉模型常用训练技巧)
- 自监督学习:基于无标注的数据学习
1.2 网络进化过程
1.3 ResNet (残差网络)
-
残差网络特征
- 让新增加的层拟合浅层网络与深层网络之间的差异
- 更易学习梯度可以直接回传到浅层网络监督浅层网络的学习
- 没有引入额外参数,让参数更有效地贡献到最终的模型中
- 每级输出分辨率减半,通道倍增
- 全局平均池化压缩空间维度
- 单层全连接层产生类别概率
-
ResNet中的两种残差模块
- 1×1 卷积用于压缩通道,降低计算开销
- 1×1 卷积用于压缩通道,降低计算开销
-
残差链接让损失曲面(Loss Surface) 更平滑,更容易收敛到局部/全局最优解
-
图像分类 & 视觉基础模型的发展史
- ConvNeXt (2022):将 Swin Transformer 的模型元素迁移到卷积网络中,性能反超 Transformer
1.4 卷积的参数量
1.5 卷积的计算量(乘加次数)
1.6 降低模型参数量和计算量的方法
1.7 可分离卷积
- 将常规卷积分解为逐层卷积和逐点卷积,降低参数量和计算量
- MobileNet V1 使用可分离卷积,只有 4.2M 参数
- MobileNet V2/V3 在 V1 的基础上加入了残差模块和 SE 模块
1.8 注意力机制 Attention Mechanism
- 实现层次化特征:
- 后层特征是空间邻域内的前层特征的加权求和
- 权重越大,对应位置的特征就越重要
1.9 学习率线性缩放规则
- 经验性结论:针对同一个训练任务,当 batch size 扩大为原来的 𝑘 倍时,学习率也应对应扩大 𝑘 倍
- 直观理解:这样做可以保证平均每个样本带来的梯度下降步长相同
- 多卡训练:实践中,假设预训练模型使用 lr=0.1,8卡数据并行训练,如果希望用1卡复现实验,lr 应设置为 0.0125
1.10 OpenMMLab中的配置文件
- 深度学习模型的训练涉及几个方面:
- 模型结构:模型有几层、每层多少通道数等等
- 数据集:用什么数据训练模型:数据集划分、数据文件路径、数据增强策略等等
- 训练策略: 梯度下降算法、学习率参数、batch_size、训练总轮次、学习率变化策略等等
- 运行时 GPU、分布式环境配置等等
- 一些辅助功能 如打印日志、定时保存checkpoint等等
- 一个配置文件定义了一个完整的训练过程:
- model:字段定义模型
- data:字段定义数据
- optimizer、lr_config: 等字段定义训练策略
- load_from:字段定义加载训练模型的参数文件