结合Facebook的DETR(ECCV2020)[2]和谷歌的ViT(ICLR2021)[3]的提出,视野中的Transformer应用开始迅速升温,成为当前视觉研究的第一热点。但是visualTransformer受限于固定长度的位置编码,不能像CNN那样直接处理不同的输入大小,这在很大程度上限制了visualTransformer的应用,因为很多视觉任务,比如检测,需要在测试时动态变化.输入尺寸。一种解决方案是在ViT中插入位置代码以适应不同的图像尺寸,但这种解决方案需要重新微调模型,否则结果会更差。最近,美团提出了一种用于视觉Transformer的隐式条件位置编码CPE[1],放宽了显式位置编码对输入大小的限制,使得Transformer可以轻松处理不同大小的输入。实验表明,带有CPE的Transformer优于ViT和DeiT。论文地址:https://arxiv.org/pdf/2102.10882.pdf项目地址:https://github.com/Meituan-AutoML/CPVT(即将开源)背景Google的ViT方法通常将一张224×224的图片拆解成196个16×16的图片块(patches),依次对它们进行线性编码,得到一个输入序列(inputsequence),这样Transformer就可以像处理字符序列一样处理图片了。同时,为了保留每个图片块之间的位置信息,加入了一个与输入序列码维度长度相同的位置码。DeiT[4]提高了ViT的训练效率。它不再需要使用大数据集(如JFT-300M)作为预训练的限制。Transformer可以直接在ImageNet上训练。对于visualTransformer来说,positionencoding是必不可少的。在ViT和CPVT的实验中,我们可以发现没有位置编码的Transformer性能会明显下降。此外,在表1中,可学习(learnable)位置编码和正余弦(sin-cos)编码效果接近,2D相对编码(2DRPE)性能较差,但仍优于去掉位置编码。.美团和阿德莱德大学提出了一种新的位置编码方法。位置编码的设计需要明确的位置编码来限制输入大小。因此,美团的本次研究考虑使用一种根据输入变化的隐式变长编码方式。此外,还需要满足以下要求:保持良好的性能;避免排列等变;并且易于实施。基于以上需求,本研究提出了一种条件编码生成器PEG(PositionalEncodingGenerator)来生成隐式位置编码。在PEG中生成隐式条件位置编码,将上一层Encoder的1D输出变换为2D,然后使用变换模块学习其位置信息,最后重新变换到1D空间,加入到之前的1D输出为接下来Encoder的输入如图2所示,这里的变换单元(Transoformationunit)可以是Depthwiseconvolution,DepthwiseSeparableconvolution或者其他更复杂的模块。通过在模型中插入PEG(如图1中第一个Encoder之后),可以为每个Encoder添加位置编码信息。这种编码的优点是不需要显式指定,长度可以根据输入而变化,因此称为隐式条件位置编码。实验ImageNet数据集本研究将带有PEG的VisionTransformer模型命名为CPVT(ConditionalPositionencodingsVisualTransformer)。在ImageNet数据集上,CPVT模型以相同幅度优于ViT和DeiT。得益于隐式条件编码可以根据输入动态调整的特性,基于224×224输入训练的模型可以直接处理384×384输入(表3最后一列),性能可以不经fine-tune直接改进。相比之下,其他显式编码在没有微调的情况下会遭受性能损失。与其他编码方法的比较表5显示了CPVT-Ti模型在不同编码策略下的性能。其中,从第0到第5个Encoder插入一个PEG性能最好,Top-1准确率达到73.4%。在单独使用PEG或结合可学习编码的各种编码策略下,CPVT也优于DeiT-tiny。PEG在不同位置的作用ViTbackbone由12个Encoder组成,CPVT对比PEG在-1,0,3,6,10等位置的结果,实验表明PEG在第一个Encoder(idx0).研究认为,将其放在第一个编码器之后,不仅可以提供全局感受野,还可以确保模型尽早使用位置信息。结论CPVT提出的隐式位置编码是一种即插即用的通用方法。它放宽了对输入大小的限制,有望推动VisionTransformer在分割、检测、超分辨率等任务中的进一步应用,并提升其性能。该研究将对VisionTransformer的后续发展产生积极影响。
