[OpenMMLab]AI实战营第二节课

图像分类与基础视觉模型

任务目标:给定一张图片,识别图像中的物体是什么

任务难点:图像内容是像素整体呈现的结果,和个别像素值没有直接关联,难以遵循具体的规则设计算法

任务方法:从数据中学习定义模型->训练->预测

课程内容分为两部分:1、模型设计;2、模型学习。

图像分类模型设计

卷积神经网络

在这里插入图片描述

2012 AlexNet使用5个卷基层、3个全连接层、ReLU激活函数成功搭建大规模图像模型,实现并开源了cuda-convnet;

2012-2014 加深神经网络,从而诞生了VGG(提取不同尺寸特征图)、GoogLeNet(不同卷积核不同感受野)

随着神经网络深度增加,分类正确率不增反降,引入近似恒等映射,避免梯度消失等问题;

2015 ResNet,综合VGG和GoogLenet优点,并引入残差链接设计残差模块,获得CVPR2016最佳论文奖;

2016 神经结构搜索NAS,借助强化学习等方法搜索表现最佳的网络;

2020 VIT,使用Transformer替代卷积网络实现图像分类,使用更大的数据集训练,达到超越卷积网络的精度;

2022 ConvNeXt,参考Swin Transformer结构,设计卷积网络结构,性能反超Transformer

轻量化卷积神经网络

对于一个普通的卷积过程:
在这里插入图片描述
输入特征图 X ∈ R H × W × C X\in R^{H\times W\times C} XRH×W×C

输出特征图 X ∈ R H × W × C ′ X\in R^{H\times W\times C'} XRH×W×C

卷积的参数量: C ′ × ( C × K × K + 1 ) = C ′ C K 2 + C ′ C^{\prime} \times(C \times K \times K+1)=C^{\prime} C K^{2}+C^{\prime} C×(C×K×K+1)=CCK2+C

卷积的计算量: H ′ × W ′ × C ′ × ( C × K × K ) = H ′ W ′ C ′ C K 2 H^{\prime} \times W^{\prime} \times C^{\prime} \times(C \times K \times K)=H^{\prime} W^{\prime} C^{\prime} C K^{2} H×W×C×(C×K×K)=HWCCK2

GoogLeNet引入1*1的卷积核,在引入不同感受野产生不同的特征的同时,也可以减少参数量

ResNet利用1*1卷积核串联在backbone模块中用于压缩通道,降低开销

MobileNet 可分离卷积,常规卷积=逐层卷积+逐点卷积

ResNeXt 分组卷积,将输入和卷积按照通道分组,在保证输出特征数量的情况下降低计算量

Vision Transformer

Transformer与cnn不同的是,Transformer更注重对应位置的权重信息,权重是输入的函数。

单头注意力如图所示:
在这里插入图片描述
多头注意力是在多通道输入concat的结果。

Vision Transformer将图像切分乘16*16小块,形成词向量输入Transformer编码器中,引入token来输入最后的分类,由此注意力模块是基于全局感受野的,复杂度也大。

Swin Transformer提出分层结构,并将图像划分窗口,将编码过程局限于窗口内,减低计算量;窗口与窗口之间,引入Shifted Window Multi-Head Self-Attention概念;以W-MSA和SW-MSA组成块为基础,堆叠4层获得特征图。

图像分类模型学习

学习范式:1、监督学习;2、自监督学习。

监督学习

一般流程流程:标注数据集 -> 定义损失函数 -> 解最优化问题

分类问题常用损失函数:交叉熵损失Cross-Entropy Loss,利用one-hot编码规则,预测越精准(正样本为正,负样本为负)则损失越低;

优化器:SGD和动量SGD,上一节已经讲过

学习率与优化器策略

权重初始化

1、朴素方法,均匀分布或者高斯分布确定初始值;

2、Xavier方法,前传时维持激活值的方差,反传维持梯度的方差:
a = 6 / ( fan ⁡ in  + fan ⁡ out  )  or  σ = 2 / ( fan ⁡ in  + fan ⁡ out  ) a=\sqrt{6 /\left(\operatorname{fan}_{\text {in }}+\operatorname{fan}_{\text {out }}\right)} \text { or } \sigma=\sqrt{2 /\left(\operatorname{fan}_{\text {in }}+\operatorname{fan}_{\text {out }}\right)} a=6/(fanin +fanout )  or σ=2/(fanin +fanout )
3、Kaming方法,针对ReLU函数:
a = 6 / n  or  σ = 2 / n , here  n = fan ⁡ in   or  fan ⁡ out  a=\sqrt{6 / n} \text { or } \sigma=\sqrt{2 / n} \text {, here } n=\operatorname{fan}_{\text {in }} \text { or } \operatorname{fan}_{\text {out }} a=6/n  or σ=2/n , here n=fanin  or fanout 
4、用训练好的模型权重初始化,替换与训练模型的分类头,进行微调

学习率策略-学习率退火

在训练初始阶段使用较大的学习率,损失函数稳定后下降学习率

学习率策略-学习率升温

在训练前几轮学习率逐渐上升,知道预设的学习率,以稳定训练的初始阶段

Linear Scaling Rule

针对同一个训练任务,当batch size扩大为原来的k倍时,学习率也对应扩大k倍

自适应梯度算法

不同的参数需要不同的学习率,根据梯度的历史幅度自动调整学习率:Adam

正则化与权重衰减 Weight Decay

权重衰退加入一个限制,通过限制参数值的选择范围来控制模型容量,应用在SGD,针对Adam等自适应算法不成立,AdamW提出权重衰退独立于归一化步骤,效果优于Adam。

早停 Early Stopping

训练过程中,验证集分类精度达到最值,停止训练,防止过拟合。

模型权重平均EMA

权重计算策略:
Θ ˉ 0 = Θ 0 Θ ˉ t = β Θ ˉ t − 1 + ( 1 − β ) Θ t \begin{array}{l} \bar{\Theta}_{0}=\Theta_{0} \\ \bar{\Theta}_{t}=\beta \bar{\Theta}_{t-1}+(1-\beta) \Theta_{t} \end{array} Θˉ0=Θ0Θˉt=βΘˉt1+(1β)Θt

模型权重平均SWA

在训练末期使用较高的学习率,在损失平面的平坦区域做更多的探索,最后平均模型。

数据增强

数据集通过简单的变化扩展副本,扩充训练数据集

AutoAugment:通过强化学习,搜索数据增强的策略

RandAugment:更简单的搜索空间,随机选取N个数据增强操作

Mixup:逐像素混合图像

CutMix:遮盖原图并用另一幅图填充

标签平滑Label Smoothing:因为数据集质量问题,类别标注可能错误或不准确,让模型最大限度拟合标注类别会有碍于泛化性,引入平滑系数,降低标签的自信程度

模型相关策略

DropOut:随机丢弃权重链接,不与BN混用

随机深度:对整个ResBlock卷及部分做了随机丢弃,利用不同的深度训练,最终相当于潜在融合了多个不同深度的网络,提升性能

自监督学习

常见类型:基于代理任务、基于对比学习、基于掩码学习

Relative Location

基本假设:模型只有很好地理解到图片内容,才能够预测图像块之间的关系;

SimCLR

基本假设:如果模型能很好地提取图片内容的本质,那么无论图片经过什么样的数据增强操作,提取出来的特征都应该极为相似。

Masked autoencoders

基本假设:模型只有理解图片内容、掌握图片的上下文信息,才能恢复出图片中被随机遮挡的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值