8

全文翻译 | 华为、北大、悉尼大学:最新视觉Transformer综述(2017-2020年)

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI5MDUyMDIxNA%3D%3D&%3Bmid=2247532999&%3Bidx=1&%3Bsn=9402feaa4b11f98cfc1cd9de61a9196a
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

↑ 点击 蓝字  关注极市平台

NbYzEfi.gif!mobile

声明: 非常抱歉,未来一周我们可能都无法为大家推出优质的原创内容。因为近期极市遭遇了恶意举报,我们目前正在申诉中。极市一直致力于为计算机视觉开发者分享优质的技术内容,并以一种开放包容的心态与大家相处。我们希望和大家一起坚决抵制这种恶意举报行为,同时也希望能与大家一起共创一个良好和谐的AI技术内容分享环境。

作者丨坐化@知乎(已授权)

来源丨https://zhuanlan.zhihu.com/p/342114940

编辑丨极市平台

极市导读

本文通过将可视化转换器模型分类到不同的任务中,并分析这些方法的优缺点,来提供对这些模型的文献综述。主要类别包括基本图像分类、高级视觉、低级视觉和视频处理。并对计算机视觉中的自我注意进行了简要回顾,最后,对视觉Transformer的进一步研究方向进行了讨论。   >> 加入极市CV技术交流群,走在计算机视觉的最前沿

论文地址:

A Survey on Visual Transformer

https://arxiv.org/abs/2012.12556

摘要

Transformer是一种主要基于自注意机制的深度神经网络,最初应用于自然语言处理领域。受Transformer强大表示能力的启发,研究人员提出将Transformer扩展到计算机视觉任务。与卷积网络和递归网络等其他网络类型相比,基于Transformer的模型在各种视觉基准上表现出竞争性甚至更好的性能。在本文中,我们通过将这些可视化转换器模型分类到不同的任务中,并分析这些方法的优缺点,来提供对这些模型的文献综述。特别是,主要类别包括基本图像分类、高级视觉、低级视觉和视频处理。计算机视觉中的自我注意也是简要回顾,因为自我注意是变压器的基本组成部分。有效的Transformer方法包括推动Transformer进入实际应用。最后,对视觉Transformer的进一步研究方向进行了讨论。

1.引言

深层神经网络已经成为现代人工智能系统的基础设施。已经提出了各种网络类型来处理不同的任务。多层感知器(MLP)或者说全连接(FC)网络是经典的神经网络,由多层和非线性激活组成[104,105]。卷积神经网络(CNNs)引入了卷积层和pooling层,用于处理图像等平移不变数据[68,65]。递归神经网络(RNNs)利用递归单元来处理序列数据或时间序列数据[106,49]。Transformer是一种新提出的神经网络,主要利用自注意力机制[5,90]提取内在特征[123]。在这些网络中,Transformer是最近发明的神经网络,显示出广泛的人工智能应用的巨大潜力。

Transformer最初应用于自然语言处理(NLP)任务,并带来了显著的改进[123,29,10]。例如,Vaswani等人[123]首先提出了仅基于机器翻译和英语解析任务的注意力机制的Transformer。Devlin等人[29]介绍了一种新的语言表示模型BERT,它通过对左右两个上下文的联合调节,从未标记的文本中预先训练一个转换器。BERT获得了当时11个自然语言处理任务的最新结果。Brown等人[10]在45TB压缩明文数据上预训练了基于GPT-3模型的具有1750亿个参数的巨大Transformer,并且在不同类型的下游自然语言任务上实现了强性能而无需微调。这些基于变压器的模型表现出很强的表现能力,并在自然语言处理领域取得了突破。

受自然语言处理中Transformer能力的启发,最近研究人员将Transformer扩展到计算机视觉任务。CNN过去是视觉应用的基本组成部分[47,103],但Transformer作为CNN替代产品正在显示其能力。Chen等[18]训练一个序列Transformer对像素进行自回归预测,并在图像分类任务上取得与神经网络有竞争力的结果。ViT是Dosovitskiy等人[31]最近提出的视觉Transformer,利用纯Transformer直接应用于图像块序列,并在多个图像识别基准数据集上获得最先进的性能。除了基本的图像分类之外,transformer还被用来解决更多的计算机视觉问题,如目标检测[14,155],语义分割,图像处理和视频理解。由于其优异的性能,越来越多的基于Transformer的模型被提出用于改进各种视觉任务。

基于Transformer的视觉模型如雨后春笋般涌现,这导致难以跟上新的进展速度。因此,对现有工作的调查可以对社区有益。在这篇文章中,我们重点提供了视觉Transformer的最新进展的综合概述,并讨论了进一步改进的潜在方向。为了更好接受和方便不同主题的研究人员,我们按照应用场景对Transformer模型进行分类,如表1所示。特别是主要科目包括基本图像分类、高级视觉、低级视觉和视频处理。高级视觉处理图像[121]中所见内容的解释和使用,例如目标检测、分割和车道检测。有许多Transformer模型解决了这些高层次的视觉任务,如DETR [14],用于目标检测的可变形DETR [155]和用于分割的Max-Deeplab[126]。低级图像处理主要涉及从图像(通常表示为图像本身)中提取描述[35],其典型应用包括超分辨率、图像去噪和风格转换。低级视觉中很少有工作[17,92]使用Transformer,需要更多的研究。除了基于图像的任务之外,视频处理是计算机视觉中的一个重要部分。由于视频的序列特性,变压器可以自然地应用于视频[154,144]。与传统的中枢神经系统或神经网络相比,Transformer在这些任务上开始显示出竞争优势。在这里,我们对这些基于Transformer的视觉模型的工作进行了调查,以跟上这一领域的进展。视觉的发展时间表如图1所示,我们相信越来越多的优秀作品将被镌刻在里程碑上。

Vvuymmj.jpg!mobile

论文的其余部分组织如下。第二节首先制定自注意力机制和标准Transformer。我们在第3节中描述了自然语言处理中的Transformer,因为研究经验可能对视觉任务有益。接下来,第四部分是论文的主要部分,总结了图像分类、高级视觉、低级视觉和视频任务的视觉Transformer模型。我们还简要回顾了自注意力注机制的CV和有效的Transformer方法,因为它们与我们的主题密切相关。最后,我们给出了结论并讨论了几个研究方向和挑战。

2.Formulation of Transformer

Transformer [123]首次应用于神经语言处理中的机器翻译任务。如图2所示,它由一个编码器模块和一个解码器模块组成,具有几个相同结构的编码器/解码器。每个编码器由自注意力层和前馈神经网络组成,而每个解码器由自关注层、编码解码器注意力层和前馈神经网络组成。在用Transformer翻译句子之前,句子中的每个单词都会被编码为维度的向量。

iMvIbiR.jpg!mobile

2.1 自注意力层

在自注意力层,首先将输入向量转换成三个不同的向量,即查询向量q、关键向量k和维数为的值向量v。

aMN73yN.jpg!mobile

从不同输入得到的向量然后被打包成三个不同的矩阵,之后,不同输入向量之间的注意力函数通过以下步骤计算(如图3左所示):

RZJNviB.jpg!mobile

这个过程可以统一为一个函数:

EfQVbe3.png!mobile

第一步计算两个不同向量之间的得分,得分是为了确定我们在当前位置对单词进行编码时对其他单词的关注程度。步骤2将分数标准化,使其具有更稳定的梯度,以便更好地训练,步骤3将分数转换为概率。最后,每个值向量乘以加总概率,具有较大概率的向量将被随后的层更多地关注。

解码器模块中的编解码注意力层与编码模块中的自注意力层几乎相同,只是键矩阵和值矩阵是从编码器模块中导出的,查询矩阵是从前一层中导出的。

注意,上述过程与每个单词的位置无关,因此自我注意层缺乏捕捉单词在句子中的位置信息的能力。为了解决这个问题,在原始输入嵌入中添加了一个带有维度的位置编码,以获得单词的最终输入向量。具体而言,该位置用以下等式编码:

yyQruyq.jpg!mobile

其中pos表示单词在句子中的位置,i表示位置编码的当前维度。

2.2多头注意力

自注意力层通过添加一种称为多头注意力的机制来进一步改进,以提高普通自我关注层的性能。注意,对于一个给定的参考词,我们在通读句子的时候,往往要重点关注其他几个词。因此,单头自注意力层限制了集中在特定位置(或几个特定位置)的能力,同时不影响对其他同样重要的位置的注意。这是通过给注意力不同的表示子空间来实现的。具体来说,不同的头使用不同的查询、键和值矩阵,并且由于随机初始化,它们可以在训练后将输入向量投影到不同的表示子空间中。

具体来说,给定一个输入向量和头数,输入向量首先被转换成三组不同的向量,即查询组、关键字组和值组。每组有个向量,维数。然后,从不同输入得到的向量被打包成三组不同的矩阵。那么,多头注意力的流程是:

Y3ue2u.png!mobile

这里是的联合,是线性投影矩阵。

YBbYnuI.jpg!mobile

2.3 Transformer的其他部分

编解码器中的残差。如图4所示,为了加强信息流并获得更好的性能,在编码器和解码器的每个子层中添加了残余连接。随后是层规范化[4]。上述操作的输出可以描述为:

Rbuquqq.png!mobile

注意,这里使用作为自注意力层的输入,因为查询、键和值矩阵Q、K和V都是从同一个输入矩阵导出的。

前馈神经网络。前馈神经网络应用于每个编码器和解码器中的自注意力层之后。具体而言,前馈神经网络由两个线性变换层和其中的ReLU激活函数组成,可表示为以下函数:

jeeAbiM.png!mobile

这里和是两个线性transformation层参数矩阵,代表ReLU函数。隐藏层的维度

解码器的最后一层。解码器中的最后一层旨在将矢量堆栈转换回一个word。这是通过一个线性层和一个softmax层来实现的。线性层将向量投影到具有维度的logits向量中,其中是词汇表中的单词数。然后,使用softmax层将逻辑向量转换成概率。

计算机视觉任务中使用的大多数Transformer都利用了原始Transformer的编码器模块。简而言之,它可以被视为一种不同于卷积神经网络和递归神经网络的新的特征选择器。与只关注局部特征的CNN相比,Transformer能够捕捉长距离特征,这意味着Transformer可以轻松导出全局信息。与必须按序列计算隐藏状态的RNN相比,Transformer效率更高,因为自注意力层和全连接层的输出可以并行计算,并且容易加速。因此,进一步研究Transformer在自然语言处理和计算机视觉领域的应用具有重要意义。

3.Transformer在NLP中应用

在Transformer出现之前,递归神经网络(如GRU [26]和LSTM [50]),加上额外的关注,使大多数最先进的语言模型成为可能。但是,在RNNs中,信息流需要从先前的隐藏状态到下一个隐藏状态依次处理,这就排除了训练过程中的加速和并行化,从而阻碍了RNNs处理更长序列或构建更大模型的潜力。2017年,Vaswani等人【123】提出了Transformer,这是一种新颖的编码器-解码器架构,仅建立在多头自注意力机制和前馈神经网络之上,旨在轻松解决序列到序列自然语言任务(如机器翻译),并获得全局依赖性。《变形金刚》的成功表明,仅利用注意力机制就可以获得与注意力集中的RNNs相当的性能。此外,Transformer的架构支持大规模并行计算,支持在更大的数据集上进行训练,从而导致用于自然语言处理的大型预训练模型(PTM)的激增。

BERT[29]及其变体(如SpanBERT[63],RoBERT[82])是一系列建立在多层Transformer编码器架构上的PTM。在BERT的预训练阶段,在图书语料库[156]和英语维基百科数据集上进行两项任务:1)通过首先随机掩码输入中的一些token,然后训练模型进行预测,来掩蔽语言建模(MLM);2)下一句预测使用成对的句子作为输入,并预测第二句是否是文档中的原句。经过预训练后,BERT可以通过添加一个输出层来微调一系列下行任务。更具体地说,当执行序列级任务(例如,情感分析)时,BERT使用第一token的表示进行分类;而对于token级别的任务(例如,名称实体识别),所有tokens都被馈送到softmax层进行分类。在发布时,BERT在11个自然语言处理任务上取得了最先进的结果,在预先训练的语言模型中树立了一个里程碑。创成式预训练transformer系列(例如,GPT [99],GPT-2 [100])是另一种基于transformer解码器架构的预训练模型,它使用屏蔽的自我注意机制。GPT系列和伯特系列的主要区别在于预训练的方式。与伯特不同,GPT系列是由左到右语言建模预先训练的单向语言模型。此外,句子分隔符([SEP])和分类符标记([CLS])只参与了GPT的微调阶段,但BERT在预训练期间学习了这些嵌入。由于GPT的单向预训练策略,它在许多自然语言生成任务中显示出优越性。最近,一个巨大的基于transformertransformer的模型,GPT-3,有令人难以置信的1750亿个参数被引入[10]。通过对45TB压缩明文数据的预训练,GPT-3声称能够直接处理不同类型的下游自然语言任务,而无需微调,在许多自然语言处理数据集上实现了强大的性能,包括自然语言理解和生成。除了前面提到的基于变压器的PTM,自从transformer引入以来,已经提出了许多其他模型。因为这不是我们调查的主要主题,我们在表2中简单列出了几个有代表性的模型,供感兴趣的读者参考。

mMvEzaE.jpg!mobile

除了在大型语料库上为一般自然语言处理任务训练的语言处理模型之外,基于Transformer换的模型已经被应用于许多其他与自然语言处理相关的领域或多模态任务。

BioNLP Domain。基于Transformer的模型已经超越了许多传统的生物医学方法。BioBERT [69]将Transformer架构用于生物医学文本挖掘任务;SciBERT [7]是通过在涵盖生物医学和计算机科学领域的114M科学文章上训练Transformer而开发的,旨在更精确地执行与科学领域相关的NLP任务;黄等[55]提出ClinicalBERT利用Transformer来开发和评估Clinical notes的连续表示,并且作为副作用,ClinicalBERT的注意力图可以用于解释预测,从而发现不同医疗内容之间的高质量联系。

Multi-Model Tasks.由于Transformer在基于文本的自然语言处理任务中的成功,许多研究致力于挖掘Transformer处理多模态任务(如视频-文本、图像-文本和音频-文本)的潜力。VideoBer[115]使用基于CNN的模块预处理视频以获得表示tokens,基于此,变压器编码器被训练为下游任务(如视频字幕)学习视频-文本表示。VisualBERT[72]和VL-BERT[114]提出了单流统一转换器来捕捉视觉元素和图像-文本关系,用于下游任务,如视觉问题回答(VQA)和视觉常识推理(VCR)。此外,一些研究,如SpeechBERT [24]探索了用Transformer编码器编码音频和文本对的可能性,以处理自动文本任务,如语音问答(SQA)。

基于转换器的模型在各种自然语言处理和自然语言处理任务上的快速发展证明了它的结构优势和通用性。这使得Transformer成为除自然语言处理之外的许多其他人工智能领域的通用模块。本调查的以下部分将重点关注过去两年中出现的变压器在广泛的计算机视觉任务中的应用。

4.视觉Transformer

在这一节中,我们全面回顾了计算机视觉中基于Transformer 的模型,包括在图像分类、高级视觉、低级视觉和视频处理中的应用。简要总结了自注意力机制和模型压缩方法在高效Transformer 中的应用。

4.1.图像分类

受transformer在自然语言处理方面的巨大成功的启发,一些研究人员试图研究类似的模型是否可以学习到有用的图像表示。图像作为一种比文本更高维、更具噪声、更冗余的形态,被认为是生成性建模的难点。iGPT [18]和ViT [31]是两个纯粹使用Transformer进行图像分类的作品。

4.1.1 iGPT

图像生成预训练方法的原始浪潮已经过去很长时间了,陈等[18]重新审视了这一类方法,并结合自监督方法的最新进展。该方法由预训练阶段和微调阶段组成。在预训练中,探索了自回归和BERT目标。此外,在自然语言处理中,使用序列transformer结构来预测像素而不是语言标记。预训练可被视为一种有利的初始化,或与早期停止结合使用时作为一种规范。在微调过程中,他们向模型中添加一个小的分类头,用于优化分类目标和调整所有权重。

给定由高维数据组成的未标记数据集。他们通过最小化数据的负对数似然来训练模型:

nYnArme.png!mobile

其中 p(x)是图像数据的密度,可以建模为:

yYbyu2m.jpg!mobile

其中,适用于,也称为光栅顺序。他们还考虑了BERT 目标,该目标对子序列进行采样,使得每个索引独立地具有出现在中的概率0.15。M被称为BERT掩码,并且通过最小化以未masked元素为条件的“掩码”元素的负对数似然来训练模型:

qeMbee.png!mobile

在预训练中,他们选择,并最小化预训练数据集的损失。

他们使用GPT-2 [100]公式的Transformer解码器block。特别地,层norms先于注意力和多层感知器(MLP)操作,并且所有操作都严格地位于残差路径上。跨序列元素的唯一混合发生在注意力操作中,为了确保在训练增强现实目标时进行适当的调节,他们将标准的上三角掩模应用于然后矩阵的注意力logits。当使用BERT目标时,不需要注意逻辑掩码:在将内容嵌入应用到输入序列之后,它们将位置归零。

在最后的transformer层之后,他们应用层norm,并从输出中学习投影,以对每个序列元素的条件分布进行参数化。在训练BERT时,他们只是简单地忽略未加掩码的logits。

在微调过程中,他们对最终层范数的输出进行平均池化,跨越序列维度提取每个示例的特征的d维向量:

eiiQFj.png!mobile

他们从到类logits中学习投影,用于最小化交叉熵损失。在实践中,他们根据经验发现联合目标函数的效果更好,其中。

4.1.2 ViT

最近,Dosovitskiy等人[31]提出了一种纯Transformer,即视觉Transformer(ViT),当直接应用于图像块序列时,它在图像分类任务中表现良好。他们尽可能地遵循原始Transformer的设计。图5展示了视觉Transformer的框架。

RrEFra6.jpg!mobile

为了处理2D图像,图像被重新成形为一系列平坦的2D片。(H,W)是原始图像的分辨率,(P,P)是每个图像patch的分辨率。则是Transformer的有效序列长度。由于Transformer在其所有层中使用恒定的宽度,可训练的线性投影将每个矢量化路径映射到模型维度D,其输出被称为patch嵌入。

类似于BERT的[class]token,可学习的嵌入被用于嵌入patch的序列,其在Transformer编码器输出端的状态用作图像表示。在预训练和微调过程中,分类头的大小相同。此外,1D位置嵌入被添加到补片嵌入以保留位置信息。他们探索了位置嵌入的不同2D感知变体,这并没有获得比标准1D位置嵌入更大的收益。联合嵌入作为编码器的输入被切断。值得注意的是,视觉Transformer仅采用标准转换器的编码器,并且转换器编码器的输出后面是MLP头。

通常情况下,ViT首先在大型数据集上进行预训练,并针对较小的下游任务进行微调。为此,移除预训练的预测头,并附加一个零初始化的D × K前馈层,其中K是下游类别的数量。以比预训练更高的分辨率微调通常是有益的。当馈送更高分辨率的图像时,patch大小保持不变,这导致更大的有效序列长度。视觉Transformer可以处理任意序列长度,然而,预先训练的位置嵌入可能不再有意义。作者根据它们在原始图像中的位置对预先训练的位置嵌入进行插值。请注意,分辨率调整和patch提取是手动将图像2D结构的感应偏差注入视觉Transformer的唯一点。

当在中型数据集(如ImageNet)上进行训练时,这种模型产生的结果一般,精度比同等规模的ResNets低几个百分点。Transfermer缺乏CNNs固有的一些归纳偏差,如翻译equivariance方差和局部性,因此在数据量不足的情况下训练时不能很好地概括。然而,如果模型是在大数据集(14M-300M图像)上训练的,图片就会改变。作者发现大规模训练胜过归纳偏见。变形金刚在经过足够规模的预训练并转移到数据点较少的任务时,可以获得出色的效果。在JFT300M数据集上预处理的视觉Transfermer接近或超过了多种图像识别基准的先进水平,在ImageNet上达到88.36%的准确率,在CIFAR-10上达到99.50%,在CIFAR-100上达到94.55%,在VTAB套件的19项任务中达到77.16%。iGPT和ViT的详细结果如表3所示。接近或超过了多种图像识别基准的先进水平,在ImageNet上达到88.36%的准确率,在CIFAR-10上达到99.50%,在CIFAR-100上达到94.55%,在VTAB套件的19项任务中达到77.16%。iGPT和ViT的详细结果如表3所示。

aU3mi23.jpg!mobile

总之,iGPT回忆了生成性预训练方法,并将其与自监督方法相结合,结果并不十分令人满意。ViT取得了更好的结果,尤其是当它使用更大的数据集(JFT-300)时。然而,ViT的结构与NLP中的Transfermer基本相同,如何明确patch内和patch间的相关性仍然是一个具有挑战性的问题。此外,相同大小的补丁在ViT中被同等对待。众所周知,每个patch的复杂性是不同的,这个特点现在还没有被充分利用。

4.2. 高级视觉

近来,人们对采用Transformer进行高级计算机视觉任务越来越感兴趣,例如目标检测[15,155,23],车道检测[81]和分割[129,126]。在本节中,我们对这些方法进行了回顾。

4.2.1 目标检测

根据采用Transformer架构的模块,基于Transformer的目标检测方法可以粗略地分为基于颈部、基于头部和基于框架的方法。

像特征金字塔网络(FPN) [77]这样的多尺度特征融合模块(在现代检测框架中被称为颈部)已经被广泛用于目标检测以获得更好的检测性能。张等人[145]提出传统方法不能交互跨尺度特征,因此提出特征金字塔变换(FPT)来充分利用跨空间和尺度的特征交互。FPT由自Transformer、grounding Transformer和渲染Transformer三种类型的Transformer组成,分别对特征金字塔的自层次、自顶向下和自底向上路径的信息进行编码。FPT基本上利用Transformer中的自注意力模块来增强特征金字塔网络的特征融合。

预测头在目标检测器中起着重要的作用。现有的检测方法通常利用单一的视觉表示(例如,边界框和角点)来预测最终结果。迟等人【23】提出了桥接视觉表征(BVR),通过多头注意力模块将不同的异质表征组合成一个单一的表征。具体地,主要表示被视为查询输入,辅助表示被视为键输入。通过类似于Transformer中的注意力模块,可以获得用于master表示的增强特征,这桥接了来自辅助表示的信息,并且有利于最终的检测性能。

与上述利用Transformer增强现代探测器特定模块的方法不同,Carion[15]重新设计了物体检测框架,并提出了检测Transformer(DETR),这是一种简单且完全端到端的物体探测器。DETR对待目标检测任务为一个 intuitive set prediction 问题,并且摆脱传统手工制作的组件如锚框生成和非极大值抑制。如图6所示,DETR从CNN主干开始,从输入图像中提取特征。为了用位置信息来补充图像特征,在被馈送到编码-解码Transformer之前,固定位置编码被添加到展平特征。Transformer解码器使用来自编码器的嵌入以及N个学习的位置编码(对象查询),并产生N个输出嵌入,其中N是图像中预先定义的参数和最大数量的对象。最终的预测是用简单的前馈网络(FFN)计算的,它包括边界框坐标和类别标签,以指示对象的特定类别或没有对象。不像原来的Transformer序列产生预测,DETR同时并行解码N个对象。DETR采用一种二分匹配算法来分配预测目标和真实目标。如等式(11)中所示,Hungarian损失被用来计算所有匹配目标对的损失函数。

IzYvmem.jpg!mobileUzqiYzU.png!mobile

这里和是GT和目标的预测,是优化assignment,和是目标类别标签和预测标签,和是GT和预测的边界框。DETR在目标检测表现出了印象深刻的效果,其准确性和速度与COCO基准数据集上流行且成熟的更快的R-CNN基线相当。

DETR是一个基于Transformer的目标检测框架的新设计,并启发团队开发完全端到端的检测器。然而,普通的DETR也带来了一些挑战,例如,更长的训练时间表和小物体的不良表现。朱等人[155]提出的可变形的DETR是解决上述问题的一种常用方法,大大提高了检测性能。变形注意力模块不是通过Transformer中的原始多头注意力来查看图像特征图上的所有空间位置,而是关注参考点周围的一小组关键位置。这样,计算复杂度大大降低,也有利于快速收敛。更重要的是,可变形的注意力 模块可以容易地应用于融合多尺度特征。变形DETR比DETR的性能好,训练成本低10倍,推理速度快1.6倍。一些额外的改进也适用于可变形DETR,包括有效的迭代边界框细化方法和两阶段方案,这导致进一步的性能增益。

针对Zheng等人[153]提出的计算复杂度较高的问题,提出了一种自适应聚类Transformer(ACT)来降低预先训练的的计算开销,无需任何训练过程。ACT使用局部敏感哈希方法自适应地对查询特征进行聚类,并将注意力输出广播给由所选原型表示的查询。通过用建议的ACT代替预训练的DETR模型的自注意力模块而无需任何再训练,计算成本可以大大降低,而精度几乎没有下降。此外,通过利用多任务知识提取(MTKD)方法,可以进一步降低性能下降,该方法利用原始Transformer提取具有几个微调epoch的ACT模块。

Sun等[117]研究了模型的慢收敛问题,揭示了Transformer解码器中的交叉注意模块是其背后的主要原因。为此,提出了DETR的仅编码器版本,并且在检测精度和训练收敛方面实现了相当大的改进。此外,为了更稳定的训练和更快的收敛,设计了一种新的二分匹配方案。提出了两种基于Transformer的集合预测模型,即TSP-FCOS模型和TSPRCNN模型,这两种模型比原DETR模型具有更好的性能。

受自然语言处理中预训练Transformer方案的启发,Dai等人[28]提出了一种无监督预训练(UP-DETR)的目标检测方法。具体而言,提出了一种新的无监督protext任务随机查询patch检测来预处理DETR模型。通过该方案,UP-DETR在相对较小的数据集上,即PASCAL-VOC,大幅度提高了检测精度。在训练数据充足的COCO基准数据集上,UP-DETR仍优于DETR,证明了无监督预训练方案的有效性。

4.2.2 分割

DETR [15]可以通过在解码器上附加一个掩码头来自然地扩展全景分割任务,并获得有竞争力的结果。王等人[126]提出了Max-DeepLab,利用掩模变换直接预测全景图像分割结果,不需要box检测等代理子任务。与DETR类似,Max-DeepLab以端到端的方式简化了全景分割任务,并直接预测了一组不重叠的掩码和相应的标签。利用PQ损失来训练模型。此外,与以前在CNN主干上堆叠Transformer的方法不同,Max-DeepLab采用了双路框架,以便更好地将CNN与Transformer结合起来。

王等人[129]提出了一种基于Transformer的视频实例分割(VisTR)模型,该模型以一系列图像作为输入,并产生相应的实例预测结果。提出了一种实例序列匹配策略,将预测与GT情况相匹配。为了获得每个实例的MASK序列,VisTR利用实例序列分割模块从多个帧中累积掩码特征,并用3D CNN分割掩码序列。

还有一种尝试是将Transformer用于细胞实例分割[95],其基于DETR全景分割模型。所提出的细胞DETR还增加了跳跃连接,以桥接主干CNN和分割头CNN解码器的特征,以获得更好的融合特征。细胞DETR显示了显微图像细胞实例分割的最先进的性能。

赵等[150]设计了一种用于处理点云的新型Transformer架构(Point Transformer)。所提出的自注意力层对于点集的排列是不变的,因此适用于点集处理任务。点Transformer在三维点云语义分割任务中表现出很强的性能。

4.2.3 车道检测

在polylanet[119]的基础上,刘等人[81]提出了利用Transformer网络学习全局上下文来提高弯道检测的性能。与多元线性网络相似,该方法(LSTR)将车道检测视为用多项式拟合车道的任务,并使用神经网络来预测多项式的参数。为了捕捉车道和全局环境的细长结构,LSTR在体系结构中引入了Transformer网络,以处理由卷积神经网络提取的低级特征。此外,LSTR使用Hungarian损失优化网络参数。如[81]所示,LSTR比只有0.2倍参数的PolyLaneNet高2.82%的精度和3.65倍的FPS。Transformer网络、卷积神经网络和Hungarian损失的结合实现了一个微小、快速、精确的车道检测框架。

4.3. 低级视觉

除了高级视觉任务,很少有作品将Transformer应用于低级视觉领域,如图像超分辨率、生成等。与输出为标签或boxes的分类、分割和检测相比,低层任务往往以图像作为输出(如高分辨率或去噪图像),这更具挑战性。

Parmar等人[92]在概括Transformer模型方面迈出了第一步,以制定图像翻译和生成任务,并提出了图像Transformer。图像Transformer由两部分组成:用于提取图像表示的编码器和用于生成像素的解码器。对于值为0-255的每个像素,学习256 × d维嵌入,用于将每个值编码为d维向量,该向量作为编码器的输入。编码器和解码器的结构与[123]中的相同。解码器中各层的详细结构如图7所示。

vEJZJbV.jpg!mobile

通过计算输入像素和先前生成的像素利用位置嵌入对于图像条件生成,例如超分辨率和修复,使用编码器-解码器架构,其中编码器的输入是低分辨率图像或损坏的图像。对于无条件和有类条件生成(即图像噪声),只有解码器用于输入噪声矢量。由于解码器的输入是以前生成的像素,在生成高分辨率图像时会带来很大的计算成本,因此提出了一种局部自注意力方案,该方案只使用最近生成的像素作为解码器的输入。结果,图像Transformer在图像生成和翻译任务上可以达到与基于CNN的模型的竞争性能,这表明了基于Transformer的模型在低水平视觉任务上的有效性。

与使用每个像素作为Transformer模型的输入相比,最近的作品使用patch片(像素集)作为输入。杨等人[135]提出了用于图像超分辨率的纹理Transformer网络(TTSR)。他们在基于参考的图像超分辨率问题中使用Transformer架构,其目的是将相关纹理从参考图像转移到低分辨率图像。以低分辨率图像和参考图像为查询Q和关键K,计算每个patch的和之间的相关度:

3ENFRnb.png!mobile

然后提出了一种高分辨率特征选择模块,根据参考图像选择高分辨率特征V,利用相关性匹配低分辨率图像。hard注意力图的计算方法是:

6F7niuZ.png!mobile

那么最相关的参考patch是,其中T中的是转移的特征。之后,soft注意力模块用于将转换为低分辨率特征。软注意力可通过一下方式计算:

BnI3iyM.png!mobile

因此,将高分辨率纹理图像转换为低分辨率图像的等式可以表述为:

其中和代表低分辨率图像的输出和输入特征,代表软注意力,代表从高分辨率纹理图像转移的特征。通过引入基于Transformer的架构,TTSR可以成功地将纹理信息从高分辨率参考图像传输到低分辨率图像,以完成超分辨率任务。

6BF77na.jpg!mobile

上述方法在单个任务上使用Transformer模型,而陈等人[17]提出图像处理Transformer(IPT)通过使用大规模预训练来充分利用Transformer的优势,并在包括超分辨率、去噪和去雨在内的多个图像处理任务中实现最先进的性能。如图8所示,IPT由多头、编码器、解码器和多尾组成。针对不同的图像处理任务,引入了多头多尾结构和任务嵌入。这些特征被分成小块以放入编码器-解码器结构中,然后输出被整形为具有相同大小的特征。由于Transformer模型在大规模预训练方面显示出优势,IPT使用ImageNet数据集进行预训练。特别地,ImageNet中的图片通过手动添加噪声、加雨或下采样,降级为生成的损坏图像。然后将退化图像作为IPT的输入,将干净图像作为输出的优化目标。为了提高IPT模型的泛化能力,引入了自监督方法。然后使用相应的头部、尾部和任务嵌入对每个任务的训练模型进行微调。IPT极大地提高了图像处理任务的性能(例如,图像去噪任务中的2dB),这证明了基于Transformer的模型在低层视觉领域的巨大潜力。

4.4.视频处理

该Transformer在基于序列的任务上表现惊人,尤其是在NLP任务上。在计算机视觉中,空间和时间维度信息在视频任务中受到青睐。因此,Transformer被应用于许多视频任务,如帧合成[83],动作识别[41]和视频检索[80]。

4.4.1.高级视频处理

人体行为识别。视频人体动作任务是指在视频中识别和定位人体动作。背景材料在识别人类行为中起着至关重要的作用。Rohit等人提出动作Transformer[41]来模拟感兴趣的人和周围事物之间的潜在关系。具体来说,I3D被用作提取高级特征图的主干网络。通过感兴趣区域池化从中间特征图中提取的特征被视为查询(问题)。从中间特征计算键值。自注意力机制由三部分组成,并输出分类和回归预测。Lohit等人[84]提出了一个可解释的可微模块,称为时间Transformer网络,以减少类内方差和增加类间方差。Fayyaz和Gall提出了一种时间Transformer,用于在弱监督下执行动作识别任务。

人脸对齐。基于视频的人脸对齐任务旨在定位面部标志。时间相关性和空间信息对最终性能很重要。然而,前一种方法不能捕获连续帧上的时间信息和静止帧上的补充空间信息。因此,刘等人[80]使用双流Transformer网络来分别学习时间和空间特征。两个流以端到端的方式被联合优化,并且特征被加权以获得最终的预测。

视频恢复。基于内容的视频检索的关键是找到视频之间的相似性。为了通过仅利用视频级特征的图像级来克服这些缺点,邵等人[110]建议使用变换器来对范围语义依赖性进行建模。此外,引入监督对比学习策略进行硬否定挖掘。基准数据集上的结果证明了性能和速度优势。Gabeur等人[39]提出了一种多模态转换器来学习不同的跨模态线索,从而表示视频。

动作识别。活动识别是指识别一个群体中的一个人的活动。以前解决这个问题的方法是基于单人的位置。Gavrilyuk等人提出了一个actortransformer [40]架构来学习表示。actortransformer将2D和3D网络生成的静态和动态表示作为输入。Transformer的输出是预测的动作。

视频目标检测。为了从视频中检测目标,需要全局和局部信息。陈等人介绍了内存增强的全局-局部聚合(MEGA) [19]来捕获更多的内容。代表性特征提高了整体性能,并解决了无效和不足的问题。Yin等人[138]提出了一种时空transformer来聚集空间和时间信息。与另一个空间特征编码组件一起,这两个组件在3D视频对象检测任务中表现良好。

多任务学习。未剪辑的视频通常包含许多与目标任务无关的帧。因此,挖掘相关信息,去除冗余信息至关重要。为了应对未剪辑视频上的多任务学习,Seong等人采用视频多任务transformer网络[109]来提取信息。对于CoVieW数据集,任务是场景识别、动作识别和重要性分数预测。ImageNet和Places365上的两个预训练网络提取场景特征和对象特征。在类别转换矩阵(CCM)的帮助下,多任务transformer被堆叠以融合特征。

4.4.2 低级视频处理

帧/视频合成。帧合成任务是指在两个连续帧之间或在一个帧序列之后合成帧。视频合成任务旨在合成视频。刘等人提出了ConvTransformer [83],它包括五个部分:特征嵌入、位置编码、编码器、查询解码器和合成前馈网络。与基于LSTM的作品相比,ConvTransformer以更具可并行性的架构实现了更好的效果。Schatz等人[108]使用一个递归的Transformer网络从新的角度合成人类行为。

视频修复。视频修复任务旨在完成一帧中缺失的区域。这项具有挑战性的任务需要沿着空间和时间维度合并信息。Zeng等人为此任务提出了一个时空转换器网络[144]。将所有输入帧作为输入,并平行填充它们。时空对抗损失来优化transformer网络。

4.4.3 多模态

视频字幕/概要。视频字幕任务的目标是为未剪辑的视频生成文本。事件检测和描述模块是两个主要部分。周等人[154]提出了一种端到端优化的transformer来解决密集视频字幕任务。编码器将视频转换成表示形式。提议解码器从编码中生成事件提议。字幕解码器用建议掩码编码并输出描述。Bilkhu等人[9]使用C3D和I3D网络提取特征,并使用变压器生成预测。该算法在单一总结任务和密集总结任务上都表现良好。Li等人[71]利用基于纠缠注意力(ETA)模块的transformer来处理图像字幕任务。Sun等人[29]提出了一个视觉语言框架来学习没有监督的代表。该模型可以应用于许多任务,包括视频字幕、动作分类等。

4.5.CV自注意力模块

在上面的章节中,我们已经回顾了将transformer架构用于可视化任务的方法。自注意力是transformer的关键部分。在这一节中,我们深入研究了基于自注意力的方法在计算机视觉中的挑战性任务,例如,语义分割,实例分割,目标检测,关键点检测和深度估计。我们从第4.5.1节中的自注意力算法开始,并在第4.5.2节中总结了将自注意力用于计算机视觉的现有应用。

4.5.1 自注意力的通用公式

用于机器翻译的自注意力模块[123]通过关注所有位置并在嵌入空间中对它们进行加权求和来计算序列中一个位置处的响应,这可以被视为计算机视觉中可应用的非局部滤波操作[128,11]的一种形式。我们遵循惯例[128]制定自之以利模块。给定一个输入信号(例如,图像、序列、视频和特征),其中表示特征中的像素数,c是通道数,输出信号生成如下:

yy6VJzZ.jpg!mobile

其中和分别表示输入信号X和输出信号Y的位置(例如,空间、时间和时空)。下标j是枚举所有位置的索引。成对函数计算表示关系,例如和所有之间的表示关系。函数计算位置处输入信号的表示。响应由因子归一化。

请注意,成对函数有许多选择,例如,高斯函数的简单扩展可用于计算嵌入空间中的相似性,因此函数可表述为:

aquuUfi.png!mobile

其中和可以是任何嵌入层。如果我们考虑,线性嵌入形式为:并将归一化因子设置为,则E.q. 16可改写为:

vamaQj7.jpg!mobile

其中权重矩阵的行。对于给定,成为沿维度的软最大输出,因此公式可以进一步改写为:

这里是和X相同的输出信号。与查询相比,键和值表示,一旦,E.q. 19可以表述为:

自注意力模块为机器翻译提出的与以上为计算机视觉提出的非局部滤波操作完全相同。

通常,计算机视觉自注意力模块的最终输出信号为:

uQJvIvv.png!mobile

其中是通过等式19产生的。如果初始化为零,这个自注意力模块可以插入到任何现有的模型中,而不会破坏它的初始行为。

4.5.2 Transformer视觉任务的应用

自注意力模块被认为是卷积神经网络架构的一个构件,它具有与大感受野有关的低标度特性。构建模块总是用在网络的顶部,以捕捉计算机视觉任务的远程交互。接下来,我们回顾了提出的基于自注意力的图像任务方法,如图像分类、语义分割和目标检测。

图像分类。用于分类的可训练注意力包括两个主要流:关于使用图像区域的硬注意力[3,87,134]和生成非刚性特征图的软注意力[125,60,43,102]。Ba等人[3]首先提出了用于图像分类任务的视觉注意力项,并利用注意力来选择输入图像中的相关区域和位置,这也可以降低所提出模型的计算复杂度,减小输入图像的大小。AG-GNN[42]建议通过关注热图从全局图像中裁剪出一个子区域,用于医学图像分类。SENet [54]提出了软自注意力来重新加权卷积特征的通道道响应,而不是使用硬注意力和重新校准特征图的裁剪。Jetley等人[60]使用由相应的预测器生成的注意力图来重新加权深层神经网络中的中间特征。Han等人[43]利用属性感知注意力来增强CNNs的表征。

语义分割。PSANet [151]、OCNet [139]、DANet [38]和CFNet [147]是第一批将自注意力模块引入语义分割任务的工作,它们考虑并增强了上下文像素之间的关系和相似性[146、74、46、89、130]。DANet [38]同时利用空间和通道维度上的自我关注模块。A2Net [20]提出将像素分组为一组区域,然后通过将区域表示与生成的注意力权重聚合来增加像素表示。为了减轻自注意模块中计算像素相似度带来的大量参数,提出了几个工作[140,59,58,75,66]来提高自注意模块的语义分割效率。例如,CGNL [140]应用径向基函数核函数的泰勒级数来近似像素相似性。CCNet [59]通过两个连续的交叉注意来近似原始的自注意方案。ISSA [58]建议将密集亲和矩阵分解为两个稀疏亲和矩阵的乘积。还有其他相关的工作使用基于注意力的图形推理模块[76,21,75]来增强局部和全局表示。

目标检测。Ramachandran等人[102]提出了一个基于注意力的层来建立一个完全注意力模型,它在COCO [79]基准上优于卷积RetinaNet[78]。GCNet [13]发现,对于图像内的不同查询位置,由非局部操作建模的全局上下文几乎是相同的,并提出将简化公式和SENet [54]统一为全局上下文建模的通用框架[73,52,34,93]。Vo 等人[124]设计了一个双向操作,从一个查询位置收集信息并将其分发到所有可能的位置。胡等人[53]提出了一种基于自注意的关系模块,通过一组目标的外观特征之间的相互作用来同时处理一组目标。Chenget等人提出了RelationNet++ [23],它带有一个基于注意力的解码器模块,将其他表示桥接成一个基于单一表示格式的典型目标检测器。

其他视觉任务。张等人[148]提出了分辨率方向的注意力模块,以学习用于精确姿态估计的增强的分辨率方向的特征图。黄等人[57]提出了一种基于Transformer的网络[56],用于3D手-物体姿态估计。Chang等人[16]借助于基于注意力机制的特征融合block,提高了关键点检测模型的准确性并加速了其收敛。

4.6. 高效Transformer

尽管Transformer模型在各种任务中取得了成功,但仍然需要高内存和计算资源,这阻碍了在资源有限的设备(例如,移动电话)上的实现。在这一部分中,我们回顾了压缩和加速Transformer模型以实现高效的研究,包括网络剪枝、低秩分解、知识提炼、网络量化、压缩架构设计。表4列出了一些压缩基于Transformer的模型的代表性工作。

iYZfumJ.jpg!mobile

4.6.1 修建&分解

在基于Transformer的预训练的模型(例如BERT)中,多个注意力操作被并行以独立地模拟不同tokens之间的关系[123,29],而不是所有的头部对于特定的任务都是必需的。米歇尔等人[85]凭经验观察到,在测试时,大部分注意力可以被转移,而不会显著影响性能。不同层所需的头数量各不相同,对于某些层来说,一个头就足够了。考虑到注意力头上的冗余,在[85]中定义了重要性分数来估计每个头对最终输出的影响,并且可以移除不重要的头以进行有效部署。Dalvi等人[96]从两个角度进一步分析了预训练Transformer模型中的冗余,即一般冗余和特定任务冗余。遵循 lottery ticket hypothesis等[36],Prasanna等[96]分析了BERT中的彩票,并表明良好的子网络也存在于基于Transformer的模型中。[96]中减少了FFN层和注意力头,以实现高压缩率。

除了Transformer模型的宽度,深度,即层数也可以减少,以加快推理过程[32]。不同于Transformer模型中不同的注意头可以并行计算,不同的层必须顺序计算,因为下一层的输入取决于前一层的输出。Fan等人[32]提出了一种分层策略来规范模型的训练,然后在测试阶段将整个层一起移除。考虑到不同设备中的可用资源可能不同,侯等人[51]提出自适应地减小预定义的Transformer模型的宽度和深度,并且同时获得具有不同尺寸的多个模型。重要的注意头和神经元通过一种rewiring机制在不同的子网中共享。

除了直接丢弃Transformer模型中部分模块的剪枝方法之外,矩阵分解旨在基于低秩假设用多个小矩阵来逼近大矩阵。例如,Wang等人[131]在Transformer模型中分解标准矩阵乘法,实现更有效的推理。

4.6.2 知识蒸馏

知识蒸馏旨在通过从巨型教师网络转移知识来训练学生网络[48,12,2]。与教师网络相比,学生网络通常具有更薄、更浅的体系结构,更容易部署在资源有限的资源上。神经网络的输出和中间特征也可以用来将有效的信息从教师传递给学生。Mukherjee等人[88]专注于Transformer模型,利用预先训练的BERT [29]作为教师,在大量未标记数据的帮助下,指导小模型的训练。王等人[127]在预先训练的教师模型中训练学生网络以模仿自注意力层的输出。值与值之间的点积作为一种新的知识形式被引入来指导学生。在[127]中还引入了一名教师助理[86],这缩小了大型预先训练的变压器模型和紧凑的学生网络之间的差距,使模拟更加容易。考虑到Transformer模型中的各种类型的层(即,自注意力层、嵌入层、预测层),焦等人[62]设计了不同的目标函数来将知识从教师转移到学生。例如,学生模型嵌入层的输出是通过均方误差损失来模拟教师模型的输出。一个可学习的线性变换也被用来将不同的特征映射到同一个空间。对于预测层的输出,采用KL散度来度量不同模型之间的差异。

4.6.3 量化

量化旨在减少代表网络权重或中间特征的位数[122,137]。通用神经网络的量化方法已经得到了很好的讨论,并获得了与原始网络相当的性能[91,37,6]。最近,如何对Transformer模型进行特殊量化备受关注[8,33]。Shridhar等人[112]建议将输入嵌入到二进制高维向量中,然后使用二进制输入表示来训练二进制神经网络。Cheong等人[22]通过低位(例如4位)表示来表示Transformer模型中的权重。赵等[152]对各种量化方法进行了实证研究,表明k-means量化具有巨大发展潜力。针对机器翻译任务,Prato等人[97]提出了一种完全量化的Transformer,这是第一个8位量化模型,没有任何translation质量损失,如论文所述。

4.6.4 紧凑型架构设计

除了将预先定义的Transformer模型压缩成小模型之外,一些作品试图直接设计紧凑的模型[132,61]。蒋等[61]提出了一种新的基于跨度的动态卷积模型,将全连通层和卷积层结合起来,简化了自注意力的计算,如图9所示。来自不同标记的表示之间的局部相关性是通过卷积运算来计算的,这比标准Transformer中的密集全连接层要有效得多。深度方向的卷积也被用来进一步降低计算成本。文献[1]中提出了有趣的汉堡层,利用矩阵分解来替代原有的自注意力层。矩阵分解可以比标准的自注意力操作更有效地计算,同时很好地反映不同tokens之间的依赖性。

Transformer模型中的自注意力操作计算给定序列(图像识别任务[31]中的补丁)中不同输入令牌的表示之间的点积,其复杂度为O(N),其中N是序列的长度。最近,大量的方法集中在降低复杂度到O(N),使Transformer模型可扩展到长序列。例如,Katharopoulos等人[64]将自注意力近似为核特征映射的线性点积,并通过递归神经网络揭示tokens之间的关系。Zaheer等人[143]将每个tokens视为图中的一个顶点,两个tokens之间的内积计算表示为一条边。受图论[113,25]的启发,各种稀疏图被组合在一起以近似Transformer模型中的密集图,这也实现了O(N)复杂度。从理论的角度来看,Yun等人[141]证明了一个具有O(N)复杂度的稀疏变换器足以反映tokens之间的任何一种关系,并且可以进行泛逼近,这为进一步研究具有O(N)复杂度的Transformer提供了理论上的保障。

5. 总结与未来展望

与卷积神经网络相比,Transformer因其优越的性能和巨大的潜力成为计算机视觉领域的研究热点。为了发现和利用Transformer的能量,正如调查中所总结的,近年来已经提出了许多解决方案。这些方法在广泛的视觉任务上表现出优异的性能,包括基本图像分类、高级视觉、低级视觉和视频处理。然而,用于计算机视觉的Transformer的潜力还没有被充分开发,还有几个挑战有待解决。

虽然研究人员已经提出了许多基于Transformer的模型来处理计算机视觉任务,但这些工作只是初步的解决方案,还有很大的改进空间。例如,ViT [31]中的Transformer架构遵循NLP [123]的标准Transformer。专门针对CV的改进版还有待探索。此外,Transformer在上述任务之外的更多任务上的应用也是必需的。

此外,大多数现有的视觉Transformer模型都是为处理单一任务而设计的。许多NLP模型,如GPT-3 [10]已经显示了Transformer在一个模型中处理多个任务的能力。CV区域的IPT·[[17]还能够处理多个低级别视觉任务,如超分辨率、图像去噪和去雨。我们认为,更多的任务只能在一个模型中涉及。

最后但同样重要的是,为CV开发高效的Transformer模型也是一个公开的问题。Transformer模型通常很大,计算量也很大,例如,基本的ViT模型[31]需要18B的浮点运算来处理图像。相比之下,轻量级CNN模型GhostNet [44,45]仅用约600M FLOPs就能实现类似的性能。虽然已经提出了几种压缩Transformer的方法,但是它们的复杂性仍然很大。而这些原本是为NLP设计的方法,可能并不适合CV。因此,高效的Transformer模型是在资源有限的设备上部署视觉Transformer。

推荐阅读

添加极市小助手微信 (ID : cvmart2) ,备注: 姓名-学校/公司-研究方向-城市 (如:小极-北大- 目标检测- 深圳),即可申请加入 极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解 等技术交流群: 月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、 与  10000+ 来自 港科大、北大、清华、中科院、CMU、腾讯、百度 等名校名企视觉开发者互动交流 ~

biMRR3i.jpg!mobile

△长按添加极市小助手

EVJvArE.png!mobile

△长按关注极市平台,获取 最新CV干货

觉得有用麻烦给个在看啦~   


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK