[GenerativeAI] MAE and SAM

En, 超经典~

计算机视觉领域的 GPT-3 要有了?Kaiming 在这篇论文中告诉我们:强大的 AI 技术 idea 应该非常简单,实现起来也很快捷。

 

 

对比学习 结合 注意力机制

[GenerativeAI] Contrasive Learning and CLIP [对比学习参见此链接]

 
[悟道]
于是 Self-Supervised Learning 就想先把参数从 一张白纸 训练到 初步成型,再从 初步成型 训练到 完全成型。注意这是2个阶段。所以预训练模型的时候,就是模型参数从 一张白纸 到 初步成型 的这个过程,还是用无标签数据集。等我把模型参数训练个八九不离十,这时候再根据你 下游任务 (Downstream Tasks) 的不同去用带标签的数据集把参数训练到 完全成型,那这时用的数据集量就不用太多了,因为参数经过了第1阶段就已经训练得差不多了。
 
感受下它的性能:SimCLR (4×) 这个模型可以在 ImageNet 上面达到 76.5% 的 Top 1 Accuracy,比当时的 SOTA 模型高了7个点。如果把这个预训练模型用 1%的ImageNet的标签给 Fine-tune 一下,借助这一点点的有监督信息,SimCLR 就可以再达到 85.5% 的 Top 5 Accuracy,也就是再涨10个点。
 
Self-Supervised Learning
    • Prediction 类别, Bert
    • Constractive 类别, SimCLR
 
 

SimCLR v2

Hinton老爷子这个组的第 1 个版本 SimCLR 好像2月份才刚发布不久,在 Hinton 老爷子的带领下,没过几个月立马升级到了 SimCLR v2。v2 相比 v1 将 SOTA 结果提升了大约 22个点左右,这波操作真稳。

问:SimCLR v2 和 SimCLR 相比做了哪些改进?

答: SimCLR v2 的第 1 个发现是:

在使用无标签数据集做 Pre-train 的这一步中,模型的尺寸很重要,用 deep and wide 的模型可以帮助提升性能。

SimCLR v2 的第 2 个发现是:

使用无标签数据集做 Pre-train 完以后,现在要拿着有标签的数据集 Fine-tune 了。之后再把这个 deep and wide 的模型 蒸馏成一个更小的网络。

所以,SimCLR v2 的方法,用8个英文单词概括一下就是:

 

 Unsupervised Pre-train  -->  Supervised Fine-tune  -->  Distillation Using Unlabeled Data.

 

所以 SimCLR v2 论文里面给出了3个论点:

    • 对于半监督学习来讲,在标签量极少的情况下,模型越大,获益就越多。这很不符合直觉,常识是标签这么少了,模型变大会过拟合。

    • 即使模型越大能够学到越 general 的 representations,但是这是在不涉及下游任务的task-agnostic 的情况下。一旦确定了下游任务,就不再需要大模型了,可以蒸馏成一个小模型。

    • Projection head 很重要,更深的 Projection head 可以学习到更好的representation,在下游任务做 Fine-tune 之后也更好。 

 

性能拔群

SimCLR (4×) 这个模型可以在 ImageNet 上面达到 76.5% 的 Top 1 Accuracy,比当时的 SOTA 模型高了7个点。如果把这个预训练模型用 1%的ImageNet的标签给 Fine-tune 一下,借助这一点点的有监督信息,SimCLR 就可以再达到 85.5% 的 Top 5 Accuracy,也就是再涨10个点。

注意这个 76.5% 是通过 Linear Evaluation 得到的, Linear Evaluation 具体是咋做的请参考上面的 FAQ1。这个 85.5% 是通过 Fine-tune 得到的, Fine-tune 具体是咋做的请参考上面的 FAQ1。

SimCLR v2 这个模型可以在 ImageNet 上面达到 79.8% 的 Top 1 Accuracy,比当时的 SOTA 模型 SimCLR 高了 4.3 个点。如果把这个预训练模型用 1%或10% 的 ImageNet的标签给 Fine-tune 一下,借助这一点点的有监督信息,SimCLR v2 就可以再达到 76.6%或80.9% 的 Top 1 Accuracy。如果再蒸馏一下,迁移到更小的ResNet-50 上面,SimCLR v2 小模型就可以再达到 73.9%或77.5% 的 Top 1 Accuracy。注意 ResNet-50 有监督学习的Accuracy是76.6%。所以 SimCLR v2 在很多时候超越了有监督学习。

  

图片相似度对比代码

Ref: https://docs.lightly.ai/self-supervised-learning/tutorials/package/tutorial_simclr_clothing.html#create-the-simclr-model [实践佳品]

 

ViT 

ViT paper: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (22 Oct 2020)

结合了 VIT 的"对比学习“的方案。

 

DINO V1

[论文简析] DINO Emerging Properties in SelfSupervised Vision Transformers[2104.14294] [2021]

本文介绍了第一个基于图像数据的 SSL 工作——DINOv2,这是一种用于在大型图像数据集上预训练图像编码器,以获得具有语义的视觉特征。这些特征可用于广泛的视觉任务,无需微调即可获得与有监督模型相当的性能。该方法的关键是基于精心设计的数据流管道构建大规模的图像数据集,以及一些技术改进,如 Stochastic Weight Averaging、Efficient Stochastic Depth和Fully-Sharded Data Parallel等。

Vit的表征可视化后,“意外”的发现,貌似可以做“分割”。

 

 

 

掩码学习 结合 注意力机制

 通过掩码学习 可以 activate大模型的表征提取能力。

 

MAE

大规模自监督训练VIT,基于”生成式“,效果如何?MAE。

如何看待何恺明最新一作论文Masked Autoencoders?

"最后,其实预训练模型的价值,不仅是可以更简单、有效的迁移到下游任务,更是它scale的性质,试想如果增加算力、无监督数据就能提升效果的话,你对那个还未到达的天花板好不好奇呢?"

Self-suervised learning + ViT 让特征学习效果加倍。Our encoder is a ViT.

Self-Supervised Learning 超详细解读 (六):MAE:通向 CV 大模型 [意义]

 

大模型的训练策略:

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

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

 

为什么 BERT (2018) 提出这么久以后,直到 BEIT (2021.6)MAE (2021.11) 之前,一直在 CV 领域都没有一个很类似的 CV BERT 出现?

这里 Kaiming 提出了3条看法:
CV 和 NLP 主流架构不同:直到 ViT (2020.12) 出现之前,CV 的主流架构一直是以卷积网络为主,NLP 的主流架构一直是以 Transformer 为主。卷积核作用在一个个的 grid 上面,直观来讲没法产生像 Transformer 一样的 token 的概念,也就是说如果我们只使用卷积网络,那么 image token 概念的建立就不那么直观。所以,像 Transformer 那样在 token 的基础上进行自监督学习就不太适用,这是第一个难点。
语言和图片 (视频) 的信息密度不同:语言是人类造就的信号,它 highly semantic , information-dense。而图片 (视频) 是自然产生的信号,它 heavy spatial redundancy。即挡住图片的一部分 patches,可以很容易地通过看它周围的 patches 而想象出它的样子来。所以,语言和图像,一个信息密度高,一个信息密度低,这是第二个难点。解决的办法是什么呢?作者提出了一个简单的策略:即挡住图片的 patches 的比例高一些。比如之前你挡住一张图片的 30% 的 patches,能够轻松通过周围的 patches 预测出来;那现在如果挡住图片的 90% 的 patches,还能够轻松通过周围的 patches 预测出来吗?
AutoEncoder 里面的 Decoder 部分 (就是将映射得到的中间特征重建为 input 的模块) 在 CV 和 NLP 中充当的角色不同:在 CV 领域,Decoder 的作用是重建 image pixels,所以 Decoder 的输出语义级别很低。在 NLP 领域,Decoder 的作用是重建 sentence words ,所以 Decoder 的输出语义级别很丰富。
这里 Kaiming 提出了3条看法:

 

 

 

CV 预训练大模型时代

DINO V2

17 Apr 2023

全网最强 DINOv2 论文解读

Ref: https://zhuanlan.zhihu.com/p/623274167

 

SAM

17 Apr 2023

Segment Anything(SAM)论文杂谈

 

 

 

无监督部分~

之前也通过”有监督“~ 

这一阶段就开始海量生成数据了,因为此时网络已经具备了相当程度的分割能力。

首先在图上设置grid point作为prompt,每个prompt会输出三个结果,这一点我们在上一节已经进行了详细的说明。方便起见,我们再放一遍这张图。

经过这一通操作,最终可以得到1.1B的mask(11M张图,平均每张100个mask),其中有99.1%的mask是完全通过无监督生成的,人工标注只在整个数据集中占很小的一部分。

 

 

 

”最近 Segment Anything 的 image encoder 就是用MAE training“。(2022)

 CV, Game Over~

 

posted @ 2023-04-20 15:55  郝壹贰叁  阅读(206)  评论(0编辑  收藏  举报