目录
摘要
该篇论文主要着手解决的问题是,由于一些场景中由于涉及隐私或商业用途而无法获得足够多的有标签图像,导致模型训练效果较差。而前人所给出的方法(如UDA)又大多依赖于足够多的有标记数据来适应这样一个转化的过程,而这又是一个非常消耗时间与人力的事情。因此作者团队采用SFDA方法,将过往复杂模型利用并转换到自己的模型中,只使用大量无标记数据,并且不依赖于大量Souce Model中的Data也可以自训练出较好的结果。
引言
如今,语义分割已经成为了计算机视觉中一个十分关键的任务。它致力于将图像中的某个像素或部分分类到已有标签之中。
然而,一个成功的模型往往离不开大量的有标注的数据集,这往往会损耗大量的人力物力财力。因此,现在比较直观的解决方案是将一个训练好的模型迁移到Target Domain之中。然而,由于source domain与target domain分布并不一致,很容易导致在转换时出现的偏差较大。
而Unsupervised domain adaptation(UDA)被用来解决这个问题。它只需要使用一个训练好的源模型和目标域的无标记数据便可以实现目标模型的训练。只要源模型训练的足够好,并且有标注的源数据足够多,结果往往就能十分精确。
然而,对于一些关键性的领域,比如自动驾驶,源域的数据集由于涉及商业或隐私问题无法获取,只有无标注的目标域数据可以获得。由于缺乏源域数据集的监督以及不确定的伪标签(pseudo-labels,如图),因此这些UDA方法均无法彻底解决这些问题。
虽然最近,在图像分类领域,一个基于小数量的无源UDA方法已经被用来解决相似的问题。但图像分类与语义分割是不相同的两个问题。。如上图,一个包含着大量类的图像被伪标签改变了分布方式,但是很显然,一个语义分割的分类很大程度上依赖着群聚,一旦将其打乱将影响最终的结果。因此作者们考虑使用一种名为data-free knowledge distillation(无数据知识蒸馏)技术来解释这个问题。
因此,本文的主要贡献有以下三点:
- 本文使得这个新的结合了Knowledge Transfer 与 Model Adaptation 的 SFDA 框架不需要任何源数据或者目标集的有标注数据
- 本文使用了全新的双注意力蒸馏技术,并将它专门用在上下文信息的分割、传递与保留之中。而域内的像素级的自监督模型利用像素级的目标域知识工作。
- 本文作者证明了他们的框架在“合成到真实的”和跨城市的语义分割场景中均是奏效的。特别指出,在无源数据的条件下,它甚至在与最先进的源驱动UDA方法比较时具有一定竞争力。
Knowledge Distillation(知识蒸馏)
蒸馏是一种热力学的分离工艺,它利用混合液体或液-固体系中各组分沸点不同,使低沸点组分蒸发,再冷凝以分离整个组分的单元操作过程,是蒸发和冷凝两种单元操作的联合。当它被引入到CV之中时,他便作为一种压缩与提纯的方法而存在。
由于实验已经证明,越深的神经网络,其具备的开发深度越强,准确率越高。因此,如今的网络为了提升精度,层数越来越深,而这样的大小,也不利于实际应用。因此,蒸馏被作为一种Method,将大模型中训练好的函数,Copy到一个足够小的模型中,让大模型监督小模型学习,让工业实际使用时更加方便。
上图将蒸馏过程分成了两个模型。一个是Teacher Model(已经训练完成了),一个是Student Model(将要被训练),将学习完成的大模型整合到小模型之中去的过程,就被称为知识蒸馏。
那么它究竟为什么被称为蒸馏呢?
众所周知,对于一个有标签的图片,比如下图
我们只能得知它是一只猫,而不是一只狗。但当我们用训练好的模型的输出结果来训练另一个模型时,它将会告诉另一个模型,它最可能是一只猫,不太可能是一只狗,但绝不可能是一个飞机。它将包含更多的信息。
在传统的分类中,往往采取Hard-Target来让输出向量更接近于one-hot code。但是,在蒸馏过程中更倾向于让它表现的更加“软化",而正确答案只是其中概率更大的那个。这种方法,被称为Soft-target
如上图,这样的话,经过蒸馏,一次训练可以带给小模型的信息远远超过一个有标签的图形。不仅收敛速度更快,拟合效果也更好。
- 学生网络不仅仅拟合教师网络的soft-target,而且拟合隐藏层的输出(教师抽取的特征);
- 第一阶段让学生网络去学习教师网络的隐藏层输出(特征迁移);
- 第二阶段使用soft-targets来训练学生网络(输出迁移)
在蒸馏操作中,温度的变化是至关重要的一环。而在知识蒸馏中,”温度“也是其中核心的核心。
如上图,温度T有这几个特点:
- 传统的SoftMax是T=1的特例。当T<1时,概率会比平常分布的更陡峭,即最大值将会以更极端的方式表现出来。也就是说,随着T接近于0,最终的输出向量,将会以更接近Hard-Target的形式输出。
- 随着T的增大,T的大小差距会越来越平缓,信息熵会越来越大。当T趋于∞,SoftMax的分布将变为平均分布。
-不管温度 T怎么取值,Soft-target都有忽略相对较小的Pi(Teacher模型在温度为T时SoftMax输出在第i类上的值)携带的信息的倾向。
温度的高低将决定Student Model对于负标签(也就是较小概率的Class)的关注程度。当“温度”较低时,对负标签的关注,尤其是那些显著低于平均值的负标签的关注较少;而温度较高时,负标签相关的值会相对增大,Student模型会相对更多地关注到负标签。
那么,我们为什么要使用Knowledge Distillation技术呢?
-
提升模型精度
这是一个十分经常出现的问题,当使用一个参数较少的模型训练时,结果往往是不够准确的。很可能达不到想要的结果。
那么,可以采取的办法便是先用一个大模型训练至满意,再用Knowledge Distillation技术把这个大模型整合到源模型中,提升精度。 -
降低模型时延,压缩网络参数
大模型往往参数过多,容易导致计算速度下降等等问题。那么将其迁移到小模型中便是一个比较好的办法。 -
标签之间的域迁移
在工业运用中,当面临需要同时判断多个类,但市面上并没有全部涉及的模型时。可以考虑将这个Target class的子集模型寻找出来,并将多个模型使用Knowledge Distillation技术整合在一个模型之中,这往往能省下不少力气。
这个技术在实际运用中极大的减少了后续模型的构建与训练时间,因为它帮助student model限定了训练范围(如下图)。
Transformer
Transformer是2017年提出的一种模型架构,在当年全面击败了SOTA,第一次被提出是在论文Attention Is All You Need之中。
那么,为什么要在这里说这个模型呢,因为它与Attention(注意力)机制有很大关系。
在这个模型之前,attention往往与RNNs或者CNN共同使用,但往往面临着无法并行的问题,或者占内存过大的问题。因此该模型完全依赖于Attention构架变得非常精妙。
并且,由于限定输入大小,所有文字(该论文主要举例为翻译工作)均被embedded为一定大小的向量,这直接导致了信息的损失,并且在生成文本时,生成每个词所用到的语义向量都是一样的,这显然有些过于简单。因此该模型引入了注意力机制,使得模型有选择地增大或减少某个字词的关注度,动态的分布其注意力,以图实现文字的对齐以及并行。
一般的注意力模型的公式为
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
S
o
f
t
M
a
x
(
Q
K
T
d
k
)
V
Attention(Q,K,V)=SoftMax\left(\frac{QK^T}{\sqrt{d_k}}\right)V
Attention(Q,K,V)=SoftMax(dkQKT)V
但在本文中,它使用了Multi-Head self-attention,
M
u
l
t
i
H
e
a
d
=
C
o
n
c
a
t
(
h
e
a
d
1
,
⋯
,
h
e
a
d
n
)
W
0
MultiHead=Concat({\rm head}_1,\cdots,{\rm head}_n)W^0
MultiHead=Concat(head1,⋯,headn)W0
h
e
a
d
i
=
A
t
t
e
n
t
i
o
n
(
Q
W
i
Q
,
K
W
i
K
,
V
W
i
V
)
{\rm head}_i=Attention(QW_i^Q,KW_i^K,VW_i^V)
headi=Attention(QWiQ,KWiK,VWiV)
通过多头注意力,模型能够获得多个空间下的位置信息。
实际原理
对于The animal didn’t cross the street because it was too tired这样一句话。我们想要知道it指代的是animal还是street,那么对于注意力模型,它就要对整句话的每个单词进行打分,这个分值将表示它对于该句话中的其他部分关联度有多高,如果很高,那么主要聚焦于那些上。
再将其取平均后使用softmax取概率值(目的可能是为了消除小概率的影响),并用概率值乘以值向量并求和输出到后续。
那么设置多个QKV的意义在哪呢?由于在打分时单个矩阵很可能被单词它本身所支配(例如it聚焦于it)这将是无意义的。那么设置多个头,就可以让注意力有效的聚焦于更多的地方,使语义更完备。
而这就是最终的结果,不同颜色表示不同的头,颜色深度表示该头对于这个词的注意力强度。
Dual Attention(双注意力机制)
注意力,是人类长期进化以来逐渐形成的一种:利用有限的算力资源,得到更多有用信息的思维方式。
如果说,上述是对语言翻译的总结的话,那么下面就是对图像处理上的注意力运用。
在计算机视觉领域,给予计算机注意力的概念,就是要求计算机能够自主的分辨信息的相关性,并自觉“聚焦”于Critical 信息,屏蔽无关信息。
那么它究竟是如何实现的呢?
我们一般将注意力分为:强注意力(0/1)与软注意力(0~1)
- 强注意力,将自己认为重要的图形设为1,而不重要设为0。我们一般将其用为图像剪裁(image cropping)。
- 软注意力,根据重要程度,将图片每个像素点设为0~1内某一数值,突出其中重要性。
其中,针对其所关注的域,它又被分为若干种:
1.空间域(spatial domain)
2.通道域(channel domain)
3.层域(layer domain)
4.混合域(mixed domain)
Spatial Transformer Networks(空间域注意力)
spatial transformer其实就是注意力机制的实现,因为训练出的spatial transformer能够找出图片信息中需要被关注的区域,同时这个transformer又能够具有旋转、缩放变换的功能,这样图片局部的重要信息能够通过变换而被框盒提取出来。
如上图中,a表示原始图像,b表示注意力,c表示实际处理后的图像。可以看到,在输入时,7我们未进行操作,5我们进行了一些旋转,6我们加了一些噪音。在空间转换器(spatial transformer)模块的帮助下,我们先选定了主体,剪裁后分别对7进行了放大,5进行了旋转,6忽略了噪音。
Channel Attention(通道域注意力)
这个方法的核心时让模型自动根据Loss去选择每个feature map的权重,让它在学习中不断更迭出最好的权重,达到增强有效通道,抑制无效通道的作用。
它(SENET)经过三个主要过程:挤压(squeeze),激励(excitation),以及scale(attention)。
Dual Attention Network(通道域+空间域)
通过分别对特征图进行通道域域空间域的注意力提取,得出更好的结果。
将两个处理方式结合在一起将得到更好结果。
Related Work
本文再次指出,如今现有的UDA方法均需要大量的有标注的源域数据,但实际上,这几乎是不可能的。而本文是第一个使用无源域无监督自适应方法去解决这个问题的。
Methodology
本文的基本思路是使用Teacher Model去限定Student Model的学习范围,但由于考虑到没有源数据而导致Teacher Model的边界模糊不清,所以在限定Student Model的同时也必须对前者不断进行微调。
并且通过高斯分布不断生成伪样本,去估计伪样本的分布情况。并且本文还特别指出,他们在生成伪样本的时候采用了一种Generative Adversarial knowledge Transfer Mechanism(生成对抗知识转化模型)化简了这个步骤。
Adversarial Network(对抗网络)
对抗网络分为生成模型G和判别模型D,由于笔者还没有学到啊,后面学到了会详细讲这一部分。但我们可以简单的理解为G为一个造假币的工厂,D为一个全是新手的打假币组织。G最初只能造出来布满噪音的废纸,而D最初也只能大致的分辨出一些数据。通过一边向D中输入G的假币和真正的货币来让D不断学习鉴别能力越来越强,而G也通过不断被抓提升自己的造假能力。最终,D可以判断噪音与真币。而G能造出D分辨不出来的假币(其实就已经是真币了)。
总结
本文详细的论述了自己使用无源域数据模型取得的卓越成绩。但由于笔者如今基础知识尚且不足,因此部分数学公式并未展开叙述,希望在后续的学习中能够更加注意数学知识上的积累。共勉!