本文约4379字,建议阅读5分钟
本文介绍
了华为诺亚方舟实验室联合高校整理的业界第一篇视觉Transformer综述。
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 领域已经做出了很多有影响力的工作,基于这些经验并且联合了业界知名学者一起进行了深入思考和讨论,给出了几个很有潜力的未来方向,供大家参考。
附华为诺亚方舟实验室 Transformer 系列工作:
NLP 大模型盘古 Alpha:https://arxiv.org/abs/2104.12369
中文预训练模型哪吒:https://arxiv.org/abs/1909.00204
轻量模型 TinyBERT:https://arxiv.org/abs/1909.10351
底层视觉 IPT:https://arxiv.org/abs/2012.00364
多模态 - 悟空:https://arxiv.org/abs/2111.07783
骨干网络架构 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。而一个有意义的未来研究方向是为不同的图像处理任务设计合适的网络架构。
许多研究开始热衷于挖掘 Transformer 在处理多模态任务(如视频 - 文本、图像 - 文本和音频 - 文本)的潜力。CLIP 是其中影响力较大的一个工作, 其将自然语言作为监督信号,来学习更有效的图像表示。CLIP 使用大量文本图像对来联合训练文本编码器和图像编码器。CLIP 的文本编码器是一个标准的 Transformer,具有 mask 的自注意力层;对于图像编码器,CLIP 考虑了两种类型的架构:ResNet 和视觉 Transformer。CLIP 在一个新采集的数据集上进行训练,该数据集包含从互联网上收集的 4 亿对图像 - 文本对。CLIP 展示了惊人的零样本分类性能,在 ImageNet-1K 数据集上实现了 76.2% top-1 精度,而无需使用任何 ImageNet 训练标签。华为诺亚的悟空(英文名:FILIP)模型使用双塔架构构建图文表征,取得了更好的效果,如图 5 所示。总之,基于 transformer 的多模态模型在统一各种模态的数据和任务方面显示出了其架构优势,这表明了 transformer 具备构建一个能够处理大量应用的通用智能代理的潜力。
尽管 Transformer 模型在各种任务中取得了成功,但它们对内存和计算资源的高要求阻碍了它们在端侧设备(如手机)上的部署。文章还回顾了为高效部署而对 Transformer 模型进行压缩和加速的研究,这包括网络剪枝、低秩分解、知识蒸馏、网络量化和紧凑结构设计。表 4 列出了一些压缩 Transformer 模型的代表性工作,这些工作采用不同的方法来识别 Transformer 模型中的冗余。具体来说,剪枝侧重于减少 Transformer 模型中组件(例如,层、头)的数量,而分解将原始矩阵表示为多个小矩阵。紧凑模型也可以直接手动(需要足够的专业知识)或自动(例如通过 NAS)设计来得到。
作为一篇综述论文,对所探究的领域未来方向的牵引也是非常重要的。本文的最后,也为大家提供了几个有潜力并且很重要的方向:
业界流行有各种类型的神经网络,如 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 能否通过更简单的计算范式和大量数据训练获得令人满意的结果?