阅读:6410回复:0
迁移学习之域漂移问题的对抗学习摘要 域适应在语义分割中的关键问题在于 减少域漂移(domain shift)。一般,我们对齐两个域之间的分布来解决这个关键问题。问题是,这种全局性的对齐两个域的分布,并没有考虑类别级别的对齐。这种忽略会造成:目标域中 原本已经对齐的类别,经过训练后,映射到错误的类别。 基于以上问题,作者提出类别级别的对抗网络,目标是在全局对齐的过程中,保持局部的语义不变性 介绍 语义分割是指在一张图片上给每个像素都打上类别标签。要实现这样的模型,人工标注成本太高。为了省点钱,我们采用合成数据集训练。比如用游戏中的街景数据集训练街景的语义分割模型。问题在于,该模型在真实场景中并不好使。所以采用域适应的策略,解决标注数据缺少的问题。 域适应的关键问题在于减少源域和目标域之间的差异。目前主要有两类方法:
当生成器网络能完美地骗过判别器网络时,两个域的全局边缘分布几乎完全对齐了。但是此时,忽略了局部的联合分布差异。目标域有些类别的特征分布已经对齐了。但是最小化对抗损失函数之后,会将该特征映射到错误的类别。 作者为了解决该问题提出了一下算法: 算法 问题背景 源域:数据X_S,标签Y_S 目标域:数据X_T,无标签 目标:训练一个模型G,能正确分类目标域的数据 网络架构 整个网络由生成器G 和判别器D组成。G是一个由任意FCN为基础的语义分割网络。D是一个以CNN为基础的二分类网络。其中G又可以细分为:特征提取器E和两个分类器C_1 , C_2。结构示意图如图片所示。 相关工作 论文采用了两种思想:对抗(GAN)和协同训练(co-traning) GAN GAN在迁移学习中的应用形式:训练生成器和判别器。生成器用来产生域不变的特征。判别器用来判别 特征属于哪个域. 本文中,生成器是G,判别器是D 协同训练(co-traning) 协同训练是一种半监督模型,针对标注数据很少的情况。协同训练的基本假设:数据有两种特征表达,并且这两种表达都可以对数据进行分类。即可以从两个不同的视角(view)看待数据。 假设数据有两种视角:(x1,y1),(x2,y2),其中x是特征,y是标签。
分类器C_1预测的语义分割图记为p1,分类器C_2预测的语义分割图记为p2。最终的语义分割图记为p=p1+p2 训练流程 在训练中,一共包含三个 loss:语义损失函数 (segmentation loss),差异损失函数 (discrepancy loss),自适应的对抗损失函数 (self-adaptive adversarial loss) 首先是,源域图片经过生成器G,其中包括特征提取器E,和两个分类器C_1 , C_2,得到预测结果——语义分割图p。这里产生一个语义损失函数 (segmentation loss): 然后,我们考虑标准的协同训练流程。为了得到同一张图片的两种表达,我们需要对分类器C_1 , C_2的参数进行约束。 特征提取器E,提取所需的所有参数,而两个分类器分别选取一部分,进行像素分类。为了使得两个分类器选取的特征尽可能不一样,这里采用最小化卷积层参数的余弦相似度函数,即差异损失函数 ( discrepancy loss) 其中,w是分类器的卷积层的参数展开 最后考虑对抗过程。源域和目标域的图像经过整个网络,产生一个自适应的对抗损失函数 所以最终的训练损失函数为 损失函数分析 在网络中,C_1 , C_2的作用是:
语义损失函数 (segmentation loss)和自适应的对抗损失函数 (self-adaptive adversarial loss)的作用是第二项 本文最大的贡献点在于:在传统的对抗loss中加入了自适应的权重 如果这一项很大,则表明:该类别的特征在两个域上面并没有对齐。所以,我们鼓励生成器去忽悠判别器,从而减小该类别两个域之间的差异 如果这一项很小,则表明:该类别特征在两个域上面已经对齐了,我们不需要对生成器做过大的修改。 从而我们达到了类别级别的特征对齐 实验 |
|