视觉Transformer同架构设计和训练技巧

科技   2024-11-27 11:01   中国香港  

点击下方深度学习爱好者”,选择加p"星标"或“置顶

仅作学术分享,不代表本公众号立场,侵权联系删除
转载于:专知


Transformers 在自然语言处理方面取得了巨大的成功。由于Transformers 具有强大的自注意力机制,研究人员开发了用于各种计算机视觉任务的视觉Transformers ,如图像识别、目标检测、图像分割、位姿估计和三维重建。本文全面概述了视觉Transformers 的不同架构设计和训练技巧(包括自监督学习)的文献。我们的目标是提供一个系统的回顾与开放的研究机会。


Transformers [Vaswani et al., 2017]最初在自然语言处理方面取得了巨大的成功[Devlin et al., 2018; Radford et al., 2018],可用于情感分类、机器翻译、词预测和摘要等多种应用。transformers 的关键特征是自注意力机制,它帮助模型学习全局上下文,并使模型获得远程依赖。在自然语言处理取得巨大成功的推动下,transformers被计算机视觉任务所采用,导致了视觉transformers的发展。近年来,视觉transformers 变得流行起来,并在许多领域取得了相当大的成功,如图像分类[Dosovitskiy et al., 2021; Liu et al., 2021],视频分类[Arnab et al., 2021],目标检测[Carion et al., 2020; Fang et al., 2021],语义分割[Xie et al., 2021a; Li et al., 2021b]和位姿估计[Zhu et al., 2021]。


尽管该架构取得了成功,但仍有一些缺陷需要解决,如数据缺乏、缺乏局部性和跨补丁信息。因此,最近提出了进一步增强视觉transformers的研究路线。本文介绍了解决这些问题的重要思路,旨在为未来的研究提供线索。此外,由于自监督学习方法在视觉transformers 中起着重要的作用,我们也介绍了几种用于视觉transformers 的自监督学习方法。论文的其余部分是或组织如下。首先对transformers 进行了初步的介绍,然后介绍了视觉transformers 的各种结构。在此基础上,提出了视觉transformers 的训练方法和自监督学习方法。最后,对本文进行了总结,并对未来的研究方向和挑战进行了讨论。


注意力机制是深度学习研究中最有益的突破之一,它衡量了有助于最终结果的特征的重要性。使用注意力机制通常会教会模型专注于特定的特征。对于自注意而言,输入和输出的大小是相同的,而自注意力机制允许输入之间的相互作用,并发现它们更应该注意哪一个。然后,根据注意力得分对输入进行加权,增强每个输出。例如,给一个句子,“一只狗掉进了冰里,从池塘里被救了出来”,自注意力可以通过关注“狗”来增强“它”的嵌入性。自注意力是为了帮助模型在远程依赖特性下学习全局上下文而设计的。



Transformer,由Vaswani等人提出[Vaswani等人,2017],在NLP任务中无处不在[Devlin等人,2018;Brown等人,2020年;Peyrard等人,2021年]。图2说明了Transformer的架构。单个Transformer块可分为编码器和解码器,二者可进一步分解为1)自注意力,2)位置前馈网络,3)位置编码。



ViT [Dosovitskiy等人,2021]用几个transformer 层取代了所有的CNN结构,在图像识别方面达到了最先进的性能,被称为视觉transformer 的先驱。ViT包含三个部分:1)补丁和位置嵌入,2)transformer 编码器,3)多层感知器(MLP)头。


尽管ViT具有良好的性能,但它仍然存在几个问题。例如,ViT需要在大型数据集上进行训练。因为ViT最初是在JFT数据集上训练的[Sun et al., 2017],图像≈300M,然后在ImageNet上进行微调(≈1.2M) [Russakovsky et al., 2015]。如果数据集不足,该模型可能比基于CNN的方法表现更差。虽然预训练的权重可以用于各种任务,但许多数据集是不可转移的,甚至性能较差。此外,ViT并不是一种通用的主干,它只适合于图像分类,而不适合进行密集的预测,如目标检测和图像分割,因为它需要进行patch分区。


视觉transformers分类



图3给出了三种主流方向的视觉transformers分类。具体来说,第3.1节首先介绍了基于局部性的模型,它将局部性添加到体系结构中。接下来,在第3.2节介绍了基于特征的模型,旨在使特征表示多样化。最后,在3.3节提出了基于层次的模型,它逐层减少特征大小,以提高推理速度。一些没有被划分到上述类别的架构包含在第3.4节中。请注意,这些模型被归入某些类别,但这些类别不是互斥的。


基于局部的ViT模型缺乏局部性和翻译等效性,通常比CNN表现得差。因此,研究人员开始将CNN结构纳入视觉transformer ,因为卷积核有助于模型捕捉局部信息。因此,从CNN中加入局部性可以提高视觉转换器的数据效率,从而在小数据集上获得更好的性能。下面,我们介绍几种考虑局部性的方法。


视觉Transformer的训练技巧


为了更好地训练视觉Transformer,本文提出了一些增加数据多样性和提高模型通用性的方法。数据增强用于增加训练数据的多样性,如平移、裁剪等,通过改变输入模式帮助模型学习主要特征。为了找出各种数据集的最佳组合,AutoAugment [Cubuk等人,2019]和RandAugment [Cubuk等人,2020]旨在寻找更好的组合。这些增强策略被证明是可转移到不同的数据集。指数移动平均线(EMA)经常被加入以稳定训练过程。


视觉Transformer中的自监督学习

自监督学习(Self-Supervised Learning, SSL)将模型训练为监督学习,但只使用数据本身来创建标签,而不是手工注释。与利用数据相比,SSL有相当大的优势,特别是对那些广泛的数据集非常有用。它还帮助模型了解数据中的关键信息,使模型具有鲁棒性和可迁移性。目前,计算机视觉中的SSL主要分为前置任务和对比学习。前者是在对下游任务进行微调之前,为模型设计一个特定的工作,例如预测旋转程度、着色或解决拼图游戏。相比之下,后者为同类数据生成相似的特征,并推开其他负样本。


结论


我们介绍了几种视觉transformer模型,并重点介绍了创新的组件。具体地说,引入了可变架构来解决数据需求大、效率低、鲁棒性差等缺点。这些思想包括转移CNN的诱导偏差、增加局部性、强数据增强、跨窗口信息交换和降低计算成本。我们还回顾了训练技巧,以及自监督学习,它训练数据集不需要任何标签,但甚至可以达到比监督方法更高的准确性。最后,我们对未来的研究提出了一些开放性的挑战。

下载1:Pytoch常用函数手册
在「深度学习爱好者」公众号后台回复:Pytorch常用函数手册,即可下载全网第一份Pytorch常用函数手册,涵盖Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多线程处理等十四章章内容。
下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

深度学习爱好者
分享机器学习、深度学习和Python等知识与原理,每天分享深度学习与计算机视觉领域的经典和最新的论文总结,带读者一起跟踪前言科技!
 最新文章