文章目录
- Transformer基础及视觉应用
- 注意力机制基础(主要介绍Transformer用到的类型)
- Transformer的编解码器结构(Encoder and Decoder)
- Non-local Neural Networks
- Transformer与大规模图像识别(Image Recognition at Scale)
- DETR-2020
- 分割应用
Transformer基础及视觉应用
注意力机制基础(主要介绍Transformer用到的类型)
key-valure attention
在attention的计算中,通过 q q q 和 x x x 来计算 α \alpha α,在用 α \alpha α 加权求和时也是用 x x x, 这两部分 x x x 的功能是不同的,所以拆分为 ( k , v ) (k,v) (k,v)。我们先用 k k k 来和 q u e r y query query 经过打分函数 s ( k i , q ) s(k_i,q) s(ki,q) 和 s o f t m a x softmax softmax 来计算,得到注意力分布 α \alpha α,再加权汇总,相对于传统的,功能分离使key-valure attention更加灵活。
Self-Attention(自注意力机制): 它允许模型在编码一个单词时权衡该单词上下文的重要性。换句话说,在编码过程中,它可以根据不同单词的相关性将重点放在这些单词上,从而更有效地理解上下文并处理文本中的长距离依赖关系。
Cross-Attention 一般用于 Decoder,Transformer最开始被提出是用于做机器翻译的,input和output是原语言和目标语言,在原语言经过Encoder和目标语言经过 Masked Multi-Head Attention 后,它们要做一个Cross Attention,就是用当前的表示去append一下原语言里面的表示。
Multi-Head Attention(多头注意力机制): Transformer使用多组学习到的线性投影(称为 “头”),而不是进行单一的注意力计算。每个 "头 "都能有效地让模型关注不同的位置,捕捉不同方面的信息。
如上图所示,多个注意力头根据不同的 Query ( Q i Q_i Qi) 得到不同的Attention,最后再 concat 起来
多头注意力机制的思想,个人觉得有点像集成学习的思想,最后通过整合(Concat)多个注意力头,以注意到多角度的信息提高性能。
Transformer的编解码器结构(Encoder and Decoder)
编码器和解码器(Encoder and Decoder): 原始的Transformer模型具有编码器-解码器结构。编码器接收输入数据并生成一连串连续的表示,其中包含整个序列的信息。然后,解码器接收这些表示并生成输出数据,每次生成一个元素,同时以先前生成的元素为条件。其中 Feed Forward 是一个逐位的 FFN 层(每个词向量都会进全连接网络扫一遍,类似一个宽度为 1 的卷积,不同的是这里是两层的全连接层,先升维再降维)。
在Decoder中,Masked Multi-Head Attention 其实是打了个掩码,让注意力机制只能往前看,这是因为Decoder的训练是教师强制的(Teacher forcing) 的,输入的时候是整个序列都输进去的,但生成的时候是自回归的,所以不能让它往后看。
位置编码(Positional Encoding): 由于Transformer并不按顺序处理数据,因此它本身并不了解数据的位置或顺序。为了解决这个问题,位置编码被添加到了输入中(input embeddings),为模型提供了一些关于单词在句子中相对位置的信息。
层归一化和残差连接(Layer Normalization and Residual Connections): 编码器和解码器中的每个子层(自注意(Multi-Head Attention)、前馈(Feed Forward) )后都有一个残差连接,然后进行层归一化,以获得稳定的训练效果。在上图中 “Add & Norm” 包括了层归一化和残差连接(Layer Normalization and Residual Connections),实现是通过 z 1 = L a y e r N o r m ( x + z ) z_1=LayerNorm(x+z) z1=LayerNorm(x+z) 实现的,其中 z z z 是Multi-Head Attention 的输出。
Non-local Neural Networks
-
非局部(Non-local)操作:通过将自注意力转移到非局部(Non-local)块来实现。
-
与现有架构的兼容性: CNN + 非局部
-
应用:视频识别、分割
-
性能:在长距离上下文依赖的任务方面有明显的性能改善。
可参考论文:Non-local Neural Networks, CVPR-2018
可参考论文:GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond TPAMI-2020
Transformer与大规模图像识别(Image Recognition at Scale)
图像表示法(Image Representation): 图像被分割成固定大小的补丁(patches),每个补丁被平铺成一个一维向量,然后由Transformer模型进行处理。
位置嵌入(Positional Embeddings): 由于Transformer模型本身没有对图像的二维结构有任何固有的感知,因此要为每个补丁(patch)添加位置嵌入,以保留位置信息。
自注意力机制(Self Attention): 转换器中的自注意力机制使其在对某个补丁进行编码时,能够关注图像中的不同补丁。这有助于模型识别图像各部分的复杂模式。
性能: ViT 在 ImageNet 等多个基准数据集上取得了一流的性能,超过了 EfficientNet 等现有的基于 CNN 的模型。不过,值得注意的是,在大型数据集上训练的大模型的性能提升更为明显。
优点:
-
纯Transformer结构
-
同时扩大训练规模和模型规模。
-
与 CNN 变体一起使用时性能卓越。
缺点:
- 计算成本高。
- 数据效率低
- 需要更强的训练增强
参考论文:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale, ICLR-2021
DETR-2020
端到端训练(End-to-End Training): 传统的物体检测方法(如 Faster R-CNN 或 YOLO)将任务划分为不同的阶段(如提出区域和对每个提议进行分类),而某些阶段(如非极大值抑制)是不可区分的,这就阻碍了端到端的训练。而 DETR 可以通过简单的架构实现端到端的训练,简化了物体检测过程。
二分图匹配损失(Bipartite Matching Loss): DETR 引入了一种新的损失函数,称为二分图匹配损失。该函数使用一对一匹配过程将预测对象与地面实况对象相匹配,最大限度地降低了反映分类误差和边界框损失的成本**。**
基于集合的预测(Set-Based Prediction): 与其他预测固定数量实例的方法不同,DETR 将物体检测视为一个集合预测问题。这意味着,无论场景中的物体数量有多少,它都会输出一个固定大小的预测集和相应的置信度分数。
Transformer架构(Transformer Architecture): DETR 采用Transformer编码器-解码器架构。编码器处理从应用于输入图像的 CNN 主干网中获得的特征向量列表,而解码器则利用这些信息生成一组预测结果。
性能: 与其他一些最先进的模型相比,DETR 在 COCO 等基准测试中的性能并不出众,但却表现出了很强的竞争力。它在长尾物体检测方面表现尤为突出,因为在长尾物体检测中,某些类别的物体很少出现。
无需锚点框(No Need for Anchor Boxes): 传统的检测器需要预定义的锚点框或感受野来提出物体位置。DETR 不需要这些,从而降低了检测过程的复杂性。
结合分割(Incorporating Segmentation): DETR 框架可通过在解码器输出的顶部添加一个小型卷积头来执行全视角分割,从而展示了这种方法的灵活性。
分割应用
上面提到的医学图像相关的建议观看MICCAI会议的papers。