再见卷积神经网络,使用Transformers创建计算机视觉模型

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: 再见卷积神经网络,使用Transformers创建计算机视觉模型

本文旨在介绍/更新Transformers背后的主要思想,并介绍在计算机视觉应用中使用这些模型的最新进展。

读完这篇文章,你会知道……

  • 为什么Transformers在NLP任务中的表现优于SOTA模型。
  • Transformer模型的工作原理
  • 这是卷积模型的主要限制。
  • Transformers如何克服卷积模型的限制。
  • 用Transformers完成计算机视觉任务。

长期依赖和效率权衡

在NLP中,神经语言模型的目标是创建对文本中的单词语义尽可能多的信息进行编码的嵌入。这些语义不仅限于单词的定义,实际上,如果我们不知道它们所属的上下文,那么很多单词本身就毫无意义:在句子“Transformers 很酷,因为它们高效”中嵌入 因为“他们”一词如果没有考虑到它是指“Transformers ”,将毫无意义。

最佳模型应该能够表示单词之间的这些相关性,即使在处理这些单词可能距离较远的大型文本时也是如此。我们说具有这种能力的模型可以编码长期依赖性。

以下内容介绍了NLP(在Transformers之前)中的SOTA模型所面临的问题,以便有效地对长期依赖性进行建模。

RNN问题

特别是,LSTM和GRU是流行的RNN,能够从文本中的单词编码丰富的语义。它们以顺序方式工作,一次处理一个令牌,并保留模型已经看到的所有这些令牌的“内存”,以便将其某些语义添加到需要它们的其他单词中。

这些RNN能够通过被称为“门”的组件,使用神经网络来了解信息的元素应该保留,哪些信息应该被删除,哪些信息应该更新每次处理一个新的令牌

这些模型的体系结构使其对爆炸和消失梯度具有鲁棒性,这是RNN中的一个常见问题,这使它们能够跟踪序列中元素之间相当长的依赖性,尽管顺序地处理令牌并依靠将其信息保留在内存中,但是如果依赖关系真的很远,进行处理的并不很好。

这种顺序性质也使它们难以有效地扩展或并行化。每个前向通过都基于已经看到序列的先前样本的模型,即一次只能计算一次嵌入。

CNN的问题

卷积在NLP任务中也很流行,这是由于使用gpu训练时的效率和可伸缩性。就像2D卷积可以从图像中提取特征一样,这些模型使用1D过滤器从文本中提取信息,文本以1D序列表示。

这类神经网络的感受域取决于过滤器的大小和使用的卷积层的数量。增加这些超参数的值会增加模型的复杂性,会产生消失梯度甚至无法训练的模型。残差连接和扩展的卷积也被用于增加这些模型的接受域,但是卷积在文本上操作的方式总是在它能够捕获的接受域上存在限制和权衡。

Transformers

Transformers于2017年以一种简单且可扩展的方式出现,以在语言翻译中获得SOTA结果。它们很快应用于其他NLP任务,成为几个基准(例如GLUE,SQuAD或SWAG)的新SOTA。

通常会训练这些模型的大型版本并针对不同的任务进行微调,因此即使在数据匮乏的情况下它们也很有用。即使具有数十亿个参数,这些模型的性能似乎也不会饱和。模型越大,结果越准确,并且模型呈现的新兴知识越有趣(例如GPT-3)。

Transformer模型

给定一个包含N个单词的输入文本,每个Transformer(W)都会创建N个权重,文本中的每个单词(Wn)都会产生一个权重。每个权重的值将取决于单词在上下文中的依赖性(Wn),以表示正在处理的单词的语义(W)。下图代表了这个想法。请注意,蓝线的透明度表示分配的关注权重的值。

640.png

在此,上一行代表正在处理的单词,下一行代表用作上下文的单词(请参见这些单词相同,但是如果它们被处理或用于处理另一个单词,则它们将被区别对待)。请注意,第一行中的“他们”,“酷”或“效率”具有较高的权重指向“Transformers”,因为这确实是他们所指的词。

然后,这些权重用于组合每对单词的值,并为每个单词(W)生成更新的嵌入,该嵌入现在包含有关特定单词(W)的上下文中那些重要单词(Wn)的信息。

在幕后,为了计算这些更新的嵌入,转换器使用了自注意力机制,这是一种高效的技术,可以并行更新输入文本中每个单词的嵌入。

自注意力机制

从从输入文本中嵌入单词(W)开始,我们需要以某种方式找到一种方法来测量同一文本中每隔一个单词嵌入(Wn)的重要性(相对于W的重要性)并合并其信息 创建更新的嵌入(W')。

自注意力会将嵌入到输入文本中的每个单词线性地投影到三个不同的空间中,从而产生三个新的表示形式,称为查询,键和值。这些新的嵌入将用于获得一个分数,该分数将表示W与每个Wn之间的依赖关系(如果W取决于W',则为高正分数;如果W与W'不相关,则为高负分数)。然后,该分数将用于合并来自不同Wn单词嵌入的信息,从而为单词W创建更新的嵌入W'。

下图显示了如何计算两个单词之间的注意力得分:

640.png

在图像中,蓝线表示来自第一个单词(W)的信息流,而棕线表示第二个单词(Wn)的信息流。

每个单词嵌入都乘以一个Key和一个Query矩阵,从而得到每个单词的查询和键表示。为了计算W和Wn之间的分数,将W(W_q)的查询嵌入“发送”到Wn(Wn_k)的关键嵌入,并且将两个张量相乘(使用点积)。点积的结果值是它们之间的分数,它将表示W相对于Wn的依赖性。

我们也可以将第二个单词用作W,将第一个单词用作Wn,这样我们将计算出一个分数,该分数代表第二个单词对第一个单词的依赖性。我们甚至可以使用与W和Wn相同的单词来计算单词本身对其定义的重要性!

自我注意力将计算文本中每对单词之间的注意力得分。分数将被 softmax,将其转换为权重,范围在0到1之间。

下图表示如何使用这些权重获得每个单词的最终单词嵌入:

640.png

看到现在每个单词嵌入都乘以生成其值表示形式的第三个矩阵。该张量将用于计算每个单词的最终嵌入。对于每个单词W,将在文本Wn中为每个其他单词计算的权重乘以它们相应的值表示形式(Wn_v),并将它们加在一起。该加权和的结果将是单词W!的更新嵌入。(在图中以e1和e1表示)。

我建议看看杰伊·阿拉玛(Jay Alamar)给那些想要更深入地了解自我注意力和模型的文章(https://jalammar.github.io/illustrated-transformer/),因为这是对该技术最重要部分的简短描述。

卷积归纳偏置

卷积模型已经在计算机视觉领域占据了主导地位,并取得了巨大的成功。卷积可以使用GPU有效地并行化,当从图像中提取特征时,它们可以提供合适的归纳偏差。

卷积运算施加了两个重要的空间约束,这些约束促进了视觉特征的学习:

  • 由于权重共享,从卷积层提取的特征是平移不变的,它们对特征的全局位置不敏感,而是确定特征是否存在。
  • 由于卷积算子的性质,从卷积层提取的特征是局部敏感的,每个操作仅考虑图像的局部区域。

但是,卷积归纳偏差对图像本身缺乏全局理解。他们擅长提取视觉特征,但无法对它们之间的依赖关系进行建模。

例如,卷积层模型的训练来识别人脸可以编码信息是否“眼睛”的特性,“鼻子”或“嘴”出现在输入图像,但是这些表示不会有这样的“眼睛上面鼻子”或“嘴下面的鼻子”,因为每一个卷积内核不会足够大来处理多个这些特性。

为了跟踪图像中的远距离依赖关系,需要大的接收场,实际上,这涉及使用大核或卷积层的长序列,但以牺牲效率为代价,并使模型极其复杂,甚至无法训练。

计算机视觉中的Transformer

与Transformers如何利用自我注意在文本中建模远程依赖类似,一些新颖的作品也展示了利用自我注意有效地克服归纳卷积偏差带来的局限性的技术。

这些工作已经在目标检测、视频分类、图像分类和图像生成等多个领域的计算机视觉基准中显示了良好的结果。其中一些架构能够匹配或优于SOTA的结果,即使在摆脱了卷积层并完全依赖于自我关注时也是如此。

从自我注意力生成的视觉表示不包含卷积所施加的空间约束。取而代之的是,他们能够根据任务以及在管道中放置该层的阶段来学习最合适的感应偏置。在模型的早期阶段使用的自我注意,可以学习到类似于卷积的行为。

自注意力层

计算机视觉中的自注意层以特征图为输入。目标是计算每对特征之间的注意力权重,从而生成一个更新的特征图,其中每个位置都有关于同一图像中任何其他特征的信息。

这些层可以直接替换或与卷积结合,它们能够比常规卷积关注更大的接受域,因此能够建模空间上距离较远的特征之间的依赖关系。

所使用的最基本的方法(非本地网络和注意力增强卷积网络)由压扁的空间维度的输入特性映射到一个序列特征形状HW x F, HW代表了扁平的空间维度和F的深度特征映射,并使用自我关注直接在序列获得更新后的表征。

这种自注意层的计算成本对于高分辨率的输入可能是昂贵的,因此它只适用于小的空间维度。

一些工作已经提出了解决此问题的方法,例如Axial-DeepLab,他们沿两个空间轴顺序计算注意力,而不是直接处理整个图像,从而使操作效率更高。其他更简单的解决方案包括以较小的接收场为代价来处理特征图的贴片而不是整个空间尺寸(这是在视觉模型中的独立自我注意中完成的)。但是,这些较小的接收场仍可能比卷积核大得多。

将这些层与卷积层结合使用的模型,在模型的后一层中使用自注意时,会获得最优结果。事实上,在自我注意和卷积层之间的关系中,研究表明,模型中早期使用的自我注意层学习到的归纳偏差与卷积默认存在的偏差相似。

视觉Transformers

与在卷积管道中包含自我注意不同,其他的工作已经提出了独特地依赖于自我注意层,并利用原来为Transformer提供的编解码器架构,使其适应计算机视觉任务。

在使用大量参数和使用大量数据进行训练时,这些模型以更简单的模型和更快的训练速度,在图像分类或目标检测等任务中产生与SOTA相似或更好的结果。

以下是三篇使用Transformer架构完成计算机视觉任务的重要论文的快速摘要:

Image Transformer (https://arxiv.org/pdf/1802.05751.pdf

这项工作为ImageNet上的图像生成提供了一个新的SOTA,并在超分辨率任务上显示了良好的效果。

他们提出将图像生成视为一个自回归问题,即每个新像素的生成只考虑图像中已知的像素值。在每一次特征生成中,self-attention都将m个特征的平摊patch作为上下文,生成未知像素值的表示。

为了使这些像素值适合作为自关注层的输入,我们使用一维卷积将每个RGB值转换为d维张量,并将上下文patch的m个特征平化为1维。

下图为所提模型:

640.png

这里q表示待更新的嵌入像素。使用查询和关键矩阵(Wq和Wk),它与内存中的像素(用m表示)中的所有其他嵌入相乘,生成一个分数,然后进行softmax并用作与矩阵Wv获得的值向量之和的权重。将结果嵌入到原q嵌入中,得到最终结果。在该图中,p表示添加到每个输入嵌入的位置编码。该编码是由每个像素的坐标生成的。

注意,通过使用self-attention,多个像素值可以同时被预测(因为我们已经知道输入图像的原始像素值),而用于计算self-attention的patch可以处理比卷积层更高的接受域。然而在评估中,图像生成依赖于每个像素具有其邻居的可用值,因此只能一次执行一步。

DETR(https://arxiv.org/pdf/2005.12872.pdf

DETR提出了一个简单的模型,实现了与SOTA对象检测方法相同的精度和性能。

所提模型的结构如下图所示:

640.png

它使用从卷积主干中提取的视觉特征进行自我注意。在主干模块中计算的特征图将在其空间尺寸上展平,即,如果特征图具有形状(h x w x d),则展平的结果将具有形状(hw x d)。将可学习的位置编码添加到每个维度,并将结果序列馈入编码器。

编码器使用多个自我注意块来组合不同嵌入之间的信息。处理后的嵌入被传递到一个解码器模块,该模块使用可学习的嵌入作为查询(对象查询),能够处理所有计算的可视化特征,生成嵌入。在这种嵌入中,执行目标检测所需的所有信息都被编码。每个输出都被送入一个完全连接的层,该层将输出一个包含元素c和b的五维张量,其中c表示该元素的预测类,b表示边界盒的坐标(分别为1D和4D)。c的值可以分配给一个“no object”标记,它表示一个没有发现任何有意义的检测的对象查询,因此不会考虑坐标。

该模型能够并行计算对一幅图像的多次检测。但是,它可以检测到的对象数量仅限于使用的对象查询的数量。

论文的作者声称,该模型在大型对象的图像上优于SOTA模型。他们假设,这是由于自我注意给模型提供了较高的接受域。

Vision Transformer (https://arxiv.org/pdf/2010.11929.pdf

该模型提出了一种新的图像识别SOTA,该模型甚至可以完全依靠自我关注,并且能够提供与当前SOTA相当的性能。

以下是所呈现模型的表示。

640.png

输入序列由从大小为PxP的小块中提取的像素值的扁平向量组成。每个扁平化元素被馈送到线性投影层,该线性投影层将产生它们所谓的“补丁嵌入”。在序列的开头附加了一个额外的可学习的嵌入。通过自我关注更新后,此嵌入将用于预测输入图像的类别。可学习的位置嵌入也添加到这些嵌入的每个嵌入中。

通过将MLP Head堆叠在Transformer顶部(在我们添加到序列中的额外易学嵌入的位置)即可执行分类。

这项工作中还提出了一种混合体系结构。他们使用ResNet早期阶段的特征图来代替将投影的图像斑块用作Transformer的输入。通过端到端培训《Transformers》和此CNN骨干,他们可以实现最佳性能。

位置编码

由于Transformers需要学习他们正在接受培训的任务的归纳偏见,因此以各种方式帮助学习过程总是有益的。我们可以在模型输入中包含的任何归纳偏差都会促进其学习并改善结果。

当用转换器更新特性时,会丢失输入序列的顺序。Transformer本身很难甚至不可能了解这个顺序,因此它所做的就是将位置表示聚合到模型的嵌入输入中。这种位置编码可以学习,也可以从一个固定的函数中进行采样,它被聚集的位置可以有所不同,尽管它通常是在输入嵌入处完成的,就在被输入到模型之前。

在计算机视觉中,这些嵌入可以表示特征按一维扁平化序列的位置,也可以表示特征的二维位置。

在该领域中,已经发现相对位置编码非常好用。它们由可学习的嵌入组成,这些嵌入学会对要素之间的相对距离进行编码,而不是对要素的全局位置进行编码。

总结

  • Transformer解决了不仅仅限于NLP的问题,长期依赖对改善计算机视觉任务也很重要。
  • Transformer模型是一种简单但可扩展的方法,如果将其建模为一系列嵌入,则可以应用于任何类型的数据。
  • 卷积是平移不变的,对位置敏感,并且对图像缺乏全局理解。
  • 可以在卷积管道中使用Transformer来生成图像的全局表示。
  • Transformer可以用于计算机视觉,即使摆脱常规的卷积管道也可以产生SOTA结果。


目录
相关文章
|
5天前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
|
6天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
8天前
|
机器学习/深度学习 监控 自动驾驶
卷积神经网络有什么应用场景
【10月更文挑战第23天】卷积神经网络有什么应用场景
12 2
|
8天前
|
机器学习/深度学习 自然语言处理 算法
什么是卷积神经网络
【10月更文挑战第23天】什么是卷积神经网络
16 1
|
2天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第32天】本文将介绍深度学习中的一个重要分支——卷积神经网络(CNN),以及其在图像识别领域的应用。我们将通过一个简单的代码示例,展示如何使用Python和TensorFlow库构建一个基本的CNN模型,并对其进行训练和测试。
|
7天前
|
机器学习/深度学习 自然语言处理 TensorFlow
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第26天】在这篇文章中,我们将深入探讨卷积神经网络(CNN)的基本原理、结构和应用。CNN是深度学习领域的一个重要分支,广泛应用于图像识别、语音处理等领域。我们将通过代码示例和实际应用案例,帮助读者更好地理解CNN的概念和应用。
|
10天前
|
机器学习/深度学习 算法 计算机视觉
深度学习与生活:如何利用卷积神经网络识别日常物品
【10月更文挑战第24天】在这篇文章中,我们将探索深度学习如何从理论走向实践,特别是卷积神经网络(CNN)在图像识别中的应用。通过一个简单的示例,我们将了解如何使用CNN来识别日常生活中的物体,如水果和家具。这不仅是对深度学习概念的一次直观体验,也是对技术如何融入日常生活的一次深刻反思。文章将引导读者思考技术背后的哲理,以及它如何影响我们的生活和思维方式。
|
5天前
|
存储 安全 算法
网络安全与信息安全:漏洞、加密技术及安全意识的重要性
如今的网络环境中,网络安全威胁日益严峻,面对此类问题,除了提升相关硬件的安全性、树立法律法规及行业准则,增强网民的网络安全意识的重要性也逐渐凸显。本文梳理了2000年以来有关网络安全意识的研究,综述范围为中国知网中篇名为“网络安全意识”的期刊、硕博论文、会议论文、报纸。网络安全意识的内涵是在“网络安全”“网络安全风险”等相关概念的发展中逐渐明确并丰富起来的,但到目前为止并未出现清晰的概念界定。此领域内的实证研究主要针对网络安全意识现状与问题,其研究对象主要是青少年。网络安全意识教育方面,很多学者总结了国外的成熟经验,但在具体运用上仍缺乏考虑我国的实际状况。 内容目录: 1 网络安全意识的相关
|
2天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第31天】本文将探讨网络安全和信息安全的重要性,以及如何通过理解和应用相关的技术和策略来保护我们的信息。我们将讨论网络安全漏洞、加密技术以及如何提高安全意识等主题。无论你是IT专业人士,还是对网络安全感兴趣的普通用户,都可以从中获得有用的信息和建议。
11 1
|
2天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第31天】随着互联网的普及,网络安全问题日益突出。本文将探讨网络安全漏洞、加密技术和安全意识等方面的内容,帮助读者了解网络安全的重要性,提高自身的网络安全防护能力。