说到Transformer,您可能会想到BERT [1],GPT-3 [2]等。
这些都是使用无监督训练的大型预训练模型。
由于Transformer也可以在CV上使用,您可以做类似的事情吗?本文使用ImageNet来训练图像预训练模型(IPT),该模型可以减少噪声,超分割并消除雨水。
当前,动机中的许多低级任务实际上都在一定程度上相关,也就是说,对一个低级任务进行预培训有助于另一项任务,但是目前几乎没有人在做相关的工作。
此外,对于缺少数据的某些任务,必须进行预训练,并且无论是在CV还是NLP中使用预训练模型都是很常见的。
对于一些输入和输出均为图像的低级算法,当前的预训练模型显然不合适。
准备数据集由于Transformer需要大量数据才能容纳,因此必须使用大数据集。
在本文中,作者使用imagenet。
对于imagenet的每个图像,将生成与各种任务相对应的图像对。
例如,对于超分辨率,模型的输入数据是imagenet的下采样数据,而标签是原始图像。
IPT是在上一篇文章中介绍的。
由于Transformer本身用于NLP领域,因此输入应为序列。
因此,本文的方法与ViT [3]相同。
首先,功能图需要划分为多个块,每个补丁都取决于一个字。
但是不同之处在于,由于IPT同时训练多个任务,因此该模型定义了对应于不同任务的多个头和尾。
整个模型体系结构由四个部分组成:用于提取特征的头部,TransformerEncoder,TransformerDecoder和用于将特征图还原到输出的尾部。
不同的负责人对应不同的任务。
由于IPT需要处理多个任务,因此它是一个多头结构,每个头由3层卷积层组成。
Heads要完成的任务可以描述为:fH = Hi(x),x是输入图像,f是第i个Header的输出。
在将Transformerencoder输入的特征图输入到Transformer中之前,它需要将Head输出的特征图划分为补丁。
它还需要添加位置编码信息。
与ViT不同,通过在此处直接添加即可将其用作TransformerEncoder的输入,而无需线性投影。
fpi是特征图的补丁,Epi∈RP* P×C是fpi的可学习位置编码。
LN是层归一化,MSA是多头自我关注模块,而FFN是前馈网络。
Transformerdecoder的输入是编码器和任务嵌入的输出。
这些任务嵌入是可训练的,并且不同的任务嵌入代表不同的任务。
解码器的计算可以表示为:fEi表示编码器的输出,fDi表示解码器的输出。
TailsTails对应于Heads,但是不同tails的输出大小可能不同,例如super-division。
当进行超分割时,输出大于输入图像,因此其他尾部的输出大小可能会有所不同。
损失由两部分组成,分别是L对比和L监督的加权和。
Lsupervised是指IPT和标签的L1loss的输出。
添加Lcontrastive以使Transformerdecoder到同一图像的不同面片的输出的距离最小,并使不同图像的面片之间的输出距离最大。
实验和结果作者使用了32个NVIDIA Tesla V100,并训练了200个时期,批量大小为256个。
参考文献[1] JacobDevlin,Ming-WeiChang,KentonLee和KristinaToutanova。
TomBBrown,BenjaminBenjaminMann,Darvinishbias,AirandaSubwayMann,Dirbias.Languagemodelsarefew-shotlearners.arXivpreprintarXiv:2005.14165,2020。
[3] DosovitskiyA,BeyerL,KolesnikovA,etal.Animageisworth.preform.iv.X.29preformar.ivX.29preformers.preX.Fresh.smart.is.19x.29.2010。