大数跨境
0
0

深度了解自监督学习,就看这篇(七) !混合卷积-Transformer模型实现更高效的MAE

深度了解自监督学习,就看这篇(七) !混合卷积-Transformer模型实现更高效的MAE 极市平台
2022-10-03
2
↑ 点击蓝字 关注极市平台

作者丨科技猛兽
编辑丨极市平台

极市导读

 

特征蒸馏使得对比学习性能媲美掩码图像建模 >>加入极市CV技术交流群,走在计算机视觉的最前沿

本文目录

1 ConvMAE:混合卷积-Transformer 模型实现更高效的 MAE
1.1 Self-supervised Learning 和 Representation Learning
1.2 本文动机
1.3 本文使用的特征蒸馏策略
1.3.1 白化教师特征
1.3.2 共享相对位置编码
1.3.3 非对称的 Drop Path 率
1.4 特征蒸馏前后表征的不同
1.4.1 特征蒸馏使 attention heads 更加多样化
1.4.2 特征蒸馏使注意力的模式发生改变
1.4.3 特征蒸馏得到了更好的 loss landscape
1.4.4 特征蒸馏对于掩码图像建模 (MIM) 方法有改进吗?

Self-Supervised Learning,又称为自监督学习,我们知道一般机器学习分为有监督学习,无监督学习和强化学习。而 Self-Supervised Learning 是无监督学习里面的一种,主要是希望能够学习到一种通用的特征表达用于下游任务 (Downstream Tasks) 。其主要的方式就是通过自己监督自己。作为代表作的 kaiming 的 MoCo 引发一波热议, Yann Lecun也在 AAAI 上讲 Self-Supervised Learning 是未来的大势所趋。所以在这个系列中,我会系统地解读 Self-Supervised Learning 的经典工作。

1 特征蒸馏使得对比学习的性能媲美掩码图像建模

论文名称:Contrastive Learning Rivals Masked Image Modeling in Fine-tuning via Feature Distillation

论文地址:

https://arxiv.org/abs/2205.14141v3

本文论点是通过简单的 Feature Distillation 方法可以极大地提升 Self-supervised Learning 的 Fine-tuning 性能,包括 Image Classification 方法 (如 DeiT),Instance contrastive learning 方法 (如 DINO 和 EsViT),Visual-text contrastive learning 方法 (如 CLIP)。Feature Distillation 方法可以将表示学习得到的表征变得对于优化更加友好。

1.1 Self-supervised Learning 和 Representation Learning

Self-supervised Learning,是指在预训练阶段我们使用无标签的数据集 (unlabeled data),因为有标签的数据集很贵,打标签得要多少人工劳力去标注,那成本是相当高的,太贵。相反,无标签的数据集网上随便到处爬,它便宜。在训练模型参数的时候,我们不追求把这个参数用带标签数据从初始化的一张白纸给一步训练到位,原因就是数据集太贵。于是 Self-Supervised Learning 就想先把参数从一张白纸训练到初步成型,再从初步成型训练到完全成型。注意这是2个阶段。这个训练到初步成型的东西,我们把它叫做 Visual Representation。预训练模型的时候,就是模型参数从一张白纸初步成型的这个过程,还是用无标签数据集。等我把模型参数训练个八九不离十,这时候再根据你下游任务 (Downstream Tasks) 的不同去用带标签的数据集把参数训练到完全成型,那这时用的数据集量就不用太多了,因为参数经过了第1阶段就已经训练得差不多了。

第一个阶段不涉及任何下游任务,就是拿着一堆无标签的数据去预训练,没有特定的任务,这个话用官方语言表达叫做:in a task-agnostic way。第二个阶段涉及下游任务,就是拿着一堆带标签的数据去在下游任务上 Fine-tune,这个话用官方语言表达叫做:in a task-specific way

以上这些话就是 Self-Supervised Learning 的核心思想,如下图1所示,后面还会再次提到它。

图1:Self-Supervised Learning 的核心思想

其实比 Self-Supervised Learning 更泛化的任务应该叫 Representation Learning (表示学习),如下图2所示。它可以分成4类:image classification (ImageNet-1K),instance contrastive learning,visual-text contrastive learning,masked image modeling,如下图2所示。

图2:Representation Learning 的四种常见范式
  • 1) Image Classification: 一直以来的标准上游预训练任务,常用 ImageNet-1K 数据集做预训练。

  • 2) Masked Image Modeling: 代表作有 MAE[1],SimMIM[2],Swin V2[3],是一种把 Masked Input Image 输入模型,重建掩码区域的表征学习范式,它的特点是在 Fine-tuning evaluations 方面表现十分卓著,同时 MIM 这种预训练的范式在大模型上的表现已经在以上3个文献中得到了很好的证明,但是 MIM 的特点是需要大量的数据,这个问题如果得不到很好的解决,可能会阻碍它的进一步普及。

  • 3) Instance contrastive learning: 代表作有 MoCo[4],SimCLR[5],SimCLR V2[6],EsViT[7],它以 Self-Supervised Learning 的方式进行预训练,并在多个下游任务上超过了监督分类方法。但是当使用视觉 Transformer 作为主干网络时,Fine-tuning evaluations 就变得不如其他方法了,极大地影响了这类方法对于社区的吸引力。另一个问题是,其对模型容量和数据大小的可扩展性很少被研究,而且评估指标一般是 linear evaluation。因此,这种方法实际的 scalability 其实目前不清楚。

  • 4) Visual-text contrastive learning: 代表作有 iCAR[8]。一般来说,用于视觉文本任务的数据更容易获得,因此对于数据饥渴的大型模型训练更友好。Visual-text contrastive learning 任务是大规模表征学习的一个很好的选择。我们也可以进一步看看它是否可以与其他 Representation Learning 方法相结合以提高其数据挖掘效率。

Representation Learning 的主要目标和评价指标:

  • Fine-tuning: Representation Learning 的一种评价指标是下游任务的 Fine-tuning 性能,下游任务中一般使用 ImageNet-1K 上预训练的权重作为初始化。Fine-tuning 这种做法的好处主要有2点:(a) 优化友好:使用预训练模型的权重作为下游任务的初始化。这样初始化的权值可以帮助下游任务得到更平坦的 loss landscape 和更高的精度。(b) 有利于把更泛化的知识编码进模型中:普遍认为预训练模型中编码的知识就是完成预训练任务所需要的知识。预训练模型中编码的知识通常有利于下游任务,例如,CLIP 模型中编码的语义被证明对下游任务有显著帮助,如 ImageNet-1K 分类和 ADE20K 语义分割任务。

  • Linear evaluation: 早期的自监督学习的方法一般使用 Linear evaluation 作为评价指标,该方法进行完自监督 Pre-train 之后,模型的 Backbone 部分的权重也就确定了。那么这个时候我们在 Backbone 之后再添加一个**线性分类器 (Linear Classifier)**,它其实就是一个 FC 层。这个方法反映了 Backbone 学习出来的特征的好坏,但是因为这种方法并不针对现实中的场景,所以使用的也越来越少了。

  • Few-shot scenarios: 就是使用较少的样本的情况。在现实中人类非常擅长 Few-shot Learning。Few-shot Learning 可以帮助我们用有限的数据快速构建新功能。Instance contrastive learning 和 Visual-text contrastive learning 等自监督学习方法已被证明对于 Few-shot Learning 的效果较好。

  • Zero-shot / prompt-aided inference: 它是 Representation Learning 的另一个用途,允许使用预训练的模型,而无需对下游数据进行额外的训练。这种方式使得单一模型处理所有的任务成为可能,现在正受到越来越多的关注。

  • 1.2 本文动机

Pre-training + Fine-tuning 的范式在很长一段时间以来都在深度学习领域扮演着很关键的角色。对于一些基本的下游任务 (如目标检测和语义分割) 而言,使用 Image Classification 任务预训练好的权重作为初始化是一种很常见的方案。但是根据上文的描述,表示学习不是只有这一种方案,常见的 Instance contrastive learning 和 Visual-text contrastive learning 代表方法的 Linear Evaluation 的性能不错,但是 Fine-tuning 的性能目前来看不如 Masked Image Modeling 方法。

这一现象就促使作者思考一个问题:为什么 MIM 方案可以获得如此优良的 Fine-tuning 性能?

在本文中作者发现:通过简单的 Feature Distillation 方法可以极大地提升 Self-supervised Learning 的 Fine-tuning 性能,包括 Image Classification 方法 (如 DeiT),Instance contrastive learning 方法 (如 DINO 和 EsViT),Visual-text contrastive learning 方法 (如 CLIP)。

通过特征知识蒸馏方法,已经学习到的特征会再被蒸馏成为全新的特征。对于知识蒸馏目标,特征蒸馏方法可以处理任意预训练方法获得的特征,并得到更好的 Fine-tuning 性能。除此之外,针对特征蒸馏的方法,作者还提出了一些非常有用的设计,包括:白化蒸馏目标 (whitened distillation targets),共享相对位置编码 (shared relative position bias),以及非对称的 Drop Path 率 (asymmetric drop path rates)。在以上这些精心设计的方法之下,基于对比的自监督预训练方法,如 DINO 和 EsViT,的 Fine-tuning 性能具有了与掩码图像建模方法相当的竞争力,甚至略胜一筹。比如在 ImageNet-1K 图像分类任务中,基于 CLIP 预训练的 ViT-L 模型达到了 89.0% 的 Top-1 精度。

通过一系列 attention 分析工具和 optimization 相关的分析工具的观察和可视化结果表明,特征蒸馏方法可以将旧的特征转换成新的特征,而这些新的特征带有一些比较理想的性质,它们就像 MIM 方法得到的特征那样。作者将这种优良的性质称之为对优化友好 (optimization friendly)。这些分析结果说明:Feature Distillation 方法可以将表示学习得到的表征变得对于优化更加友好,而这正是 MIM 方法 Fine-tuning 的性能优良的原因

1.3 本文使用的特征蒸馏策略

本文使用的特征蒸馏策略如下图3所示。使用特征作为蒸馏的目标,允许我们借助任何可能没有 logit 输出的预训练模型完成蒸馏的过程。特征蒸馏策略带来的性能提升如下图4所示。在所有的训练目标里面,使用全部特征图得到的结果是最好的。与使用其他简化的特征作为蒸馏目标的方法相比,对完整特征图的蒸馏可以保持教师模型中涉及的更多信息,这会得到更好的性能。

为了使得教师和学生模型的特征相当,作者对每张输入图片使用了相同的数据增强策略,为了使得特征的维度得到匹配,作者额外使用了 1×1 卷积将学生模型的特征映射成和教师模型相同的大小。

图3:左:特征蒸馏策略。右:每一层和 head 的平均注意力距离
图4:蒸馏目标的消融实验结果

1.3.1 白化教师特征

白化操作[9]的目的是让我们的减少冗余信息,准确来说通过白化操作我们有两个目的:

  • 每个特征之间关联性更少。
  • 每个特征有相同的方差。

本文使用的白化操作是一个不含 scaling 参数 和 bias 参数 的 Layer Normalization, 由于目前代码尚末开源, 个人预测代码实现为 (基于 ConvNeXt 官方代码, 维度是 ) :

class LayerNorm(nn.Module):
r""" LayerNorm that supports two data formats: channels_last (default) or channels_first.
The ordering of the dimensions in the inputs. channels_last corresponds to inputs with
shape (batch_size, height, width, channels) while channels_first corresponds to inputs
with shape (batch_size, channels, height, width).
"""
def __init__(self, normalized_shape, eps=1e-6):
super().__init__()
self.eps = eps

def forward(self, x):
u = x.mean(1, keepdim=True)
s = (x - u).pow(2).mean(1, keepdim=True)
x = (x - u) / torch.sqrt(s + self.eps)
return x

在蒸馏中作者使用了 smooth loss 来优化学生和教师模型的特征:

式中, 默认设置为 分别是 Student 和 Teacher 模型的特征, 卷积层。

图5:归一化教师特征的影响

如上图5所示是归一化教师特征带来的影响,白化教师特征对于 CLIP,DINO,DeiT 分别带来了 0.8%,0.2%,1.0% 的精度提升。白化教师特征比起使用 范数带来的提升更多。

1.3.2 共享相对位置编码

在原始 ViT 模型中,相对位置编码 (relative position bias, RPB) 并未展示出比绝对位置编码 (absolute position encoding, APE) 更好的性能。但是在特征蒸馏的框架中,作者重新思考了学生架构中的位置编码方式,实验结果如下图6所示。共享相对位置编码就是每一层共享一样的相对位置编码,作者发现这样做效果最好。

图6:位置编码对比实验结果

1.3.3 非对称的 Drop Path 率

特征蒸馏的双分支框架允许教师和学生模型使用非对称的 Drop Path 率。作者发现,对学生和教师模型使用不同的 Drop Path Rate 对于学生模型学习到更好的表征是更加有利的。消融实验结果如下图7所示。适度增加学生网络的 Drop Path Rate 是有益的,可能是由于过拟合的缓解。CLIP、DINO 和 DeiT 的最优学生 Drop Path Rate 分别为 0.1、0.2 和 0.2。对于教师网络,添加 Drop Path Rate 折衷性能,表明一个准确的教师输出是有益的。

图7:非对称的 Drop Path 率消融实验结果

1.4 特征蒸馏前后表征的不同

在这一小节中,作者通过一些 attention 分析工具和 optimization 相关的分析工具对特征蒸馏前后的表征做了一些观察和分析。使用的数据集是 ImageNet-1K 的验证集。分析的结果汇总如下:

1.4.1 特征蒸馏使 attention heads 更加多样化

如下图7所示,从上到下的3组图片分别为 DINO,DeiT 和 CLIP 模型每一层的每个 head 的平均注意力距离,左侧为使用特征蒸馏之前,右侧为使用特征蒸馏之后。平均注意力距离可以部分反映出每个 attention head 的感受野大小。从图8中我们不难看出,对于特征蒸馏之前的特征而言,随着层数的加深,不同 head 的 attention 距离范围变得更加接近了,最终都落在了一个较小的区间中。这表明不同的 head 学习到了非常相似的视觉线索,可能会浪费模型的容量。但是对于特征蒸馏之后的特征而言,所有的表征变得更加不同,注意力的距离分布更加平均,尤其是在更深的层中,这一现象变得更加明显。如图9所示的每一层 attention 不同 head 之间的余弦相似度结果也呈现出了类似的特征。

图8:每一层的每个 head 的平均注意力距离,左侧为使用特征蒸馏之前,右侧为使用特征蒸馏之后
图9:每一层的不同 head 之间的余弦相似度,左侧为使用特征蒸馏之前,右侧为使用特征蒸馏之后

1.4.2 特征蒸馏使注意力的模式发生改变

如下图10所示是使用特征蒸馏前后的平均 attention map。注意力模式呈现出了2个明显的特征,即:对角线以及列状。对角线模式对应的是某些固定相对位置的图像 Patch 之间的关系,而列状模式则表示某些位置的图像 Patch 对其他所有位置的影响。

图10:使用特征蒸馏前后的平均 attention map

从图10中可以看出,特征蒸馏后的平均 attention map 具有更多的对角模式,这意味着特征蒸馏之后的模型更多地依赖于相对位置关系图像 Patch 的视觉建模。这表明模型具有更好的平移不变性,而平移不变性通常是各种视觉任务的有利属性。注意到学生网络中包含了共享相对位置编码 (RPB),为了研究其效果,作者还尝试在学生体系结构中使用绝对位置编码 (APE),其注意力映射如图11所示。我们看到即使是用了 APE,特征蒸馏得到的表征依然呈对角线形状,这表明更多的对角线模式主要是由特征蒸馏算法本身,而不是由位置编码的方式造成的。

图11:使用不同的位置编码方式得到的每一层的每个 head 的平均注意力距离以及平均 attention map

1.4.3 特征蒸馏得到了更好的 loss landscape

作者使用了[10]中的方法来可视化不同模型的 loss / accuracy landscape。在可视化方法中,模型的训练好的权重被一系列不同程度的高斯噪声干扰,为了考虑不同模型的权重幅值变化的影响,每个噪声级在定义时依据每个滤波器的 范数。如下图12所示,上下2行分别是特征蒸馏前后的 loss landscape,特征蒸馏后的表征比蒸馏前的表征更加平坦,这与其从结果上看更好的微调性能是一致的。

图12:上下2行分别是特征蒸馏前后的 loss landscape

1.4.4 特征蒸馏对于掩码图像建模 (MIM) 方法有改进吗?

如下图13所示是掩码图像建模 (MIM) 方法 (MAE) 的平均注意力距离和 loss landscape。不难看出,使用 MAE 预训练得到的不同的 head 之间的平均注意力距离更大,loss landscape 相对平坦。而且,通过特征蒸馏方法将旧的MAE 表征转换为新的表征只带来 +0.2% 的轻微增益 (83.8% 对 83.6%)。这些结果可能表明,特征蒸馏后处理带来的良好的 Fine-tuning 性能与掩模图像建模 (MIM) 方法在功能上有一定的重叠。

图13:掩码图像建模 (MIM) 方法的平均注意力距离和 loss landscape

1.5 实验结果

所有的实验作者都执行了特征蒸馏的方法。消融实验都训练100 epoch,正式试验都训练300 epoch。实验 AdamW 作为优化器,学习率 1.2e-3,weight decay 为 0.05,batch size 设为 2048。

作者对比了5种预训练的策略:DINO,EsViT,CLIP,DeiT,MAE,使用其开源的权重。

评价指标:作者考虑了3种评价策略:

ImageNet-1K fine-tuning: AdamW 优化器,Fine-tune 100 epochs,学习率 5e-3,weight decay 为 0.05,layer decay 为 0.65,drop path rate 为 0.3。

ImageNet1K linear probe: LARS 优化器,学习率 0.1,weight decay 为 0。

ADE20K semantic segmentation: 使用 UPerNet 框架,AdamW 优化器,训练 160K,batch size 为 16,weight decay 为 0.05。

实验结果如下图14所示,使用了特征蒸馏之后,各个框架的 ImageNet-1K fine-tuning 的性能普遍上升了 1.0%-2.0%,ADE20K 语义分割性能上升了 1.0-3.3 mIoU。CLIP 的精度在使用了 ImageNet-22K 预训练之后,精度达到了 89.0%,比复杂的微调方法 WiSE-FT CLIP 高了1.9%。

图14:特征蒸馏提升 Fine-tuning 的性能

经过本文方法以后,具有 3-billion 参数的 SwinV2-G 模型的 ADE20K 语义分割的性能提升到了 61.4 mIoU,COCO 目标检测的性能提升到了 64.2 mAP,如下图15所示,这也是新的纪录 (原纪录来自 (Masked) DINO[11][12])。

图15:特征蒸馏提升 SwinV2-G 模型的性能

总结

本文工作为未来的研究提供了一种方法,使我们可以更多地关注表示学习学到的特征的通用性和可扩展性,而不是专注于 MIM 方法或者 Contrastive Learning 方法。特征的通用性和可扩展性至关重要,因为它们不仅使预训练适合广泛的可视化任务,而且允许我们的模型能够充分利用更大的模型容量和更大的数据。在现有的研究中,特征的通用性和可扩展性的目标常常与某种具体的 Representtaion Learning 的方法纠缠在一起。特性蒸馏方法说明我们能够将这两个目标解耦,并允许更多的精力投入到特征的通用性和可扩展性的关键问题上。

参考

  1. ^Masked autoencoders are scalable vision learners
  2. ^Simmim: A simple framework for masked image modeling
  3. ^Swin transformer v2: Scaling up capacity and resolution
  4. ^Momentum contrast for unsupervised visual representation learning
  5. ^A Simple Framework for Contrastive Learning of Visual Representations
  6. ^Big self-supervised models are strong semi-supervised learners
  7. ^Efficient self-supervised vision transformers for representation learning
  8. ^icar: Bridging image classification and image-text alignment for visual recognition
  9. ^https://blog.csdn.net/liangdong2014/article/details/85237767?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-85237767-blog-116463828.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-85237767-blog-116463828.pc_relevant_aa&utm_relevant_index=2
  10. ^Visualizing the loss landscape of neural nets
  11. ^Dino: Detr with improved denoising anchor boxes for end-to-end object detection
  12. ^Mask dino: Towards a unified transformer-based framework for object detection and segmentation


公众号后台回复“数据集”获取100+深度学习数据集下载~

△点击卡片关注极市平台,获取最新CV干货
极市干货
数据集资源汇总:10个开源工业检测数据集汇总21个深度学习开源数据集分类汇总
算法trick目标检测比赛中的tricks集锦从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
技术综述:一文弄懂各种loss function工业图像异常检测最新研究总结(2019-2020)


极市平台签约作者#


科技猛兽

知乎:科技猛兽


清华大学自动化系19级硕士

研究领域:AI边缘计算 (Efficient AI with Tiny Resource):专注模型压缩,搜索,量化,加速,加法网络,以及它们与其他任务的结合,更好地服务于端侧设备。


作品精选

搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了
用Pytorch轻松实现28个视觉Transformer,开源库 timm 了解一下!(附代码解读)
轻量高效!清华智能计算实验室开源基于PyTorch的视频 (图片) 去模糊框架SimDeblur



投稿方式:
添加小编微信Fengcall(微信号:fengcall19),备注:姓名-投稿
△长按添加极市平台小编

觉得有用麻烦给个在看啦~  
【声明】内容源于网络
0
0
极市平台
为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
内容 8155
粉丝 0
极市平台 为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
总阅读197
粉丝0
内容8.2k