作者:中南大学控制科学与工程硕士 金天
本文主要是一篇Medium文章的翻译,但也加入了作者的理解和查阅的资料补充知识点,希望给大家提供一个Transformer使用的全貌,如有不足,欢迎友情指点~
很多时候提到Transformer大家肯定会想到Facebook的那篇DETR,而我更想从这篇文章开始,也就是来自谷歌大脑团队的这篇:《一张图片值16x16个字》。为什么想从这篇文章开始呢?因为这是谷歌大脑的论文。这篇文章讲的不是注意力机制简单的嵌套改改模型骨干去跑benchmark,也不是讲如何将Transformer用在某个特定的任务,而是探究了视觉任务本身,如何将其从传统的CNNs当中剥离,并且达到现有的高度,是一篇2021年必看的论文。在讲解谷歌大脑团队如何牛逼之前,我们先来做一个总结吧,看看过去的一年中,在视觉领域(包括3D点云)大家都是怎么使用它的。开始之前,还是回顾一下Transformer在NLP领域的巨大成功。搞NLP的同学应该或多或少都认同一个观点:Transformer已经成了NLP的标配。有多标配?就如同我3年前搞NLP的时候LSTM正统一天下一般。大名鼎鼎的GPT-3也是基于Transformer的巨大模型,并获得了NeurIPS 2020最佳论文奖。那么在2021年的视觉领域,Transformers也会像在NLP领域一样如日中天吗?事实上,使用Transformer进行视觉任务的研究已经成了一个新的热点,大家为了更低的模型复杂度以及训练的效率,都在研究如何将这一技术应用在视觉任务上。二、Transformers in CV 2020在过去的一年里,至少这几篇论文是很有用的工作,他们就是在于Transformer构建的模型,并且在各方面的指标上超越了许多领先的传统方法:
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。纯粹的Transformers;
混合的Transformers。
其中ViT那篇论文,也就是开头讲到的谷歌大脑的那篇,使用的就是纯粹的Transformer去完成视觉任务,也就是说,它没有使用任何的CNNs。我知道你现在很想知道这句话是什么意思,为什么说没有用到任何CNNs,但别着急,我会在本文的最后一个内容讲解这个东西。
那什么东西是混合的Transformer呢?比如DETR这篇论文,它实际上是采用了Transformer的一个思想,但在特征提取的骨干网络上,并没有太多的变化。我们可以称之为混合型的Transformer。很好,你已经学会了问问题,而这些问题都将不是本文要解答的内容,因为过于硬核。但我会尝试深入谷歌大脑的ViT,去和大家一起弄清楚这些问题的答案。事实上,要弄清楚其中一个和很基础的问题,我们需要把场景切换一下,先来看看如何展示以一个Transformer,并且知道注意力机制为什么有用。
关于注意力机制,仍然是主推这篇论文《Attention is all you need》。有童鞋可能会问,你发的貌似都是讲NLP的视频和论文,和视觉怎么联系起来呢?没错,我们现在讨论的Transformer,其实就是NLP里面的Transformer。这是谷歌大脑那篇论文中的一张图。回到文章一开始提出来的问题,为什么我要拿这篇文章来讲解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:
2.5k天,如果不是谷歌大佬谁能做这样的论文。我们来看看ViT的效果,事实上,ViT的模型也和BERT一样,我甚至认为谷歌其实一直想做一个和BERT一样的工作,在视觉领域,二者的确也被谷歌的研究者们很好的结合在了一起。他们的模型分为Large、Base、Huge。在Large的模型上,它的精确度已经超越了Resnet152x4。而且看起来训练的时间更短。这篇文章的一个有趣的结论,也是我们的直觉:Transformer在数据的尺度不大的时候,表现是不好的。话句话说,训练一个Transformer需要一个足够大的数据集。这张图可以看出,当数据的数量不够的时候,它的精确度也不够好。
我们之前讲到,对于Transformer的结构,我们有完全替代CNNs的ViT, 我们也有部分替代的DETR这样的结构,那么到底什么样的架构是最优的呢?谷歌的这张图,也给我们揭示了一些答案:这篇文章是第一篇使用Transformer做目标检测的论文,当然它是我们前面所述的混合类型的模型。放到今天来看,尽管DETR在指标上可以达到FasterRCNN这样的水准,它也存在一些缺点,比如它在小物体检测上表现出一些能力不足的迹象。而现如今也有一些论文去改进它,比如Deformable DETR,感兴趣的同学可以仔细看看他们。但这些改进不是本文的核心要点,我们还是来回顾一下DETR里面使用的Transformer的思想。
使用传统的CNN来学习2D的特征表征,同时抽取特征;
CNN的输出被平铺出来,用来提供给Transformer作为输入,这个平铺包含了特征的位置编码信息;
Transformer的输出,解码器的输出,被用来输入到一个FNN之中,然后预测类别和框。
这样的结构,相比如传统的目标检测,至少终结掉了achor的设定,并且去掉了冗余的NMS。这些手工的操作被摒弃,尽管他们在现如今的目标检测算法中仍然发挥出巨大的作用。
DETR真正牛逼的地方,其实不是它在目标检测的效果,而是当我们把它扩展到全景分割上所展示出来的惊人效果:那么他们是怎么做的呢?全景分割实际上是两个任务,一个是语义分割,这个任务将类别和每个pixel对应起来,另一个是实例分割,这个任务会检测每个目标,并且将这些目标区域分割出来。而DETR将这二者结合到了一起,并且展示出了令人惊奇的效果。在这篇论文中,一个有趣的boners是来自于这个算法对于重叠目标的区分能力,这其实也反映出了注意力机制的巨大作用,而Transformer本身就是一个巨大的注意力机制引擎。比如他们可以很好的区分这些高度重叠在一起的物体:回到我们一开始讲到的OpenAI的DELL-E,这个工作展示了Transformer的强大能力,然而在这之前,他们就已经做了一些相关的工作,其中的Image GPT就是一个基于GPT-2构建的图片填补模型。在这里我需要插一句,正如同Le-CUN所说,Transformer真的很擅长来做填补的工作,仿佛他们天生就是如此。Image GPT使用图片的像素序列来生成图片,它可以递归的来预测图片中的下一个像素。Image GPT的工作亮点是:事实上,OpenAI可能就是基于这一工作,再结合文本的GPT-3,完成了令人惊艳的DELL-E。我们在这篇文章中回顾了一些比较著名经典的Transformer的工作,它展示了一个全新的视觉方向。这可能也是2021的一个重要的主线之一。写这篇文章还有一个目的,不仅仅是总结,更多的是启发大家一个方向,这个结构完全不同于传统的CNNs,它赋予模型的是全新的表达局部与整体,甚至是时域和空间的关系,GPT3的成功也暗示我们这个方向可能如同CNNs一样,开启一个全新的视觉时代,因为它能够让超大规模训练成为可能,并且可以像BERT一样成为所有其他任务的预训练基石。在我写这篇文章的时候,OpenAI刚刚发布他们的新一代文本到图片生成模型,DELL-E,这个模型展示了模型如何深刻学习到自然语言与图形的关系,并且二者完美的融合与应用,也进一步启发我们:也许基于这个全新的架构,未来的视觉学习到的不仅仅是纹理等的特征,而可能进一步的学习更高阶的信息,比如和自然语言联系起来的模型。试想现在的目标检测只告诉你这里是0 or 1 or 2 or 3,以后的目标检测可能直接告诉你这是table,这是apple,剩下的让模型来推理。总而言之,对于一些新的技术热点,我们还是要充满想象力的。在不远的未来,或许视觉任务也可以像GPT3一样,真正的接近人的推理特征,这或许是技术迭代的转折点。ref:
https://towardsdatascience.com/transformer-in-cv-bbdb58bf335e
https://arxiv.org/pdf/2005.12872.pdf
https://arxiv.org/pdf/2010.11929.pdf
https://cdn.openai.com/papers/Generative_Pretraining_from_Pixels_V2.pdf
Attention is all you need: https://arxiv.org/pdf/1706.03762.pdf
关于我“门”
将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务、将门技术社群以及将门创投基金。
将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。
如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:
bp@thejiangmen.com
点击右上角,把文章分享到朋友圈
微信:thejiangmen
bp@thejiangmen.com