Vision Transformer论文精读笔记 AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

计算机视觉中,如何理解图像和视频各自的 long-range dependencies?

在计算机视觉领域,理解图像和视频的"long-range dependencies"(长距离依赖性)是非常重要的。这里的“长距离”指的是图像内部或视频帧间的远距离像素或特征之间的关系。这些依赖性对于理解整体场景和上下文,以及进行准确的图像分析和视频理解至关重要。以下是对图像和视频中长距离依赖性的理解和说明:

图像中的长距离依赖性

  • 定义与重要性:在图像中,长距离依赖性涉及图像不同区域之间的关系,这些区域在空间上可能相隔甚远。例如,图像的一个角落中的对象可能与另一个角落中的背景或其他对象有关联,这种关系对于理解场景的完整性和上下文非常重要。

  • 应用实例:在图像分割、目标检测和场景分类等任务中,捕捉这种长距离的像素或特征间关系能够帮助模型更准确地理解图像内容。例如,通过理解图像中所有相关对象和背景的关系,模型可以更准确地识别和分割出图像中的主要对象。

  • 技术与方法:为了有效捕捉长距离依赖性,研究者们开发了多种技术,如注意力机制(Attention Mechanisms)、图卷积网络(Graph Convolutional Networks, GCNs)和Transformer模型。这些技术能够帮助模型在处理每个像素或特征时,考虑到与它距离较远的其他像素或特征的信息。

视频中的长距离依赖性

  • 定义与重要性:视频中的长距离依赖性不仅包括帧内像素或特征之间的空间关系,还包括跨帧之间的时间关系。这意味着,视频理解需要捕捉到连续帧中物体的运动和变化,以及在较长时间段内事件的发展。

  • 应用实例:在行为识别、视频分割和时间事件理解等任务中,理解视频帧之间的长距离依赖性是关键。例如,一个动作可能会跨越多个视频帧进行,模型需要识别并理解这一系列动作的整体含义。

  • 技术与方法:处理视频长距离依赖性的技术包括循环神经网络(RNNs)、长短期记忆网络(LSTMs)、3D 卷积神经网络(3D CNNs)和最近流行的视频Transformer。这些方法能够处理时间上的依赖性,通过分析连续帧间的动态变化来理解视频内容。

综上所述,无论是在图像还是视频中,理解和处理长距离依赖性都是计算机视觉中一个核心的挑战。随着技术的发展,如Transformer模型等更高级的方法被提出来有效地解决这一问题,不断推动这一领域的发展。

摘要

核心观点:
在视觉方面,注意力机制对卷积神经网络 (CNN) 的依赖是不必要的,直接应用于图像 patch 序列的纯 Transformer 可以很好地完成图像分类任务。

当对大量数据进行预训练并传输到多个中型或小型图像识别基准(ImageNet, CIFAR-100, VTAB等)时,Vision Transformer (ViT)与最先进的卷积网络相比获得了出色的结果,同时需要更少的计算资源进行训练

1.引言

由于Transformers的计算效率和可扩展性,它可以训练前所未有的模型,具有超过100B个参数。随着模型和数据集的增长,其仍然没有出现性能饱和的迹象。

然而,在计算机视觉中,卷积架构仍然占主导地位。受 NLP 成功的启发,许多研究者尝试将类似 cnn 的架构与自注意力机制相结合,有些完全取代了卷积。后一种模型虽然在理论上是有效的,但由于使用了专门的注意力模式,还没有在现代硬件加速器上有效地扩展。因此,在大规模图像识别中,经典的类 resnet 架构仍然是最先进的。

Inspired by the Transformer scaling successes in NLP, we experiment with applying a standard Transformer directly to images, with the fewest possible modifications.

这段话中提到的 “Transformer scaling successes in NLP” 所指的 “scaling”
是指在自然语言处理(NLP)领域,通过增加Transformer模型的大小(比如层数、参数量、训练数据的规模等)来提高模型性能的做法。这种方法已经被证明在NLP任务中非常成功,能够让模型更好地处理和理解复杂的语言特征,从而在各种NLP任务上取得了前所未有的成绩。

作者受到了 NLP 领域中 Transformer 模型规模扩大带来成功经验的启发,尝试将标准的 Transformer 模型直接应用于图像识别任务,且尽可能少地对模型进行修改。为此,他们将图像分割成多个小块(patches),然后将这些小块的线性嵌入(Embeddings)序列作为输入提供给 Transformer 模型。在这种方法中,图像的小块被视作与 NLP 应用中的单词(tokens)相同的处理单位。然后,在有监督的方式下对模型进行图像分类任务的训练。

在不同规模的数据集上训练Vision Transformer(ViT)和传统的CNN模型(如ResNet)时性能表现的差异,原因和结果。

  1. 小到中等规模数据集训练的性能:首先指出,当在中等规模的数据集(如ImageNet)上训练且没有强正则化手段时,Transformer模型的准确率通常会比同等规模的CNN模型(如ResNet)低几个百分点。这是因为Transformer模型缺乏CNN固有的一些归纳偏置(inductive biases),比如平移等变性(translation equivariance)和局部性(locality)。归纳偏置帮助CNN在数据量不足时仍能良好地泛化

  2. 大规模数据集训练的性能变化:然而,当这些模型在更大的数据集(14M至300M图像)上训练时,情况发生了变化。在大规模数据集上的训练超越了CNN的归纳偏置优势。作者发现,当Vision Transformer(ViT)在足够大的数据集上预训练并转移到数据量更少的任务时,能够达到非常好的结果,甚至在多个图像识别基准测试中达到或超越最先进水平。具体来说,最好的模型在ImageNet上的准确率达到了88.55%,在ImageNet-ReaL上达到了90.72%,在CIFAR-100上达到了94.55%,在VTAB(包含19个任务的测试套件)上达到了77.63%。

强调了在大规模数据集上训练可以克服Transformer缺乏CNN固有归纳偏置的劣势,因为大量的数据能够提供更多的信息,帮助模型学习到更复杂、更广泛的特征,从而在各种图像识别任务上实现更好的性能。这也表明了大规模数据训练对于实现高性能的图像识别模型的重要性。

2.相关工作

在图像处理中应用自注意力机制(self-attention)时面临的挑战,以及为了解决这些挑战所做的一些尝试

  1. 自注意力在图像上的直接应用的问题:自注意力机制要求每个元素(在图像处理的上下文中即为每个像素)都要与其他所有元素进行比较和计算关系权重。这种操作在像素数量很大时会导致计算成本呈二次方增长,这对于现实中的图像大小来说是不可扩展的。

  2. 局部自注意力的应用:为了解决这个问题,一种方法是将自注意力机制仅应用在每个查询像素的局部邻域内,而不是全局应用。这种局部多头点积自注意力块可以完全替代传统的卷积操作。这种方法降低了计算成本,因为每个像素只关注其附近的像素而不是整个图像。

  3. 稀疏自注意力的使用:另一种方法是使用稀疏自注意力,它通过对全局自注意力进行可扩展的近似来减少计算量,使其可以应用于图像。这包括将注意力应用于不同大小的块,或者在极端情况下,仅沿着单个轴应用注意力。

  4. 挑战:尽管这些专门的注意力架构在计算机视觉任务上展现了有希望的结果,但它们需要复杂的工程技术才能在硬件加速器上有效实现。

这些方法都旨在减少自注意力机制在处理大尺寸图像时的计算成本,从而使得基于Transformer的模型在图像识别等计算机视觉任务中更加实用和高效。

与Cordonnier等人2020年工作的比较

  • Cordonnier等人的模型通过从输入图像中提取2×2大小的块(patches),然后在这些块上应用全自注意力机制。这种方法与视觉Transformer(ViT)模型非常相似。
  • 然而,这篇论文进一步展示了通过大规模预训练,使得标准的Transformer模型能够与最新的卷积神经网络(CNN)竞争,甚至超越它们。这表明了大规模预训练对于提升Transformer模型在图像识别任务上性能的重要性。
  • 此外,Cordonnier等人使用的小块尺寸(2×2像素)限制了模型只能应用于低分辨率的图像,而这篇论文中的方法也适用于中等分辨率的图像。

自注意力与CNN的结合趋势

  • 论文还提到了自注意力机制与CNN结合的研究趋势。这包括利用自注意力增强图像分类的特征图,或者使用自注意力进一步处理CNN输出,以用于对象检测、视频处理、图像分类、无监督对象发现,或者融合文本和视觉的任务。
  • 这些研究表明,自注意力机制被认为是增强CNN性能的有力工具,可以使模型更好地捕捉全局依赖关系和复杂的交互效应。

总的来说,强调了ViT模型通过大规模预训练实现显著性能提升的贡献,并概述了自注意力机制与传统CNN结合的多样化研究方向,显示出在计算机视觉领域内,自注意力机制的广泛应用潜力和重要性。

3.方法

在模型设计中,作者尽可能地遵循原始 Transformer。这种故意简单设置的优点是可扩展的 NLP Transformer 架构及其高效的实现几乎可以开箱即用。

3.1 ViT

视觉Transformer(Vision Transformer, ViT)模型如何处理二维图像数据

  1. 概述

    • 标准的Transformer模型接收的是一维的token嵌入序列。为了处理二维图像,需要对图像数据进行重新排列。
  2. 二维图像处理

    • 将图像 x ∈ R H × W × C \mathbf{x} \in \mathbb{R}^{H \times W \times C} xRH×W×C 重塑成一个扁平化的二维块(patches)序列 x p ∈ R N × ( P 2 ⋅ C ) \mathbf{x}_p \in \mathbb{R}^{N \times (P^2 \cdot C)} xpRN×(P2C)

    • 这里的 R N × ( P 2 ⋅ C ) \mathbb{R}^{N \times (P^2 \cdot C)} RN×(P2C) 表示这个序列是一个实数集合,其中 N N N 是图像块的数量, P × P P \times P P×P 是每个图像块的分辨率, P 2 ⋅ C P^2 \cdot C P2C 表示每个扁平化块的元素数量。

  3. 图像块数量

    • 图像块的总数 N N N 由原始图像的分辨率除以单个块的分辨率的平方得出,即 N = H W / P 2 N = HW / P^2 N=HW/P2
    • N N N 同时作为Transformer的有效输入序列长度。
  4. 嵌入和维度映射

    • Transformer在所有层中使用恒定的潜在向量大小 D D D。因此,需要将每个扁平化的图像块映射到 D D D 维空间中,这是通过一个可训练的线性投影实现的。
    • 投影输出被称为“patch嵌入”。

这段话的关键点是将图像从其原始的二维空间格式转换为一系列可以被Transformer处理的一维序列,每个序列元素代表图像的一个部分(即图像块)。这是将Transformer从处理文本(通常是一维序列)扩展到处理图像的关键步骤。

ViT如何借鉴自BERT架构的“[class]”标记来实现图像的分类表示

  1. [class]标记

    • 就像BERT模型中用于序列分类任务的“[class]”标记一样,ViT在每个图像的嵌入序列前添加了一个可学习的嵌入标记( z 0 0 = x c l a s s z_0^0 = x_{class} z00=xclass),称为类别嵌入。
    • 这个类别嵌入随着模型的训练而更新,其在Transformer编码器的最后输出( z L 0 z_L^0 zL0)用作整个图像的表示( y y y)。
  2. 图像表示

    • 在Transformer编码器处理完所有的嵌入后,类别嵌入的最终状态( z L 0 z_L^0 zL0)被用作图像的表示( y y y),它汇总了整个图像的信息。
  3. 分类头

    • 在预训练和微调期间,分类头(classification head)被连接到类别嵌入上。
    • 预训练时,这个分类头是由一个包含一个隐藏层的多层感知机(MLP)实现的,用于从类别嵌入中提取用于分类任务的特征。
    • 在微调时,分类头简化为单个线性层,这个层将根据特定任务调整类别嵌入以进行分类。

这种设计使得ViT能够在预训练期间学习通用的图像特征,并在微调期间专门针对特定的分类任务调整。类别嵌入作为图像的全局表示,使得ViT能够用类似于在NLP任务中BERT模型的方式来处理图像数据。

ViT 如何将位置信息整合到模型中,以及它的编码器如何构建

  1. 位置嵌入(Position Embeddings)

    • 位置嵌入被添加到每个图像块的嵌入(patch embeddings)中,以保留图像内不同部分的位置信息。
    • 作者使用了标准的可学习的一维位置嵌入。他们在实验中发现,使用更高级的、能够识别二维结构的位置嵌入并没有带来显著的性能提升。
    • 加入位置信息后的嵌入向量序列随后被用作Transformer编码器的输入。
  2. Transformer编码器

    • Transformer编码器是由交替的多头自注意力(Multiheaded Self-Attention, MSA)和多层感知机(MLP)块组成。
      • MSA允许模型内的不同位置的嵌入向量相互“注意”彼此,使模型能够捕获全局依赖关系。
      • MLP块通常包含两个线性层和一个GELU非线性激活函数,用于提炼特征并添加更多的抽象层次。
    • 在每个这样的块之前应用层归一化(LayerNorm, LN),这有助于稳定训练过程并提高模型效果。
    • 每个块后面都有残差连接,允许模型的每一层直接访问前一层的输出,这有助于解决深度神经网络中的梯度消失问题。

综上所述,说明了在处理图像时,ViT如何通过加入位置嵌入保持位置信息,并介绍了编码器的结构和内部工作机制。这些设计共同使得ViT能够有效处理图像数据,并学习到丰富的视觉特征。

模型结构概览

在这里插入图片描述
这张图是视觉Transformer(Vision Transformer, 简称ViT)的模型概览,展示了如何将一个标准的Transformer结构应用于图像识别任务。可以从左到右来解释整个过程:

  1. 图像分块:输入图像首先被划分为固定大小的小块(patches),就像图中所展示的那样。

  2. 线性投影:每个小块被展平成一维向量,然后通过一个线性层(也就是一个全连接层)投影到一个高维空间,以生成所谓的“嵌入(embedded)”小块。

  3. 位置嵌入:由于Transformer结构本身并不具备处理序列中元素位置信息的能力,每个嵌入小块都会加上位置嵌入,以包含小块在原始图像中的位置信息。在图中,位置嵌入被直接加到了线性投影的嵌入小块上。

  4. 类别标记(Class Token):除了嵌入小块,还会加入一个额外的可学习嵌入,称为“类别标记(class token)”,通常表示为[CLS]。在NLP任务中,这个标记的输出通常用于分类任务。在图像处理中,这个类别标记的目的也是类似的。

  5. Transformer编码器:接下来,嵌入小块和类别标记的序列被输入到Transformer编码器中。编码器由多个相同的层组成,每层包含两个主要部分:多头自注意力(Multi-Head Attention)模块和多层感知机(MLP)模块。每个模块的前面都有一个归一化层(Norm)。

    • 多头自注意力:允许模型在序列的不同位置间捕捉复杂的依赖关系。
    • 归一化层:帮助稳定训练过程,通常在Transformer中使用层归一化(Layer Normalization)。
    • 多层感知机(MLP):每个自注意力模块之后,还有一个MLP,它包含一个非线性激活函数,用于提取特征并帮助模型学习复杂映射。

    在每个子模块后面,还有一个残差连接,即输入会被添加到每个子模块的输出上(图中的“+”号)。这有助于避免深度模型训练过程中的梯度消失问题。

  6. MLP头:最后,Transformer编码器的输出(特别是类别标记的输出)被送入MLP头,这通常是一个或多个全连接层,用于最终的分类任务。

这个过程的最终目标是将一张图像转化为一系列嵌入向量,然后利用Transformer编码器来捕获图像块之间的关系,最终得到图像的分类结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值