将Transformer应用到CV任务中现在越来越多了,这里整理了一些相关的进展给大家。这里CVer先推荐大家看一下最近的两篇视觉Transformer综述:
导读
将Transformer应用到CV任务中现在越来越多了,这里整理了一些相关的进展给大家。
![](https://img.jasve.com/2024-11/adc6ecbf4c46dc1956b982225aa1c63a.webp)
Transformer结构已经在许多自然语言处理任务中取得了最先进的成果。Transformer 模型的一个主要的突破可能是今年年中发布的GPT-3,被授予NeurIPS2020「最佳论文「。
![](https://img.jasve.com/2024-11/90e2e8113a21c6bf4047112a55f35830.webp)
在计算机视觉领域,CNN自2012年以来已经成为视觉任务的主导模型。随着出现了越来越高效的结构,计算机视觉和自然语言处理越来越收敛到一起,使用Transformer来完成视觉任务成为了一个新的研究方向,以降低结构的复杂性,探索可扩展性和训练效率。
以下是几个在相关工作中比较知名的项目:
结构
总的来说,在CV中采用Transformer的相关工作中主要有两种模型架构。一种是纯Transformer结构,另一种是将CNNs/主干网与Transformer相结合的混合结构。
Vision Transformer 是基于完整的自注意力的Transformer结构没有使用CNN,而 DETR 是使用混合模型结构的一个例子,它结合了卷积神经网络(CNNs)和Transformer。
一些问题
你会在ViT、DETR和Image GPT的下面的深入研究中找到答案。
Vision Transformer
Vision Transformer(ViT)将纯Transformer架构直接应用到一系列图像块上进行分类任务,可以取得优异的结果。它在许多图像分类任务上也优于最先进的卷积网络,同时所需的预训练计算资源大大减少(至少减少了4倍)。
![](https://img.jasve.com/2024-11/ee2b9c13ea2fca5716bb6174008a3af9.webp)
图像序列patches
它们是如何将图像分割成固定大小的小块,然后将这些小块的线性投影连同它们的图像位置一起输入变压器的。然后剩下的步骤就是一个干净的和标准的Transformer编码器和解码器。
在图像patch的嵌入中加入位置嵌入,通过不同的策略在全局范围内保留空间/位置信息。在本文中,他们尝试了不同的空间信息编码方法,包括无位置信息编码、1D/2D位置嵌入编码和相对位置嵌入编码。
![](https://img.jasve.com/2024-11/a06ea2915b4985bc321de64c72e95495.webp)
一个有趣的发现是,与一维位置嵌入相比,二维位置嵌入并没有带来显著的性能提升。
数据集
该模型是从多个大型数据集上删除了重复数据预训练得到的,以支持微调(较小数据集)下游任务。
模型的变体
![](https://img.jasve.com/2024-11/41e3e0a90fbb9f0ba659c7fc88d5f2f3.webp)
像其他流行的Transformer 模型(GPT、BERT、RoBERTa)一样,ViT(vision transformer)也有不同的模型尺寸(基础型、大型和巨大型)和不同数量的transformer层和heads。例如,ViT-L/16可以被解释为一个大的(24层)ViT模型,具有16×16的输入图像patch大小。
注意,输入的patch尺寸越小,计算模型就越大,这是因为输入的patch数目N = HW/P*P,其中(H,W)为原始图像的分辨率,P为patch图像的分辨率。这意味着14 x 14的patch比16 x 16的图像patch在计算上更昂贵。
Benchmark结果
![](https://img.jasve.com/2024-11/2ea4a7cfa52e2598de30f4d87b93a3e3.webp)
以上结果表明,该模型在多个流行的基准数据集上优于已有的SOTA模型。
在JFT-300M数据集上预训练的vision transformer(ViT-H/14, ViT-L/16)优于所有测试数据集上的ResNet模型(ResNet152x4,在相同的JFT-300M数据集上预训练),同时在预训练期间占用的计算资源(TPUv3 core days)大大减少。即使是在ImageNet-21K上预训练的ViT也比基线表现更好。
模型性能 vs 数据集大小
![](https://img.jasve.com/2024-11/a30517c20bd12c788ab23c8f86c14de7.webp)
上图显示了数据集大小对模型性能的影响。当预训练数据集的大小较小时,ViT的表现并不好,当训练数据充足时,它的表现优于以前的SOTA。
哪种结构更高效?
如一开始所提到的,使用transformer进行计算机视觉的架构设计也有不同,有的用Transformer完全取代CNNs (ViT),有的部分取代,有的将CNNs与transformer结合(DETR)。下面的结果显示了在相同的计算预算下各个模型结构的性能。
![](https://img.jasve.com/2024-11/250408e5752edca87605dc6f42204965.webp)
以上实验表明:
ViT (vision transformer)的重点
DETR
DETR是第一个成功地将Transformer作为pipeline中的主要构建块的 目标检测 框架。它与以前的SOTA方法(高度优化的Faster R-CNN)的性能匹配,具有更简单和更灵活的pipeline。
![](https://img.jasve.com/2024-11/4abfbc92476b48d3bc4e5b44c13f7a98.webp)
上图为DETR,一种以CNN和Transformer为主要构建块的混合pipeline。以下是流程:
- CNN被用来学习图像的二维表示并提取特征
- CNN的输出是扁平化的,并辅以位置编码,以馈入标准Transformer的编码器
- Transformer的解码器通过输出嵌入到前馈网络(FNN)来预测类别和包围框
更简单的Pipeline
![](https://img.jasve.com/2024-11/2fa782f2c2e044a0ff9ba3e0d44c673d.webp)
传统的目标检测方法,如Faster R-CNN,有多个步骤进行 锚的生成 和 NMS 。DETR放弃了这些手工设计的组件,显著地简化了物体检测pipeline。
当扩展到全景分割时,惊人的结果
在这篇论文中,他们进一步扩展了DETR的pipeline用于全景分割任务,这是一个最近流行和具有挑战性的像素级识别任务。为了简单解释全景分割的任务,它统一了2个不同的任务,一个是传统的 语义分割 (为每个像素分配类标签),另一个是 实例分割 (检测并分割每个对象的实例)。使用一个模型架构来解决两个任务(分类和分割)是非常聪明的想法。
![](https://img.jasve.com/2024-11/05ac88fad240ab722bfc3148ba5f7a1c.webp)
上图显示了全景分割的一个例子。通过DETR的统一pipeline,它超越了非常有竞争力的基线。
注意力可视化
下图显示了Transformer解码器对预测的注意力。不同物体的注意力分数用不同的颜色表示。
通过观察颜色/注意力,你会惊讶于模型的能力,通过自注意在全局范围内理解图像,解决重叠的包围框的问题。尤其是斑马腿上的橙色,尽管它们与蓝色和绿色局部重叠,但还是可以很好的分类。
![](https://img.jasve.com/2024-11/20ae0a963c34caad2e4b06a10355c59b.webp)
DETR的要点
Image GPT
Image GPT是一个在像素序列上用图像补全训练的GPT-2 transformer 模型。就像一般的预训练的语言模型,它被设计用来学习高质量的无监督图像表示。它可以在不知道输入图像二维结构的情况下自回归预测下一个像素。
来自预训练的图像GPT的特征在一些分类基准上取得了最先进的性能,并在ImageNet上接近最先进的无监督精度。
下图显示了由人工提供的半张图像作为输入生成的补全模型,随后是来自模型的创造性补全。
![](https://img.jasve.com/2024-11/2d7be6557e34706a95a0c7a8913dd5d8.webp)
Image GPT的要点:
总结
Transformer在自然语言处理中的巨大成功已经在计算机视觉领域得到了探索,并成为一个新的研究方向。
英文原文:https:// towardsdatascience.com/ transformer-in-cv-bbdb58bf335e
更多计算机视觉中的Transformer可参考视频