第二天:图像分类算法基础
一、图像分类和基础的视觉模型
任务目标:给出一张图像,识别物体的类别
任务建模:图像像素→类别序号
技术路线:采集数据 → 定义模型 → 定义损失并训练 → 预测
传统方法:
- 手工设计图像特征:图像 →(人工设计) 向量 →(机器学习) 分类
- 特征学习:数据驱动拟合转化函数
深度学习方法:
- 卷积神经网络CNN
- 多头注意力机制Transformer
二、 模型设计和模型学习
1. 卷积神经网络
- 经典工作:AlexNet、VGG,GoogleNet,ResNet
- 后续工作:SEResNet,ResNext
- 神经结构搜索:NAS→借助强化学习的方法搜索到最佳的网络架构
- Transformer:ViT and SwinTransformer,ConvNext
2. 轻量化卷积网络模型设计
- 使用不同大小的卷积核:Inception模块:不同通道的卷积核大小可以不同→减少参数量
- Bottleneck:ResNet中空间和通道分开计算两次
- 可分离卷积:逐层卷积和逐点卷积 → MobileNet
- 分组卷积:组数在(1,G)之间,分组之间的通道在空间分辨率上卷积,之后再进行空间交互
3. ViT
注意力机制 → 其实是数学上的加权求和,用一个参数对前一层的输出加权求和
与卷积不同,注意力机制中的参数和输入有关,并不像卷积一样核参数是常数,并且可以在全尺度上进行相关计算
4. Swin
- 窗口局部计算窗口内的注意力,并用滑窗交互
- 采用金字塔层级结构
三、 模型学习的范式
1. 监督学习
最常见的范式,缺点是标注是昂贵的
2. 自监督学习
无须标注,设计辅助任务,让网络在无标注数据集中取得较好效果后在迁移到具体任务中
- 基于代理任务
- 基于对比学习:simCLR
- 基于mask学习:MAE
3. 训练技巧
-
随机初始化→Kaiming init初始化模型中的参数
用训练好的模型进行初始化
-
学习率:
从头学习可以调较大学习率:0.01→0.1
微调:0.001→0.01
学习率退火:按步长下降,按比例下降等
学习率升温:在训练前期不稳定阶段,前几轮逐步上升
-
经验型结论:Batchsize扩大N倍,学习率也变为N倍
-
早停、模型权重平均EMA
-
数据增强:几何变化,色彩变化,随机遮挡→作数据扩充,模拟更多情况
-
组合增强→cutmix(狗头贴在猫身上),mixup(狗头猫身)
-
标签平滑:引入噪声,使模型不在太自信于已有标签