约书亚·厄尔在 Unsplash 上的照片
深度学习的变形金刚历史上,一切都始于 2017 年的那篇著名论文‘注意力是你所需要的全部’。谷歌大脑团队发表了他们的研究,通过使用转换器改变了自然语言处理的命运。
在图像上使用相同技术的想法可能开启了视觉技术的新时代……
一、简介
- 在这篇文章中,我根据我的研究准备了一份视觉变形金刚的概述。在我的学习过程中,我总结了一些笔记来回答这些问题来理解变形金刚。
— — 什么是 Transformer,为什么要用在深度学习中?
— — 为什么以及如何将 Transformer 应用于视觉?
— — 视觉变形金刚和 CNN 有什么区别?
——Transformer 如何用于物体检测?
视觉变形金刚准备好生产了吗?
- 这些笔记会很有用,特别是对于那些经常听变形金刚但还不能开始的人。让我们开始…
什么是 Transformer,为什么要用在深度学习中?
- Transformer ,一种基于注意力机制的新模型架构,于 2017 年由一些研究人员和谷歌大脑团队在论文**‘注意力是你所需要的全部’**中首次提出。
- 在那之前,递归神经网络(RNN) 、长短期记忆(LSTM) 和门控递归网络大多被用作自然语言处理应用中的最新网络,因为它们能够找到序列数据的信息。然而,这些网络在 NLP 任务中有一些主要的缺点。
RNN 建筑公司。来源:https://Stanford . edu/~ shervine/teaching/cs-230/cheat sheet-recurrent-neural-networks
- 它们不足以从文本数据中理解全局意义,因为它是顺序处理的。正如您在上面的传统 RNN 架构的图片中所看到的,每个时间戳的输出都必须作为输入提供给下一个时间戳。这导致了短时记忆,也阻止了平行训练。即使 LSTM 可以增加内存容量,但这还不够,而且计算量仍然很大。
- 另一方面, Transformer 尤其是它的注意力机制在 NLP 任务上创造了突破。OpenAI 的 GPT-3 模型和谷歌的伯特模型是这一突破的最大例子。
谷歌的 BERT 例子。来源:https://blog . Google/products/search/search-language-understanding-Bert/
- 变压器 架构的主要部分由编码器和解码器组成。变形金刚一次性将所有输入,如一个句子,作为嵌入,而 RNN 和 LSTM 模型逐字输入。并且这些嵌入在关注块中被处理。
- 关注块的目的是提取输入句子的单词之间的关系/依存关系。因此,这些特征有助于获得对上下文的全局理解。除了注意机制和嵌入、层模型、前馈网络和 softmax 函数也在该网络中使用。
变压器模型架构。来源:https://arxiv.org/pdf/1706.03762.pdf
- 我不打算解释关于模型架构的所有细节,但我应该提到的是注意力区块是变形金刚最关键的部分。我们将在下一部分更详细地看到相同的架构。上面可以看到变压器的模型架构。关于该模型的进一步解释可以在该研究的官方论文中找到。
注意力可视化。来源:https://arxiv.org/pdf/1706.03762.pdf
- 在上面的注意机制的例子中,你可以看到长距离依赖在网络的编码器部分。您在此看到的所有注意事项仅为工作**【制作】显示。每种不同的颜色也代表不同的注意力头**。令人印象深刻的是,许多注意力集中在**、、、【更多】、**、【困难】、之间。
为什么以及如何将 Transformer 应用于视觉?
- 正如我提到的,注意机构是变形金刚的心脏。这使得变形金刚成为 NLP 任务事实上的标准。从局部到全局理解…像人类一样。
- 2020 年,谷歌研究和大脑团队在图像上使用了几乎相同的技术,他们表明,对CNN的依赖是不必要的,直接应用于图像补丁序列的纯转换器可以在图像分类任务上表现得非常好。他们在名为‘一张图像抵得上 16×16 个字’的论文中发表了他们的研究。
视觉变压器型号可在下面查看。让我解释一下这个模型是如何工作的。
模型概述。来源:https://arxiv.org/pdf/2010.11929.pdf
- 整个过程的第一步是将图像拆分成固定大小的面片、展平它们,然后线性嵌入它们每一个。你可以在 NLP 中把这些小块想象成单词,把整个图像想象成一个句子。
你可能会问为什么我们不把所有的像素都当成面片。这个问题的第一个答案与 计算复杂度 有关。如果我们把每一个像素看作一个面片,那么 注意机制 的复杂度会非常高。此外,图像不同角落或侧面的像素彼此之间没有有意义的关系。因此,网络没有必要额外关注。
- 下一步是将位置嵌入添加到面片嵌入中。然后,变压器编码器由嵌入的结果序列馈送。
在说变压器编码器之前,我想提一点。如果你意识到我们把 面片 和它们的 位置 组合起来。但是,没有关于 像素 位置的信息。
有研究试图通过将补丁分成更小的补丁来解决这个问题。此外,本研究的作者在 ImageNet 上实现了 81%的 top-1 准确率**。这比具有类似计算成本的最先进的视觉变压器高大约 1.7%。他们称自己的框架为* 【变压器中的变压器(TNT) 。你可以在下面看到他们的模型,并查看他们的论文了解详情。*
TNT 框架。来源:https://arxiv.org/pdf/2103.00112.pdf
让我们继续从视觉 变压器编码器……
- 变压器编码器包括多头自关注(MSA)、MLP 块和层形态(LN)* 。*
- MSA 的目的是像在 NLP 中一样在补丁之间抽取注意力*。在图像的每个补丁之后,自我关注度将评估该补丁与图像的其他补丁之间的关注度。别忘了,我们把这种注意机制 叫做多头自我注意,每个头都有一个注意模式。*
- Layernorm(LN) 在每个块之前使用,剩余连接在每个块之后应用。
- MLP 用于实现架构的分类头*。MLP 由预训练时的一个隐层和微调时的一个单线层组成。*
注意地图示例。来源:https://arxiv.org/pdf/2010.11929.pdf
- 你可以在上面的图片中看到注意机制是如何工作的。你还记得显示注意力头如何在 NLP 中工作的例子吗?就像在那里,你看到我们在所有的注意力头被组合起来之后得到了什么。
你可以在他们的 GitHub 库上找到谷歌大脑团队的最新发展和模型。关于视觉转换器的详细实现和解释可以在那里找到。
CNN 和视觉变形金刚的主要区别是什么?
- 视觉变压器在图像上的感应偏差比 CNNs 小。2007 年, Geoffrey Hinton 说 CNN 的一个主要问题来自于网络中的池层*。这些层导致部分图像和整个图像的重要信息的损失。这也导致图像不同部分之间失去联系,并使局部理解图像。然而,T 转换器的自我关注层是全局的,它带给它们全局的理解。*
- 根据视觉变形金刚的官方论文,在CNN和视觉变形金刚之间可以观察到不同的对比。
- CNN 与变形金刚相比,使用更少的数据量效果更好,如下图所示。主要原因来自于有这个感应偏置*。然而,如果变形金刚可以被大 数据量馈入,那么它们会用全局方法带来更好的结果,相反 Cnn 的受限能力因为局部敏感性。*
性能比较。https://arxiv.org/pdf/2010.11929.pdf
- 另外,当比较内存效率时,特别是大视野变压器型号比 ResNet 型号内存效率更高。
性能比较。https://arxiv.org/pdf/2010.11929.pdf
- 当针对不同架构比较预训练计算性能时,视觉变形器通常在相同的计算预算下超过结果。然而,混合模型为较小的模型尺寸带来了更好的结果。
总预训练计算[exaFLOPS]。来源:https://arxiv.org/pdf/2010.11929.pdf
混动车型 不在本帖解释。我在下一部分只讲了 DETR 框架 。从名字就可以理解,混动车型是 变形金刚 和CNN**的组合。这个话题将是下一篇文章的主题。**
- 这两种方法的另一个区别是视觉变形金刚能够学习有意义的信息,即使在最底层。CNN能够在最后一层提取高层信息。通过比较来自变形金刚的可视化注意力图和来自CNN的权重可以观察到这些差异
变形金刚中的物体检测
物体检测是计算机视觉的主要任务之一,我认为是工程师和我使用最多的任务之一。这就是为什么我插入了两个著名的物体检测方法,它们在管道中使用了变压器*。***
【检测变压器(DETR)】
- 2020 年,脸书出版 DETR 。他们已经发布了第一个物体检测框架,使用转换器作为检测流水线中的核心构件。CNN也被用在了这条管道上。此外,这项研究的作者已经取得了比更快的 R-CNN 更有竞争力的结果。
DETR 管道公司。来源:https://arxiv.org/abs/2005.12872
- 脸书的 DETR 就是混动车型的一个很好的例子。它由 CNN 、变压器编解码和前馈网络*组成。*
- CNN 主干用于提取图像的特征*,而不是将输入图像分割成小块。这些特征是变平和组合与位置编码。*
- 变压器编码器将这组图像特征作为一个序列。正如我们之前看到的,变压器编码器包括一个多头自关注*模块、规格化器、和前馈网络。在这个网络中,位置编码也是固定的。*
编码器自我关注。来源:https://arxiv.org/abs/2005.12872
- 正如你在上面看到的,多亏了注意机制,变形金刚编码器甚至能够在模型的最后一个编码器层分离物体。
- 在解码器部分,机制与原变压器几乎相同。唯一的区别是,该模型在每个解码器层并行解码**‘N’个嵌入**。这些嵌入来自编码器部分,也被称为“对象查询”。这“N”个对象被转换成嵌入并被发送到前馈网络。
- 前馈网络用于预测问题。来自变压器解码器的嵌入输出被发送到这些网络。然后,他们预测一个检测*(类和边界框)或者一个**‘无对象’类。你可以把这个类想象成标准物体检测模型中的‘背景’类**。*
代码和预训练模型*可以在本作官方 GitHub 库中找到。*
你只看一个序列(YOLOS)
- YOLOS 是视觉转换器的优化版本,用于物体检测*任务。因为这种方法没有被设计成高性能的对象检测器。它的性能对未来的发展是有希望的。*
YOLOS 架构与最初的视觉转换器方案非常相似,如下图所示。你注意到有*【Pat-Tok】【PE】【Det-Tok】**。*
- ‘Pat-Tok’定义一个展平的图像补片的嵌入。*‘PE’表示位置嵌入,和‘Det-Tok’*定义了对象绑定的可学习嵌入。
- 在架构上,视觉转换器和 YOLOS 的第一个区别是有 100 个随机初始化的可学习检测令牌(' Det-Tok') ,而不是使用一个可学习的类令牌,后者用于分类。
- 架构的主体部分与视觉转换器 编码器相同。每个变压器编码器层包括一个多头自关注块、层名和 MLP 块,如我们在前面部分中所述。
- MLP 头像用于实现分类和*包围盒回归。*
YOLOS 架构概述。来源:https://arxiv.org/pdf/2106.00666.pdf
- 这两种方法的第二个区别是损失函数。视觉转换器使用图像分类损失,而 YOLOS 使用二分匹配损失。
- 你可以在两个不同的 YOLOS-S 模型的最后一层的头上检查自我关注地图可视化检测令牌和相应的预测。
自我注意地图可视化。来源:https://arxiv.org/pdf/2106.00666.pdf
- 你可以在这个 GitHub 库找到代码和预训练模型。
所以,在所有这些信息之后,我想分享一下我对这个问题的想法…
视觉变形金刚准备好量产了吗?
当然,这个问题没有具体的答案。任何任务的解决技术都可以根据项目需求而变化。
然而,在大多数项目的生产过程之前,有一些基本点需要关注,如推断时间、精度、模型训练要求、和部署过程。
那么关于变形金刚和CNN的区别,应该选择哪一个来制作呢?
- 由于变压器需要大量数据用于高精度,数据收集过程会延长项目时间。在数据较少的情况下,CNN通常比变压器表现更好。
- 变压器的训练时间看起来比 CNNs 要少。根据对计算效率和精度的比较,在模型训练时间有限的情况下,可以选择变压器*。***
- 自我关注机制可以给开发的模型带来更多意识*。既然CNN开发的模型的弱点如此难以理解,那么注意力地图就可以可视化,它们可以帮助开发者指导如何改进模型。这个过程对于基于 CNN 的模型来说更加困难。*
- 最后但同样重要的是,所选方法的部署应该简单而快速,以便准备好进行部署(如果没有时间限制,没问题)。即使有一些框架用于变形金刚,基于 CNN 的方法部署起来仍然不那么复杂。
正如我在开始时说的,我们不能说这个问题的具体答案。混合动力车型也在开发中,表现良好。应该始终如一地关注这些方法的现状。在做出决策之前,应该考虑不同方法的项目需求和能力。
由于我们生活在一个每天都有越来越多数据的世界,而且开发从未停止,变形金刚将更适合部署在实际应用中…
结论
- 从图像分类到图像分割,变形金刚成为计算机视觉应用的一部分。我们可以在变形金刚的列表中添加动作识别**、图像增强、超分辨率,或者 3D 重建任务。**
- 毫无疑问,随着更多数据的到来,我们将在未来的视觉技术中看到表现良好的、基于变压器的方法。
- 我想以提到这种方法对我最重要的影响来结束我的文章。CNN 一直是我思考计算机视觉的未来的中心。作为一名学生,可能当时我的眼界还不够。然而,变形金刚让我明白/记住新的方法总会到来。
这种进化是如此令人兴奋,我很高兴成为人工智能革命的一部分!
关于我
- *我是新技术的机器学习工程师实习生。我正在帕维亚大学攻读数据科学的硕士学位。*****
- Neosperience 通过利用 AI 的软件解决方案释放同理心的力量,使品牌能够了解、参与和扩大其客户群。在www.neosperience.com伸手。