万字长文盘点2021年paper大热的Transformer(ViT)

本文介绍 万字长文盘点2021年paper大热的Transformer(ViT)git

万字长文盘点2021年paper大热的Transformer(ViT)

This article was original written by Jin Tian, you are welcomed to repost, first publish at blog.tsuai.cn. Please keep this copyright info, thanks, any question could be asked via wechat: jintianiloveugithub

好久未写文章了,在这以前,请容许我打个广告,因为github.io再也没法温馨的访问了(由于你懂得缘由),我将博客指向了个人国内域名:blog.tsuai.cn , 不按期的会更新一些技术文章,感兴趣的朋友能够了解一下,固然你也能够关注个人知乎帐号,我也会不定义的再知乎更新.算法

这篇文章主要是一篇Medium文章的翻译,但我会加入一些我本身的理解和查阅的资料补充知识点,但愿给你们一个transformer使用的全貌,水平有限,若有不足还请友情指点.原文地址在最下方参考连接处.markdown

不少时候提到transformer你们确定会想到facebook的那篇DETR,而我更想从这篇文章开始,也就是来自谷歌大脑团队的这篇:一张图片值16x16个字:网络

image-20210106210140940

为何想从这篇文章开始呢?由于这是谷歌大佬的论文.这篇文章讲的不是注意力机制简单的嵌套改改模型骨干去跑benchmark, 也不是讲如何将transformer用在某个特定的任务,而是探究了视觉任务自己,如何将其从传统的CNNs当中剥离,而且达到现有的高度,是一篇2021年必看的论文.在讲解谷歌大脑团队如何牛逼以前,咱们先来作一个总结吧.看看过去的一年中,在视觉领域(包括3D点云)你们都用它来干啥了.架构

01. Transformers in NLP

开始以前,仍是回顾一下transformer在NLP领域的巨大成功吧!相比搞NLP的同窗应该或多或少都认同一个观点:Transformer已经成了NLP的标配,有多标配?就好比我3年前搞NLP的时候LSTM统一天下通常.大名鼎鼎的GPT-3也是基于transformer的巨大模型,并得到了NIPS2020最佳论文奖.app

那么在2021年的视觉领域,transformers也会像在NLP领域同样如日中天吗?事实上,使用transformer进行视觉任务的研究已经成了一个新的热点,你们为了更低的模型复杂度以及训练的效率,都在研究如何将这一技术应用在视觉任务上.ide

02. Transformers in CV 2020

在过去的一年里,至少这几篇论文是颇有用的工做,他们就是在于transformer构建的模型,而且在各方面的指标上超越了许多领先的传统方法:oop

  • DETR: End-to-End Object Detection with Transformers, 使用transformer作目标检测的端到端的方法;
  • ViT: AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE, 探讨transformer应用于基础的视觉任务,好比分类任务;
  • Image GPT: Generative Pretraining from Pixels: 使用transformer进行图像填补;
  • LDTR: transformers for lane detection: 使用transformer进行车道线检测.

一般来讲,有两个比较大的架构,在全部的关于transformer的论文以及工做中,其中一个就是传统的CNNs加transformer组合而成的结构,另外一种是纯粹的Transformers.post

  • 纯粹的transformers;
  • 混合的transformers.

其中ViT那篇论文,也就是开头讲到的谷歌大脑的那篇,使用的就是纯粹的transformer去完成视觉任务,也就是说,它没有使用任何的CNNs. 我知道你如今很想知道这句话是什么意思,为何说没有用到任何CNNs,别着急,我会在本文的最后一个内容讲解这个东西,有时间我会作一块儿视频,结合谷歌开源的代码来和你们一行代码一行代码去推敲,为何.但如今你们只要知道它是一个纯粹的transformer就能够了.

那什么东西是混合的transformer呢?好比DETR这篇论文,它其实是采用了transformer的一个思想,但在特征提取的骨干网络上,并无太多的变化.咱们能够称之为混合型的transformer.

写到这里,不少好奇的宝宝就会产生不少问题了:

  • 为何要在视觉里面用它?怎么用?
  • 和现有的结果对比效果怎样?
  • 有什么约束挑战吗?
  • transformer的结构千奇百怪,有什么典型的同时兼顾精度和高效率的结构吗?为何呢?

很好,你已经学会了问问题,而这些问题都将不是本文要解答的内容,由于过于硬核.但我会尝试深刻谷歌大脑的ViT,去和你们一块儿弄清楚这些问题的答案.事实上,要弄清楚其中一个和很基础的问题,咱们须要把场景切换一下,先来看看如何展现以一个transformer,而且知道注意力机制为何有用.

关于讲解transformer的视频,我这里推荐一个YoutuberUP主的视频,可是因为你懂得缘由,你可能没法观看,因而我废了九牛二虎之力将其搬运到了Bilibili,就充这个严谨,你们能够给我可怜的B站帐号点个赞,同时关注一波,如今只有5个粉丝,可怜.

www.bilibili.com/video/BV1py…

言归正传了,关于注意力机制,仍然是主推这篇论文:attention is all you need, 连接请看脚注.有童鞋可能会问,你发的貌似都是讲NLP的视频和论文,和视觉怎么联系起来呢?没错,咱们如今讨论的transformer, 其实就是NLP里面的transformer.

接下来咱们就进一步的讲解一下ViT.

03. Vision Transformer

Image for post

这是谷歌大脑那篇论文中的一张图.回到文章一开始提出来的问题,为何我要拿这篇文章来说解transformer.如同我在上一节提到的,transformer分为纯粹与混合,而这篇文章,是第一篇纯粹讨论并使用transfomer来进行视觉基础任务(分类)的论文.

这也是它的价值所在,谷歌大脑团队在几乎没有修改任何基于NLP的transformer的结构基础之上,只是将输入进行了一个适配,将图片切分红许多的小格,而后将这些做为序列输入到模型,最终完成了分类任务,而且效果能够直追基于CNNs的SOTA.

他们的作法也十分的简单,将图片切分能够完美的构形成一个序列的输入,几乎能够无缝的接入到transformer的输入中.而为了进一步的保持这些小格子之间的局部与总体关系,对于每个patch都保持着和原图对应的编号.这能够很好的保持空间和位置的信息,即使在打乱他们的顺序以后这些信息也能够获得保留.固然在论文的源文中,他们也作了使用和不使用这个空间编码方式的对比实验,感兴趣的同窗能够仔细阅读原文看看.

这篇论文也直接和传统的CNNs进行了对比,他们在不一样的数据集上进行了预训练, 好比:

  • ILSVRC-2012 ImageNet, 包含1k类别和1.3M图片;
  • ImageNet-21k 包含21k的类别, 14M图片;
  • JFT包含18K类别,以及303M高分辨率图片.

这些数据集之大,达到了史无前例的地步,以致于他们训练时间单位不是Days, 而是k days:

image-20210107111250230

2.5k天,若是不是谷歌大佬谁能作这样的论文,哎.咱们来看看ViT的效果,事实上,ViT的模型也和BERT同样,我甚至认为谷歌其实一直想作一个和BERT同样的工做,在视觉领域,两者的确也被谷歌的研究者们很好的结合在了一块儿.他们的模型分为,Large, Base, Huge. 在Large的模型上,它的精确度已经超越了Resnet152x4. 并且看起来训练的时间更短.

这篇文章的一个有趣的结论,也是咱们的直觉,transformer在数据的尺度不大的时候,表现是很差的.话句话说,训练一个transformer须要一个足够大的数据集.

image-20210107111820555

这张图能够看出,当数据的数量不够的时候,它的精确度也不够好.

咱们以前讲到,对于transformer的结构,咱们有彻底替代CNNs的ViT, 咱们也有部分替代的DETR这样的结构,那么到底什么样的架构是最优的呢?谷歌的这张图,也给咱们揭示了一些答案:

image-20210107112151855

  • 纯粹的transfomer结构,更加的高效,而且可扩张性更好,相比于传统的CNNs优点明显,无论是small,仍是large的尺寸,效果都更好;
  • 混合的结构在小尺度的时候效果比纯粹的结构要好.这多是因为transformer不只须要更大的数据,同时也须要更大的结构,可是它的上限值更高.

04. DETR

这篇文章是第一篇使用transformer作目标检测的论文,固然它是咱们前面所述的混合类型的模型.放到今天来看,DETR也存在一些缺点,尽管它在指标上能够达到FasterRCNN这样的水准,好比它在小物体检测上表现出一些能力不足的迹象,而现现在也有一些论文去改进它,好比DeformableDETR, 感兴趣的同窗能够仔细看看他们,但这些改进不是本文的核心要点,咱们仍是来回顾一下DETR里面使用transformer的思想.

image-20210107112734307

这个模型的特色是:

  • 使用传统的CNN来学习2D的特征表征,同时抽取特征;
  • CNN的输出被平铺出来,用来提供给transformer做为输入,这个平铺包含了特征的位置编码信息;
  • transformer的输出,解码器的输出,被用来输入到一个FNN之中,而后预测类别和框.

这样的结构,相好比传统的目标检测,至少终结掉了achor的设定,而且去掉了冗余的NMS. 这些手工的操做被摒弃,尽管他们在现现在的目标检测算法中仍然发挥出巨大的做用.

DETR真正牛逼的地方,其实不是它在目标检测的效果,而是当咱们把它扩展到全景分割上所展现出来的惊人效果:

image-20210107113119932

那么他们是怎么作的呢?全景分割其实是两个任务,一个是语义分割,这个任务将类别和每一个pixel对应起来,另外一个是实例分割,这个任务会检测每一个目标,而且将这些目标区域分割出来.而DETR将这两者结合到了一块儿,而且展现出了使人惊奇的效果.

在这篇论文中,一个有趣的boners是来自于这个算法对于重叠目标的区分能力,这其实也反映出了注意力机制的巨大做用,而transformer自己就是一个巨大的注意力机制引擎.好比他们能够很好的区分这些高度重叠在一块儿的物体:

image-20210107113443652

05. Image GPT

回到咱们一开始讲到的OpenAI的DELL-E, 这个工做展现了transformer的强大能力,然而在这以前,他们就已经作了一些相关的工做,其中的Image GPT就是一个基于GPT-2构建的图片填补模型.在这里我须要插一句,正如同Le-CUN所说,transformer真的很擅长来作填补的工做,仿佛他们天生就是如此.

Image GPT使用图片的像素序列来生成图片,它能够递归的来预测图片中的下一个像素.Image GPT的工做亮点是:

  • 使用了和GPT-2同样的transformer模型;
  • 非监督的学习;
  • 须要更大的计算量,若是咱们须要更好的特征表示;

image-20210107114450506

事实上,OpenAI可能就是基于这一工做,再结合文本的GPT-3, 完成了使人经验的DELL-E.

总结

咱们在这篇文章中回顾了一些比较著名经典的transformer的工做,它展现了一个全新的视觉方向.这可能也是2021的一个重要的主线之一.

写这篇文章还有一个目的,不只仅是总结,更多的是启发你们一个方向,这个结构彻底不一样于传统的CNNs,它赋予模型的是全新的表达局部与总体,甚至是时域和空间的关系,GPT3的成功也暗示咱们这个方向可能如同CNNs同样,开启一个全新的视觉时代,由于它可以让超大规模训练成为可能,而且能够像BERT同样成为全部其余任务的预训练基石. 在我写这篇文章的时候,OpenAI刚刚发布他们的新一代文本到图片生成模型,DELL-E,这个模型展现了模型如何深入学习到天然语言与图形的关系,而且两者完美的融合与应用,也进一步启发咱们:也许基于这个全新的架构,将来的视觉学习到的不只仅是纹理等的特征,而可能进一步的学习更高阶的信息,好比和天然语言联系起来的模型,试想如今的目标检测只告诉你这里是0 or 1 or 2 or 3, 之后的目标检测可能直接告诉你这是table, 这是apple, 剩下的让模型来推理.

总而言之,对于一些新的技术热点,咱们仍是要充满想象力的.在不远的将来,或许视觉任务也能够像GPT3同样,真正的接近人的推理特征,这或许是技术迭代的转折点.

关于更多的transformer的细节以及代码解读,我会在后面的章节中继续为你们讲解,以为有用的老铁能够关注一波个人知乎帐号,并点个赞,牛年快乐.

Reference

  1. SOURCE: towardsdatascience.com/transformer…
  2. DETR: arxiv.org/pdf/2005.12…
  3. ViT: arxiv.org/pdf/2010.11…
  4. Image GPT: cdn.openai.com/papers/Gene…
  5. Attention is all you need: arxiv.org/pdf/1706.03…
相关文章
相关标签/搜索