OpenMMlab实训营(二)

1.图像分类问题

图像是像素构成的数组: ∈ ℝ××3
对类别进行编号:香蕉→1,苹果→2,橘子→3 等等,得到类别 ∈ {1, … ,}, 为类别总数
图像分类问题:构建一个可计算实现的函数 : ℝ××3 → {1, … ,},且预测结果符合人类认知。
分类问题的难点:
1、图像的内容是像素整体呈现出的结果,和个别像素的值没有直接关联,难以遵循具体的规则设计算法。
2、图像数据在几十万维的空间中以复杂的方式"缠绕"在一起如下图所示,常规的机器学习算法难以处理这种复杂数据分布,因为机器学习算法善于处理低维、分布相对简单的数据(例如两类间有明显分隔的数据)。
OpenMMlab实训营(二)_第1张图片

2.图像分类模型

2.1模型设计

  1. 模型设计:设计适合图像的 Θ
    • 卷积神经网络
    • 轻量化卷积神经网络
    • 神经结构搜索
    • Transformer
  2. 模型学习:求解一组好的参数 Θ
    • 监督学习:基于标注数据学习
    • 损失函数
    • 随机梯度下降算法
    • 视觉模型常用训练技巧
    • 自监督学习:基于无标注的数据学习

2.2模型构成

由卷积神经网络所设计的图像分类模型结构如图所示,从左至右分为输入图象,卷积神经网络,输出概率。其中卷积神经网路又包括主干网络(用于提取图像特征产生特征图)和分类器(用于预测类别概率)。
OpenMMlab实训营(二)_第2张图片

2.3模型的参数量和计算量

卷积层的可学习参数包括:卷积核 + 偏置值
• 输入特征图 ∈ ℝ××
• 输出特征图 ∈ ℝ′×′×′
• ′ 个 通道的卷积核 ∈ ℝ′×××
• ′ 个 偏置值 ∈ ℝ′
参数量计算公式: ′ × ( × × + 1) = ′2 + ′
乘加次数计算公式:′ × ′× ′ × ( × × ) = ′′′2
上式中K,是卷积核的大小;C是输入通道数,C’ 是输出通道数,H’和W‘是输出特征图的长和宽;
根据上述公式直接推出降低模型参数量和计算量的方法:
• 降低通道数 ′ 和 (平方级别)
• 减小卷积核的尺寸 (平方级别)
此外,将常规卷积分解为逐层卷积和逐点卷积,降低参数量和计算量。

3.模型的发展

1、AlexNet (2012)
• 5 个卷积层,3 个全连接层,共有 60M 个可学习参数
• 使用 ReLU 激活函数,大幅提高收敛速度
2、VGG (2014)
• 将大尺寸的卷积拆解为多层 3×3 的卷积
• 相同的感受野、更少的参数量、更多的层数和表达能力
• 每隔几层倍增通道数、减半分辨率,生成 1/2、1/4 尺度的更高抽象层级的特征(不同层次的特征在尺寸上有简单的比例关系方便在位置敏感的下游任务中使用,如检测、分割等)
3、GoogLeNet (Inception v1, 2014)
• 使用 Inception 模块堆叠形成, 22 个可学习层
• 最后的分类仅使用单层全连接层,可节省大量参数
• 仅 7M 权重参数(AlexNet 60M、VGG 138M)
Inception 模块:在同一层中混合使用不同尺寸的特征可以减少参数量,并不是所有特征都需要同样大的感受野。
4、残差网络 ResNet (2015)(重要)
• 5 级,每级包含若干残差模块,不同残差模块个数不同 ResNet 结构
• 每级输出分辨率减半,通道倍增
• 全局平均池化压缩空间维度
• 单层全连接层产生类别概率
OpenMMlab实训营(二)_第3张图片
残差模块的引入——精度退化问题:模型层数增加到一定程度后,分类正确率不增反降。
虽然深层网络有潜力达到更高的精度,但常规的优化算法难以找到这个更优的模型即,让新增加的卷积层拟合一个近似恒等映射,恰好可以让浅层网络变好一点卷积退化为恒等映射时,深层网络与浅层网络相同。所以,深层网络应具备不差于浅层网络的分类精度。
OpenMMlab实训营(二)_第4张图片

残差建模:让新增加的层拟合浅层网络与深层网络之间的差异,更容易学习
梯度可以直接回传到浅层网络监督浅层网络的学习。没有引入额外参入,让参数更有效贡献到最终的模型中。
作用:残差链接让损失曲面更平滑,更容易收敛到局部/全局最优解。
5、Transformer
引入注意力机制替代卷积
实现层次化特征: 后层特征是空间邻域内的前层特征的加权求和。权重越大,对应位置的特征就越重要。
与卷积区别:权重是输入的函数,可以不局限于邻域,显式建模远距离关系。而卷积中权重是可学习的参数,但与输入无关。只能建模局部关系,远距离关系只能通过多层卷积实现。

4.模型学习

模型学习:求解一组好的参数 Θ
• 自监督学习:基于无标注的数据学习
• 监督学习:基于标注数据学习
• 视觉模型常用训练技巧

4.1监督学习

流程:1. 标注一个数据集
2. 定义损失函数 ,衡量单个预测结果的"好/坏"
3. 解一个最优化问题,寻找使得总损失最小的参数 Θ

4.2学习率与优化器策略

学习率对训练的影响
OpenMMlab实训营(二)_第5张图片
学习率的设置
学习率退火:从头训练可以使用较大的,而微调训练可以使用较小的学习率;
学习率升温:在训练前几轮学习率逐渐上升,直到预设的学习率,以稳定训练的初始阶段
经验性结论:针对同一个训练任务,当 batch size 扩大为原来的 倍时,学习率也应对应扩大 倍,这样做可以保证平均每个样本带来的梯度下降步长相同(90%以上的问题都可以这样设置)。
优化器设置
随机梯度下降算法
针对神经网络, 为 Θ 的非凸函数,通常采用随机梯度下降算
法(SGD)求解:
• 随机初始化参数 Θ
• 迭代直至收敛:
OpenMMlab实训营(二)_第6张图片
动量优化法(Momentum):考虑到之前历次迭代的梯度,防止落入局部最小点。
自适应梯度算法:不同的参数需要不同的学习率,根据梯度的历史幅度自动调整学习率。

4.3视觉模型常用训练技巧

早停 Early Stopping:将训练数据集划分为训练集和验证集,在训练集上训练,周期性在验证集上测试分类精度。当验证集的分类精度 达到最值时,停止训练,防止过拟合。
数据增强:因为数据的采集标注是有成本的,所以可以通过简单的变换、组合图像来产生“副本”,扩充训练数据集;
标签平滑:标注可能错误或者不准确,引入平滑参数 ,降低标签的"自信程度"。
Dropout:每次正向推断训练神经元的时候随机“掐死”一部分神经元,阻断其输入输出,这样可以起到正则化的作用。详细见同济子豪兄b站fashion-minst(https://www.bilibili.com/video/BV1w4411u7ay/spm_id_from=333.999.0.0&vd_source=11becf09d91e1568b52611bb5895e609)视频。
如下图dropout前,虽然训练误差一直在下降,但测试误差居高不下,我们的神经网络仿佛一个高分低能的同学,平时把所有课后题答案都死记硬背下来,一到考试见到新题的时候就不会做了。OpenMMlab实训营(二)_第7张图片
但在随机掐死20%的神经元后,训练误差和测试误差都随学习次数增加逐渐降低,没有出现“高分低能”和“死记硬背”的过拟合现象,这其实是Dropout正则化的功劳。
OpenMMlab实训营(二)_第8张图片

你可能感兴趣的:(Openmmlab,深度学习,计算机视觉)