关注公众号,发现CV技术之美
本文转载自诺亚实验室
2021年对计算机视觉来说是非常重要的一年,各个任务的SOTA不断被刷新。这么多种Vision Transformer模型,到底该选哪一个?新手入坑该选哪个方向?华为诺亚方舟实验室的这一篇综述或许能给大家带来帮助。
综述论文链接:
https://ieeexplore.ieee.org/document/9716741/(点击底部左下角“阅读原文”可直接进入)
诺亚开源模型:
https://github.com/huawei-noah
华为A+M社区:
https://www.mindspore.cn/resources/hub
引言
如何将Transformer应用于计算机视觉(CV)任务,引起了越来越多研究人员的兴趣。在过去很长一段时间内,CNN成为视觉任务中的主要模型架构,但如今Transformer呈现出巨大的潜力,有望在视觉领域中打败CNN的霸主地位。
谷歌提出了ViT架构,首先将图像切块,然后用纯Transformer架构直接应用于图像块序列,就能完成对图像的分类,并在多个图像识别基准数据集上取得了优越的性能。
除图像分类任务之外,Transformer还被用于解决其他视觉问题,包括目标检测(DETR),语义分割(SETR),图像处理(IPT)等等。由于其出色的性能,越来越多的研究人员提出了基于Transformer的模型来改进各种视觉任务。
为了让大家对视觉Transformer在这两年的飞速发展有一个清晰的感受,图1展示了视觉Transformer的发展里程碑,从图像分类到目标检测,从图片生成到视频理解,视觉Transformer展现出了非常强的性能。
对于很多刚接触视觉Transformer的研究员,看到这么多模型架构或许一时没有头绪,在面对具体应用需求的时候,也不知道选哪一个视觉Transformer架构。另外,想做视觉Transformer的同学也经常在问还有没有新方向可以挖掘。这些问题或多或少的都可以从这一篇涵盖了200多篇前沿论文的综述中找到答案:
按照视觉Transformer的设计和应用场景,本文对视觉Transformer模型进行了系统性的归类,如表1所示:骨干网络、高/中层视觉、底层视觉、多模态等,并且在每一章中针对任务特点进行详细分析和对比;
本文针对高效的视觉Transformer进行了详细的分析,尤其是在标准数据集和硬件上进行了精度和速度的评测,并讨论了一些Transformer模型压缩和加速的方法;
华为是一家具有软硬件全栈AI解决方案的公司,基于A+M生态,在Transformer领域已经做出了很多有影响力的工作,基于这些经验并且联合了业界知名学者一起进行了深入思考和讨论,给出了几个很有潜力的未来方向,供大家参考。
表1 视觉Transformer代表性工作
附华为诺亚方舟实验室Transformer系列工作:
1.NLP大模型盘古Alpha:https://arxiv.org/abs/2104.12369
2.中文预训练模型哪吒:https://arxiv.org/abs/1909.00204
3.轻量模型TinyBERT:https://arxiv.org/abs/1909.10351
4.底层视觉IPT:https://arxiv.org/abs/2012.00364
5.多模态-悟空:https://arxiv.org/abs/2111.07783
6.骨干网络架构TNT:https://arxiv.org/abs/2103.00112
骨干网络
视觉Transformer的所有组件,包括多头自注意力、多层感知机、残差连接、层归一化、位置编码和网络拓扑结构,在视觉识别中起着关键作用。为了提高视觉transformer的精度和效率,业界已经提出了许多模型。
下表总结了视觉Transformer骨干网络的结果,可以更好分析现有网络的发展趋势。从图2中的结果可以看出,将CNN和Transformer结合起来可以获得更好的性能,这表明卷积的局部连接和注意力的全局连接能够相互补充。
表2 代表性CNN和Transformer网络在ImageNet结果的对比
图2 代表性CNN和Transformer网络的FLOPs/吞吐量对比
目标检测
基于Transformer的目标检测方法也引起了广泛的兴趣,这些方法大致可以分为两类:基于Transformer的检测集合预测方法和基于Transformer骨干网络的检测方法。与基于CNN的检测器相比,基于Transformer的方法在准确性和运行速度方面都表现出了强大的性能。表3展示了在COCO数据集上基于Transformer的不同目标检测器的性能。
将Transformer用于中高层视觉任务,在输入embedding、位置编码、损失函数以及整体架构设计等方面都有较多的探索空间。一些现有方法从不同角度改进自注意力模块,如变形注意力机制和自适应聚类。
尽管如此,利用Transformer来解决中高层视觉任务的探索仍处于初步阶段,需要整个业界进一步的研究。例如,在Transformer之前是否有必要使用CNN或PointNet等特征提取模块以获得更好的性能?如何像BERT和GPT-3在NLP领域所做的那样,使用大规模的预训练数据充分利用Transformer的特性?如何通过结合特定任务的先验知识来设计更强大的体系结构?
之前的一些工作已经对上述问题进行了初步讨论,期待有更多研究来探索更强大的视觉Transformer。除了目标检测,Transformer还被应用于其他中高层视觉任务,如图像分割、人体姿态估计、目标跟踪等,详细内容可参考原论文。
表3 基于Transformer的目标检测器在COCO2017上的结果对比
底层视觉
底层视觉是计算机视觉领域的一个重要问题,如图像超分辨率和图像生成等,而目前也有一些工作来研究如何将Transformer应用于底层视觉中来。这些任务通常将图像作为输出(高分辨率或去噪图像),这比分类、分割和检测等高层视觉任务(输出是标签或框)更具挑战性。
图3和图4展示了在底层视觉中使用Transformer的方式。在图像处理任务中,首先将图像编码为一系列token,Transformer编码器使用该序列作为输入,进而用Transformer解码器生成所需图像。
在图像生成任务中,基于GAN的模型直接学习解码器生成的token,通过线性映射输出图像,而基于Transformer的模型训练自编码器学习图像的码本,并使用自回归Transformer模型预测编码的token。而一个有意义的未来研究方向是为不同的图像处理任务设计合适的网络架构。
图3 基于Transformer的图像生成
图4 基于Transformer的图像处理
多模态
许多研究开始热衷于挖掘Transformer在处理多模态任务(如视频-文本、图像-文本和音频-文本)的潜力。CLIP是其中影响力较大的一个工作,其将自然语言作为监督信号,来学习更有效的图像表示。CLIP使用大量文本图像对来联合训练文本编码器和图像编码器。
CLIP的文本编码器是一个标准的Transformer,具有mask的自注意力层;对于图像编码器,CLIP考虑了两种类型的架构:ResNet和视觉Transformer。CLIP在一个新采集的数据集上进行训练,该数据集包含从互联网上收集的4亿对图像-文本对。
CLIP展示了惊人的零样本分类性能,在ImageNet-1K数据集上实现了76.2% top-1精度,而无需使用任何ImageNet训练标签。华为诺亚的悟空(英文名:FILIP)模型使用双塔架构构建图文表征,取得了更好的效果,如图5所示。
总之,基于transformer的多模态模型在统一各种模态的数据和任务方面显示出了其架构优势,这表明了transformer具备构建一个能够处理大量应用的通用智能代理的潜力。
图5 FILIP框架
高效Transformer
尽管Transformer模型在各种任务中取得了成功,但它们对内存和计算资源的高要求阻碍了它们在端侧设备(如手机)上的部署。文章还回顾了为高效部署而对Transformer模型进行压缩和加速的研究,这包括网络剪枝、低秩分解、知识蒸馏、网络量化和紧凑结构设计。
表4列出了一些压缩Transformer模型的代表性工作,这些工作采用不同的方法来识别Transformer模型中的冗余。具体来说,剪枝侧重于减少Transformer模型中组件(例如,层、头)的数量,而分解将原始矩阵表示为多个小矩阵。紧凑模型也可以直接手动(需要足够的专业知识)或自动(例如通过NAS)设计来得到。
表4 Transformer压缩代表性工作
未来展望
作为一篇综述论文,对所探究的领域未来方向的牵引也是非常重要的。本文的最后,也为大家提供了几个有潜力并且很重要的方向:
业界流行有各种类型的神经网络,如CNN、RNN和Transformer。在CV领域,CNN曾经是主流选择,但现在Transformer变得越来越流行。CNN可以捕捉归纳偏置,如平移等变和局部性,而ViT使用大规模训练来超越归纳偏置。从现有的观察来看,CNN在小数据集上表现良好,而Transformer在大数据集上表现更好。而在视觉任务中,究竟是使用CNN还是Transformer,或者兼二者之所长,是一个值得探究的问题。
大多数现有的视觉Transformer模型设计为只处理一项任务,而许多NLP模型,如GPT-3,已经演示了Transformer如何在一个模型中处理多项任务。CV领域的IPT能够处理多个底层视觉任务,例如超分辨率、图像去雨和去噪。Perceiver和Perceiver IO 也是可以在多个领域工作的Transformer模型,包括图像、音频、多模态和点云。将所有视觉任务甚至其他任务统一到一个Transformer(即一个大统一模型)中是一个令人兴奋的课题。
另一个方向是开发高效的视觉Transformer;具体来说,如果让Transformer具有更高精度和更低资源消耗。性能决定了该模型是否可以应用于现实世界的应用,而资源成本则影响其在硬件设备上的部署。而通常精度与资源消耗息息相关,因此确定如何在两者之间实现更好的平衡是未来研究的一个有意义的课题。
通过使用大量数据进行训练,Transformer可以在NLP和CV不同任务上得到领先的性能。最后,文章还留下一个问题:Transformer能否通过更简单的计算范式和大量数据训练获得令人满意的结果?
END
欢迎加入「Transformer」交流群备注:TFM