热门的模型跨界,Transformer、GPT做CV任务一文大盘点
共 10186字,需浏览 21分钟
·
2020-12-07 18:26
极市导读
本文总结了用来进行计算机视觉任务的自然语言处理任务的模型的研究,共有六篇在图像识别与视觉识别方面的论文,作者仔细解读了相关模型的跨界、破界的表现。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
可能大家心里都有一种错误认知,做自然语言处理任务的模型不能够用来进行计算机视觉任务。其实不然,现阶段已出现好多研究,它们通过算法的改进,将在 NLP 领域表现良好的模型,如 Transformer、GPT 等进行改进并应用于视觉任务,不仅实现了模型跨界,而且取得了不错的性能。
模型跨界效果如何呢?
人工智能的快速发展已经淋漓尽致地体现在我们的日常生活中,从人脸识别、语音识别到机器翻译等等,无不展示着 AI 带来的便利。已经落地的产品层出不穷,其后的算法模型你又了解多少呢?有些模型不仅在自己的领域表现出色,更能跨界出圈。
近几年,NLP 领域的算法势如破竹,不断取得新突破,CV 领域同样不断取得创新。新工具、新算法、新算力等不断迭代更新,在各自领域大放异彩。如果说将 NLP 领域的模型应用到 CV 领域,或反之,那效果该如何呢?模型跨界是否可行?
答案是肯定的。下面我们来盘点一下模型的跨界、破界表现如何?本文介绍的内容包括:
《End-to-End Object Detection with Transformers》:Facebook 将 Transformer 应用于目标检测任务;
《Generative Pretraining from Pixels》:OpenAI 用 GPT-2 做图像分类的尝试;
《LAMBDANETWORKS: MODELING LONG-RANGE INTERACTIONS WITHOUT ATTENTION》:匿名论文,提出 LambdaNetworks,无需注意力机制进行视觉任务,由其衍生出的 LambdaResNets,极大地改善了图像分类模型的速度与准确性权衡;
《AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》:匿名论文,提出 Vision Transformer,将 Transformer 应用于图像识别。
《Learning Texture Transformer Network for Image Super-Resolution》:来自上海交大的微软研究院实习生发表的超分辨率领域的图像,使用 Transformer 来解决超分辨率的问题。
《Feature Pyramid Transformer》:南理、南洋理工等联合发表的论文,提出特征金字塔 Transformer(FPT),用于视觉识别任务。
论文一:目标检测新范式,Detection Transformer(DETR)进行目标检测
由于 Transformer 广泛应用于序列数据的处理任务,尤其是在语言建模、机器翻译等任务中表现出良好的性能,那么在 NLP 领域表现良好的模型是否可以用到视觉领域?来自 Facebook AI 的研究者实现了这一功能。
该研究把 Transformer 用到了目标检测任务中,还取得了媲美 Faster R-CNN 的效果。该研究推出的 Transformer 视觉版本——Detection Transformer(以下简称 DETR),可用于目标检测和全景分割。与之前的目标检测系统相比,DETR 的架构有了根本上的改变,也是第一个将 Transformer 成功整合为检测 pipeline 中心构建块的目标检测框架。基于 Transformer 的端到端目标检测,没有 NMS 后处理步骤、真正的没有 anchor,且对标超越 Faster RCNN。
论文链接:https://arxiv.org/pdf/2005.12872v1.pdf
项目地址:https://github.com/facebookresearch/detr
算法实现:处理目标检测任务的全新架构
DETR 通过将常见的 CNN 与 Transformer 架构相结合,直接(并行)预测最终的检测结果。在训练阶段,二分匹配将唯一的预测分配给 GT 框。不匹配的预测应产生无对象(∅)类预测。
DETR 的工作流程可以归为以下步骤:Backbone -> Transformer -> detect header。
将 DETR 的结构具体化,如下图所示:
DETR 使用常规的 CNN 主干来学习输入图像的 2D 表示。模型将其展平并在将其传递到 transformer 编码器之前进行位置编码补充。然后,transformer 解码器将少量固定数量的学得位置嵌入作为输入,称为对象查询,并另外参与编码器的输出。将解码器的每个输出嵌入传递到预测检测(类和边界框)或无对象类的共享前馈网络(FFN)。
更为具体的 DETR 架构如下:
上图给出了 DETR 中使用 transformer 的详细说明,并在每个注意力层传递了位置编码。来自 CNN 主干的图像特征通过了 transformer 编码器,并将空间位置编码与添加到查询和键处的空间编码一起传递。然后,解码器接收查询(最初设置为零),输出位置编码(对象查询)和编码器内存,并通过多个多头自注意力和解码器 - 编码器注意力来生成最终的一组预测类标签和边界框。此外可以跳过第一解码器层中的第一自注意力层。
论文二:iGPT 做图像分类,实现 SOTA 性能
在一篇被 ICML 2020 接收的论文中,OpenAI 推出了用于图像分类的模型 iGPT,在图像上训练 GPT-2(这些图像被分解为长像素序列),结果发现这种模型能够理解物体外观和类别等 2D 图像特征。该模型生成的特征在多个分类数据集上( CIFAR-10、CIFAR-100、STL-10 和 ImageNet )实现了 SOTA 性能,并且获得了良好的图像补全效果。
论文链接:https://cdn.openai.com/papers/Generative_Pretraining_from_Pixels_V2.pdf
项目地址:https://github.com/openai/image-gpt
算法实现
OpenAI 研究者提出的方法包含两个阶段:预训练和微调。
在预训练阶段中,研究者探索自回归目标和 BERT 目标,并使用序列 Transformer 架构来预测像素,而非语言 token。
如下图所示,该方法首先对原始图像进行预处理,将其调整为低分辨率和 1D 序列;然后在自回归下一像素预测或掩码像素预测这两个预训练目标中选择一个;最后,利用 linear probe 或微调,对这些目标学得的表示进行评估。
方法 1:linear probe,即使用训练好的模型从下游数据集图像中提取特征,然后将 logistic 回归与标签进行拟合;
方法 2:微调,基于下游数据集微调整个模型。
该研究在 ImageNet 上训练了三个 transformer 模型:iGPT-S、iGPT-M 和 iGPT-L,它们分别包含 76M、455M 和 14 亿参数。此外,研究者还基于 ImageNet 和网络图片的混合数据训练了 iGPT-XL,参数量达 68 亿。
由于使用密集注意力建模长序列的计算成本较高,因此该研究选择使用较低的分辨率:32x32、48x48 和 64x64。
分辨率继续降低可以进一步减少计算成本,但是之前研究表明在这种情况下,人类的图像分类能力会急剧下降。因此,该研究受早期颜色显示调色板(color display palettes)的启发,创建了 9-bit 颜色调色板来表示像素。使用该调色板可以得到长度仅为标准 (R, G, B) 1/3 的输入序列,同时还能有效编码颜色。
iGPT 的局限性
尽管该研究表明 iGPT 能够学习强大的图像特征,但是该方法仍存在很大的局限性。
由于该研究采用的是用于语言任务的 GPT-2 的通用序列 Transformer,所以需要大量计算:iGPT-L 在 V100 上大约需要训练 2500 天,而性能类似的 MoCo 模型大约只需要训练 70 天。
此外,该研究用 Transformer 对低分辨率输入建模,而大多数自监督结果采用的是基于卷积的编码器,这些编码器可以轻松地处理高分辨率输入。可能需要一种新的架构,例如与域无关的多尺度 Transformer,以实现进一步扩展。
考虑到这些局限性,该研究主要是概念证明,证明了基于 Transformer 的大型语言模型在一些新领域中可以学习优秀的无监督表征,而无需硬编码领域的知识。但是,训练这些模型需要大量的资源成本,而基于卷积神经网络的方法又具有更高的准确率,这让这些表征在视觉领域中无法实际应用。
最后,生成模型可能会呈现出偏差,这些偏差是模型训练所用的数据造成的。这些偏差中有许多都是有用的,例如假设棕色和绿色像素的部分代表叶子上覆盖的分支,然后用这种偏差继续生成图像。
论文三:LambdaNetworks:无需注意力机制,应用于视觉任务
Transformer 功能强大,但由于其注意力机制对内存的需求是输入图像的二次方,在图像识别上会存在计算效率过低的挑战。不仅如此,图像的 head 个数也会带来很大的显存消耗。针对这一问题,出现了一种新的网络 LambdaNetworks,无需建立昂贵的注意力即可捕捉长距离交互,为捕获模型输入和上下文信息的结构化集合之间的长期交互提供了一个通用框架。由其衍生出的 LambdaResNets,极大地改善了图像分类模型的速度与准确性权衡。
LambdaNetworks 通过将可用上下文转换为线性函数(lambda 函数),并将这些线性函数分别应用于每个输入来捕获此类交互。用 Lambda 层来替代注意力机制。注意力机制在输入和上下文元素之间定义了一个相似核,而 Lambda 层则是将上下文信息总结为一个固定大小的线性函数,从而绕过了需要大量记忆的注意映射。
在 ImageNet 分类、COCO 目标检测和实例分割三方面的对照实验表明,LambdaNetwork 显著优于基于卷积和注意力的同类方法,并且计算效率更高、运行速度更快。
最后,提出了 LambdaResNets,它显著改善了图像分类模型的速度——准确性权衡。LambdaResNets 在实现 SOTA ImageNet 准确性的同时,运行速度是 EfficientNets 的 4.5 倍左右。
论文链接:https://openreview.net/pdf?id=xTJEN-ggl1b
GitHub 链接:https://github.com/lucidrains/lambda-networks
算法实现
Lambda 层与注意力机制对比如下图所示:
研究者证明了 lambda 层的通用性,展示了它们的实现可以被用来捕获全局、局部或掩模上下文中基于内容和位置的交互。利用 lambda 生成的神经网络 LambdaNetworks 计算效率很高,能够以很小的内存成本建模长程依赖,因而可用于高分辨率图像等大型结构化输入。由此产生的神经网络体系架构 LambdaNetworks 具有高效的计算能力,并且可以通过直接调用现代神经网络库中可用的操作来轻松实现。
下表 1 给出了 lambda 层的超参数、参数等:
LAMBDA 层将上下文转换为线性函数需要以下四步:
1. 生成上下文 lambda 函数:Lambda Layer 将上下文转换为线性函数,生成 Contextual Lambda Function。lambda 层首先通过线性映射上下文来计算键和值,并且通过 softmax 操作跨上下文位置对键进行标准化,进而得到生成标准化的键 K^-。它的实现可以被看作是一种函数传递形式,每个上下文元素贡献一个内容函数 和一个位置函数。函数是通过加和 context 得到的:
式中 content lambda 为λ^c ,position lambda 为λ_n^p ;λ^c 是对上下文元素的排列不变性,在所有查询位置 n 之间共享,并编码如何仅基于上下文内容对 q_n 进行转换;对比之下,λ_n^p 编码如何基于内容 c_m 和位置 (n,m) 转换查询内容 q_n ,从而支持对此类图像进行结构化的建模输入。
2. 将 lambda 应用于查询,将输入 x_n 转换为查询 ,得到 lambda 层的输出为:
3. lambda 解释,λ_n∈R^|k|x|v | 矩阵的列可以看作是 | k|x|v | 维的上下文特征的固定大小集合。这些上下文特征是根据上下文的内容和结构汇总得出的。利用 lambda 线性函数动态分配这些上下文特征,以产生 输出。这个过程用来捕捉密集的内容和基于位置的远距离互动,而不产生 Attention Map。
4. 归一化,该研究的实验表明,在计算查询和值之后应用批归一化是很有用的。
论文四:Vision Transformer(ViT),将 Transformer 应用于图像识别
在计算机视觉中,卷积仍然占主导地位。受到 NLP 领域中 Transformer 缩放成功的启发,该研究尝试将标准 Transformer 直接应用于图像,并尽可能减少修改。为此,将图像分割成多个图像块(patch),并将这些图像块的线性嵌入序列作为 Transformer 的输入。然后用 NLP 领域中处理 token 的方式处理图像块,并以监督的方式训练图像分类模型。
研究表明:处理图像时,对 CNN 的依赖不是必需的,当直接应用于图像块序列时,transformer 也能很好地执行图像分类任务。该研究基于大量数据进行模型预训练,并迁移至多个图像识别基准数据集(ImageNet、CIFAR-100、VTAB 等),结果表明 Vision Transformer(ViT)模型可以获得与当前最优卷积网络相媲美的结果,而其训练所需的计算资源大大减少。
该研究提出的 Vision Transformer 在 JFT-300M 数据集上进行预训练,在多个图像识别基准上接近或超过了 SOTA 水平,在 ImageNet 上达到了 88.36% 的准确率,在 ImageNet ReaL 上达到了 90.77% 的准确率,在 CIFAR-100 上达到了 94.55% 的准确率,在 VTAB 基准 19 个任务中达到了 77.16% 的准确率。
论文链接:https://openreview.net/pdf?id=YicbFdNTTy
算法实现
Vision Transformer 模型的设计尽可能的遵循 Transformer 原始设计。如下为模型架构图:
标准 Transformer 接收 1D 序列的 token 嵌入为输入。为了处理 2D 图像,研究者将图像 x ∈ R^H×W×C 变形为一系列的扁平化 2D patch x_p ∈ R^N×(P^2 ·C),其中 (H, W) 表示原始图像的分辨率,(P, P) 表示每个图像 patch 的分辨率。然后,N = HW/P^2 成为 Vision Transformer 的有效序列长度。
Vision Transformer 在所有层使用相同的宽度,所以一个可训练的线性投影将每个向量化 patch 映射到模型维度 D 上(公式 1),相应的输出被称为 patch 嵌入。
与 BERT 的 [class] token 类似,研究者在一系列嵌入 patch (z_0^0 = x_class)之前预先添加了一个可学习嵌入,它在 Transformer 编码器(z_0^L )输出中的状态可以作为图像表示 y(公式 4)。在预训练和微调阶段,分类头(head)依附于 z_L^0。
位置嵌入被添加到 patch 嵌入中以保留位置信息。研究者尝试了位置嵌入的不同 2D 感知变体,但与标准 1D 位置嵌入相比并没有显著的增益。所以,编码器以联合嵌入为输入。
Transformer 编码器由多个交互层的多头自注意力(MSA)和 MLP 块组成(公式 2、3)。每个块之前应用 Layernorm(LN),而残差连接在每个块之后应用。MLP 包含两个呈现 GELU 非线性的层。
作为将图像分割成 patch 的一种替代方案,输出序列可以通过 ResNet 的中间特征图来形成。在这个混合模型中,patch 嵌入投影(公式 1)被早期阶段的 ResNet 取代。ResNet 的其中一个中间 2D 特征图被扁平化处理成一个序列,映射到 Transformer 维度,然后馈入并作为 Transformer 的输入序列。最后,如上文所述,将分类输入嵌入和位置嵌入添加到 Transformer 输入中。
Vision Transformer(ViT)模型局限性
在中等规模的数据集(如 ImageNet)上训练时,模型产生的结果并不理想,准确率比同等大小的 ResNet 低几个百分点。但这个结果是可以预料的:Transformer 缺少一些 CNN 固有的归纳偏置,例如平移同变性和局部性,因此在数据量不足的情况下进行训练后,Transformer 不能很好地泛化。
论文五:纹理 Transformer(TTSR),用 Transformer 来实现端到端的超分辨率任务
该研究为图像超分辨率(SR)领域,旨在从低分辨率(LR)图像中恢复真实的纹理。具体而言,该研究提出了一种新颖的用于图像超分辨率的纹理 Transformer 网络(TTSR:Texture Transformer Network for ImageSuper-Resolution ),其中低分辨率 LR 和参考 Ref 图像分别表示为 Transformer 中的查询和关键字。
TTSR 有四个模块组成:DNN 的可学习纹理提取器;相关性嵌入模块;用于纹理传递的硬注意力模块;用于纹理合成的软注意力模块。所提出的纹理 Transformer 以跨尺度的方式进一步堆叠,从不同级别(例如从 1x 倍到 4x 倍放大率)恢复纹理。大量的实验表明,在定量和定性评估方面,TTSR 都较最新技术有了显著改善。
论文链接:
https://openaccess.thecvf.com/content_CVPR_2020/papers/Yang_Learning_Texture_Transformer_Network_for_Image_Super-Resolution_CVPR_2020_paper.pdf
算法介绍
纹理 Transformer 架构如下:LR,LR↑和 Ref 分别代表输入图像,4 倍 bicubic-upsampled 的输入图像和参考图像。依次对 Ref 应用具有相同 4 倍因子的 bicubic 下采样和上采样,以获得与 LR↑domain-consistent 的 Ref↓↑。纹理 Transformer 将 Ref、Ref↓↑、LR↑和主干产生的 LR 特征作为输入,并输出同样大小的特征图,该特征图将进一步用于生成 HR 预测。
纹理 Transformer 包含四个部分:可学习的纹理提取器(LTE)、相关性嵌入模块(RE)、用于功能转移的硬注意模块(HA)和用于特征合成的软注意模块(SA)。
跨尺度特征集成:跨尺度特征集成模块(CSFI)以跨尺度方式堆叠多个纹理 Transformer 的体系结构。RB 表示一组残余块。
堆叠的纹理 Transformer 输出三个分辨率级别(1×,2× 和 4×)的合成特征,以便将不同尺度的纹理特征融合到 LR 图像中。而跨尺度特征集成模块(CSFI),以在不同尺度的特征之间交换信息。每次将 LR 功能上采样到下一个比例时,都会应用 CSFI 模块。CSFI 模块通过上 / 下采样来接收来自其他级别的交换特征,随后是通道尺寸中的级联操作。然后,卷积层会将要素映射到原始数量的通道中。
在这样的设计中,从堆叠的纹理 Transformer 传递来的纹理特征可以跨每个比例进行交换,从而获得更强大的特征表示。
论文六:特征金字塔 Transformer(FPT),用于视觉识别任务
将 Transformer 应用于对特征金字塔 FPN 的改进上,本文提出了一种在空间和尺度上完全活跃的特征交互,称为特征金字塔 Transformer(FPT)。它通过使用三个专门设计的 Transformer:Self-Transformer(ST)、Grounding Transformer(GT)和 Rendering Transformer(RT),以自上而下和自下而上的交互方式,将任何一个特征金字塔变换成另一个同样大小但具有更丰富上下文的特征金字塔。
FPT 作为一个通用的视觉框架,具有合理的计算开销。最后,本文在实例级(即目标检测和实例分割)和像素级分割任务中进行了实验,使用不同的主干和头部网络,并观察到比所有基准方法和最先进的方法一致的改进。
大量的实验表明,FPT 可以极大地改善传统的检测 / 分割网络:1)在 MS-COCO test-dev 数据集上,用于框检测的百分比增益为 8.5%,用于遮罩实例的 mask AP 值增益为 6.0%;2)对于语义分割,分别在 Cityscapes 和 PASCAL VOC 2012 测试集上的增益分别为 1.6%和 1.2%mIoU;在 ADE20K 和 LIP 验证集上的增益分别为 1.7%和 2.0%mIoU。
论文链接:https://arxiv.org/pdf/2007.09451.pdf
项目地址:https://github.com/ZHANGDONG-NJUST/FPT
算法介绍
FPT 的输入是一个特征金字塔,而输出是一个变换的金字塔,其中每个 level 都是一个更丰富的特征图,它编码了跨空间和尺度的非局部 non-local 交互作用。然后,可以将特征金字塔附加到任何特定任务的头部网络。FPT 中特征之间的交互采用了 transformer-style。具有整洁的查询 query、键 key 和值 value 操作,在选择远程信息进行交互时非常有效,以适当的规模进行非局部 non-local 交互。另外,就如其他 transformer 模型一样,使用 TPU 减轻计算开销。
上图为 FPT 网络的总体架构。不同的纹理图案表示不同的特征 transformer,不同的颜色表示不同比例的特征图。Conv 表示输出尺寸为 256 的 3×3 卷积。每个层次的转换特征图(红色、蓝色和绿色)被重新排列到相应的地图大小,然后与原始 map 连接,最后再输入到卷积层,将它们调整到原始厚度。
参考链接:
推荐阅读