胡瀚研究员:Swin Transformer和拥抱Transformer的五个理由 | 自动化所系列学术讲座
把孤单当晚餐
编辑于 2021年07月24日 20:01

09:21

NLP和图像处理统一模型DALL-E,CLIP

transformer(ViT)≥ResNet≥CNN

NLP领域的变迁(本质上是序列关系处理的变迁)

1995 LSTM

2014 Deep RNN

2014 GRU

2015 RNN+attention

2017 Transformer(self-attention)

CV领域的变迁

1989 Convolution

2017 可变形卷积Deformable convolution

CV和NLP共享模型变迁

基于卷积的:

2017.5 ConvSeq2Seq

2019.2 Dynamic Convolution

2019.4 Deformable Convolution

基于Transformer:

2017 Transformer

2020.5 DeTR(Facebook)(目标检测)

2020.10 ViT(google)(目标检测)

2021.03 Swin-Transformer (更加泛化的模型)

DeTR工作原理:

把目标检测问题转换成机器翻译(或编解码器)问题

Vision Transformer(ViT)工作原理:

把一张图像分割成很多的patch(图为16x16的patch)

然后应用于标准的Transformer(纬度都不用改,16x16x3(RGB))

Swin Transformer工作原理:

Transformer+hierarchy/locality/translation invariance(层次化,局部性,平移不变形)

Swin Transformer分割性能表现

Transformer优点

1 通用的建模能力

2 与卷积形成互补

3 强大的建模能力

4 视觉与语言更好得连接

5 大吞吐量,大规模并行处理能力

视觉感知的方式:

1 由图片提取图像特征backbone(用AlexNet,VGG,GoogleNet,ResNet等等)

2 设计不同的head指向不同的任务(分类,分割,识别等)

举例:

先经过卷积,得到图像特征提取(像素to像素)

再经过RolAlign,得到局部特征提取(目标to像素)

最后经过分开的目标分析,得到Region Head(目标to目标)

总的来说,分为三步:

像素to像素

目标to像素

目标to目标

在计算机视觉中使用Transformer的原因:

一、通用的模型建模能力

1 所有的抽象的概念,或者具体的实体,以及它们之间的关系,都可以被模型化,转换成图

2 基于验证的任意关系建模的能力(CNN很难实现)

输入可异构(两个patch匹配可以是文本也可以是图片)

也就是用query和key点积验证相似度,查看是否匹配目标特征

所以,它可以处理像素to像素,目标to像素,目标to目标的关系

举例:目标检测中的关系网络

传统深度学习方法:

判断是否为棒球运动员,检测棒球手套比检测棒球运动员更容易

先图面输入

在提取多种关系

再拼接,最后输出

这里注意一点 相对位置对模型效果的影响非常大

采用Transformer

在标准Transformer模型下

棒球手套的投影Wq,棒球手的投影Wk点积,生成权重

在目标关系模型下,多采用了一个几何的偏置。

4维的回归向量经过一个小型的网络(类似于ReLU)产生该几何偏置

几何偏置可以有效提升效果

采用Transformer在计算机视觉中的优点:

一、首个完全端对端的目标检测器

另外一个例子,是DeTR,同样也是端到端的目标检测器

更多的应用有

目标检测,视频行为识别(可提升4%-5%),多目标追踪,视频目标检测

视频行为识别:

Videos as Space-Time Region Graphs[ECCV 2018]

二、可以与卷积产生互补

图上表明,卷积需要四层才可以看到图像的一部分,但是Transformer可以只提取一层,便可以提取全局信息

举例:

Non-local networks(CVPR 2018)

基础框架采用ResNet,然后参差快中添加一层attention模块,即可提升效能

但是存在问题,即模型退化问题

该模型期望不同的query可以被不同组的key影响

如图,图中车辆应该被旁边的道路影响,消防栓应该被旁边的道路像素所影响

但是,实际使用的时候,会存在不同的query被同一组的key影响

如图,图中的车被车辆自身和消防栓所影响,而消防栓也是被车和消防栓自身所影响。

另外一个例子:

图中,左边Object Detection上下图的两个query点距离很远,但是生成的注意力图一模一样,没有任何改变

Disentangled Non-local networks(ECCV2020)

解决了该模型退化问题

三、更强的动态计算能力

更强的动态计算能力,带来的就是更加强大的建模和表示能力

举例:

如图,图中的三个鸟的鸟头有不同的形态,卷积层在处理该特征的时候,是把三个形态输出为了3个通道,然后对其进行匹配。

但是Transformer层在处理该信息时,可以看做为1个通道内部的不同组合

应用1:Local relation networks

用Transformer做backbone

如图,将ResNet结构中卷积层的部分改变成为一个Local Relation层(受限自注意力机制去模仿卷积提取局部性信息)

但是,存在一个计算效率下降的实际问题

因为,它在处理图片的时候,还是像卷积一样扫描图片,导致不同的query使用了不同的key set,如图

应用2:Vision Transformer(ViT)

by Google Brain 2020.10

解决了前者模型的计算效率问题。如图所示

该模型比ResNet50效率还要高50%

究其原因,在于其query访问的key set是共享的

它是直接将图片切割成相同大小的块,做全局Transformer

应用3:Swin Transformer

Swin Transformer在处理图片,再次修改图片的处理模式。首先将图片切割用Transformer提取局部信息,然后再逐步提取,提取三层得到全局信息。类似于将卷积和Transformer结合在一起。

该模式好处在于不光像Local relation network一样提取了局部信息,也保留了ViT的共享key set的优点。如图

层次性

处理不同尺度的目标的问题

最开始使用4x4的patch,逐渐深了以后再将上一层的patch合并,类似于ResNet的层次化表达

非重叠窗口的局部性

也证明了对视觉信号有高度相关性的模型建模是有益的

线性复杂度随着图片分辨率大小的提升,复杂度由O(n²)降低为O(n)

采用了不重叠的窗口,可以共享key set,用于降低显存占用,提升处理速度

允许跨窗口的连接

在第一层采用如图中Layer1中的分割法设置窗口,在第二层则对窗口进行平移(用于构造不同patch之间的联系)

其效果甚至比Local relation network中滑动窗口的方法更好

部分的平移不变性

通过在计算注意力时,增加一个偏移(Bias)来保证平移不变性

但是,物体平移的尺度不能过大,这是由于之前设置的跨窗口链接方法所限制的

Swin Transformer的架构展示

不改变原有的ResNet中的head

Swin Transformer应用效果:

目标检测

语义分割

视频行为识别

Swin Transformer主流的视频行为识别的排行榜单里比较其他主流的方法模型小3倍,所需要的预训练数据量也小20倍,

相比于之前最好的方法ViViT,效果提升能达到3个点左右

自监督学习

Transformer可以和自监督学习结合。因为自监督学习需要对图像自编码更多的信息,需要更强大的表示能力,而Transformer表示能力比CNN更加强大,所以可以更好得与自监督学习融合。

相应的模型,SSL-Swin(MoBY)

只是简单的结合Moco和BYOL,并调整了参数即可达到更高的效能

四、更好得结合视觉与语言

视觉和语言处理中采用相同的模态处理同样问题,可以更好的连接与处理

五、可以扩展到更大的尺度和更庞大的数据

2021已被google团队证明,如图所示

Q&A:

Q:vision transformer训练需要多大规模的数据,能否在小数据集上进行训练?

A:得到一个一般的结果,是可以在小数据集上训练的。如果想要得到非常好的效果,需要在一个更大的数据集上进行预训练。(比用CNN预训练效果也 更好)

Q:Swin Transformer的Layer1和Layer2的窗口跨分是固定的吗?

A:是固定的9个窗口,但是到下个Layer的时候,就会平移半个窗口大小。虽然窗口数量更多了,从4个变成了9个,但是通过模型内部的优化,实际计算量和4个窗口是大致相同的。

Q:有的Transformer里还是用了一部分的卷积,为什么?

A:因为对于中小量的数据集而言,需要加入卷积提供一些先验信息,但是数据集大了以后,就可以不需要卷积,直接使用Transformer。

Q:Vision Transformer是否有和CNN结合呢,例如用CNN去提取一些特征,再用Transformer。

A:更大数据量的数据集(>1K)情况下的预训练,可以直接使用Transformer,确实提供了更强大的表征能力。关于Transformer和CNN结合,已经有成果证明在不经过预训练的情况下,可以达到很好的效果。

Q:在图像生成领域,Transformer可否解决生成高分辨率图片的问题?

A:目前主要生成图片的一个是VAE,一个是GAN。VAE目前生成的图片分辨率较低(64x64),GAN可以生成更高一些的分辨率。原因在于VQ-VAE的速度很慢,需要一个patch一个patch的生成,且没办法并行计算。

Q:为什么说Transformer的第四个优点可以更好的连接视觉和语言?

A:因为如果使用不同的结构,例如视觉使用CNN,语言使用Transformer,则会存在优化器适配问题。同一个优化器无法适配两种结构。除此之外,处理图像和语言可以使用同一套思路,可以视觉和语言共享一个token,达到更好的建模效果。

Q:请问Transformer在视觉中对物体与物体之间的建模和图神经网络中的结点与结点的关系建模是否有相关性?如何用Transformer将物体与物体之间的建模效果发挥得更好?

A:1个相似性,2个不同。相似性而言,都是把结点刻画成一个图。区别在于图神经网络会带有一定的先验信息,它不是全不连接的,但是Transformer是不带先验信息得去学习结点与结点的连接。第二在计算关系的部分会有所区别,Transformer是用验证的方法去进行建模,而图神经网络不是,Transformer有更通用的能力。(也可以看做Transformer是一个特殊的图网络)