图像分类任务目标:给定一张图片识别图像中的物体是什么。
视觉任务的难点:图像的内容是像素整体呈现出的结果,和个别像素的值没有直接关联,难以遵循具体的规则设计算法。
机器学习的局限:善于处理低维分布简单的数据,难以处理图像数据这种在几十万维空间中以复杂的方式缠绕在一起的数据。
传统方法:设计图象特征(1990s~2000s)——好的特征可以计大简化数据的表达并且能够保留内容的相关信息。
特征工程的天花板:基于手工设计的特征+机器学习算法实现的图像分类,top5错误率在25%以下。受限于人类的智慧,手工设计特征更多局限在像素层面的计算,丢失信息过多,在视觉任务上的性能达到瓶颈。
变化:
AlexNet的诞生&深度学习时代的开始(2012)
关于图像分类:
AlexNet(2012)、Going Deeper (2012~2014)、VGG (2014)、GoogLeNet (Inception v1, 2014)
模型层数增加到一定程度后,分类正确率不增反减,出现了过拟合的现象,由于层数过多,参数过多。
残差学习:让新增加的层拟合浅层网络与深层网络之间的差异,更容易学习 梯度可以直接回传到浅层网络监督浅层网络的学习 没有引入额外参入,让参数更有效贡献到最终的模型中
神经结构搜索(2016+)、Vision Transformers(2020+)、ConNeXt(2020)
图像分类&视觉基础模型的发展:精度更高的分类器&更有效的视觉特征➡精度更高的下游模型
降低模型参数量和计算量的方法:降低通道数、减小卷积核的尺寸。
GoogLeNet 使用不同大小的卷积核、ResNet 使用1×1卷积压缩通道数。
可分离卷积:将常规卷积分解为逐层卷积和逐点卷积,降低参数量和计算量。
MobileNet V1/V2/V3 (2017~2019):MobileNet V1 使用可分离卷积,只有 4.2M 参数 。MobileNet V2/V3 在 V1 的基础上加入了残差模块和 SE 模块。
ResNeXt 中的分组卷积:ResNeXt 将 ResNet 的 bottleneck block 中 3×3 的卷积改为分组卷积,降低模型计算量 可分离卷积为分组卷积的特殊情形,组数=通道数
同样是分层的。多头注意力机制(使用不同参数的注意力头产生多组特征,沿通道维度拼接得到最终特征,Transformer Encoder 的核心模块)
Vision Transformer (2020):• 将图像切分成若干 16×16 的小块,当作一列"词向量",经多层 Transformer Encoder 变换产生特征 • 图块之外加入额外的 token,用于 query 其他 patch 的特征并给出最后分类 • 注意力模块基于全局感受野,复杂度为尺寸的 4 次方。
Swin Transformer (ICCV 2021 best paper):提出了分层结构,并将多头注意力机制限制在多个不相交的区域内,减少计算量。同时又提出了SW-MSA 的概念,让信息能够跨窗口传递。
监督学习需要标注,解决最优化问题,要寻找是的总损失最小的参数。
权重初始化:针对卷积层和全连接层,初始化连接权重W和偏置b
• 从头训练可使用较大的学习率,例如 0.01~0.1 • 微调通常使用较小学习率,例如 0.001~0.01。
如下的图形象展示了学习率对训练的影响:常见的学习率策略是退火、升温、Linear Scaling Rule(batchsize扩大k倍,学习率也扩大k倍)、自适应梯度算法、正则化与权重衰减 Weight Decay、早停 Early Stopping、模型权重平均 EMA、模型权重平均 Stochastic Weight Averaging。
丢弃层 Dropout:破坏神经元之间的关联,鼓励学习独立的特征
随机深度 Stochastic Depth:利用不同的深度训练,最终相当于潜在地融合了多个不同深度的网络,提升了性能
整理记录自2023/2/2晚进行的课程