Bidirectional Learning for Domain Adaptation of Semantic Segmentation详读

时间:2024-03-13 16:39:12

Bidirectional Learning for Domain Adaptation of Semantic Segmentation

简介

语义分割在深度网络的驱使下发展迅速,但是大规模的数据标注太过昂贵。虽然,近期的工作可以通过生成式网络使计算机生成带标注的比较逼真的图像,但是这种方式生成的图像存在域不匹配的问题,即计算机生成的图像(源域)和测试时使用的图像(目标域)之间的差异。域适应就是着重解决这一问题的方法。在更极端的情况下,目标域甚至没有可以使用的标注标签,这种情况下带标注的数据生成问题称为无监督的域适应问题。
传统的域适应问题通过减小源域和目标域之间的均值或者方差等度量标准,将源域的数据进行一定程度的变换,映射到目标域。但这种方法很受限,且在语义分割任务中不容易实现。由于cycle gan的提出,图像到图像的域迁移问题的取得发展。具体的做法是:定义两个自网络,一个为域变换子网络,另一个为分割自网络。先使用cycle gan等域变换子网络将源域图像映射到目标域,将其和原始目标域的图像一同放入分割子网络中,对输出的特征图使用鉴别器判别,判别结果反映了域变换子网络是否逼近目标域的分布,从而进一步优化域变换子网络向目标域靠近,从而减小域差异。因此,图像的域变换子网络直接影响了整个过程以及最后分割子网络的性能。本文作者在这些工作的基础上,改进域变换子网络的学习过程,将原本的单向学习转化为双向,两个方向相互促进,进一步减少域差异。
作者提出在前向传递过程(由域变换子网络到分割网络的过程)中,先使用自监督训练分割网络。自监督的学习过程为:先使用域变换子网络生成的带标签的数据训练分割子网络,然后将分割子网络对目标域数据的分割结果中置信度高的像素块也加入到训练分割子网络的过程中,进行有监督学习,提升分割网络结果,这个过程并未使用目标域的标签,所以称为自监督。自监督有助于分割子网络实现域适应,从而有利于反向过程中域变换网络的学习。在反向过程中(由分割子网络到域变换子网络的过程),变换网络随着分割网络的学习进行更新会取得更好的结果,因此,作者提出了一个新型损失 perceptual loss,约束域经过变换网络后再分割的语义一致性(希望经过训练后的分割网络无论对于源域数据还是经变换后的数据,分割的结果差异不大,因为仅存在视觉上的变化)。域变换网络的学习同样也有助于前向过程的学习。
综上:文章有三个主要创新点:
1.提出了一个双向学习系统,是域变换网络和分割网络的闭环学习过程
2.提出自监督学习算法,在分割网络的特征级别对齐源域和目标域
3.引入了perceptual loss,监督域变换网络学习。

具体方法

1.单向学习和双向学习的对比:
Bidirectional Learning for Domain Adaptation of Semantic Segmentation详读
前向过程(分割网络的学习):先设定一系列的表示:S是源域的数据(网络合成的),标签为Ys,T是目标域数据(真实的测试数据),无标签。F是域变换子网络的函数映射,M是分割子网络的函数便是。S’ = F(S)是源域数据经过变换子网络后的结果,T’ =F^(-1)(T)是目标域数据经过反域变换的结果。则前向过程主要是将源域数据S放入域变换网络得到S’和其标签Ys,将有标签的S’和无标签的T放入分割网络训练。这个过程通过两个损失来约束分割子网络,如(1)所示。第一项的具体含义是,S经过域变换子网络F后的S’和原目标域数据T一同输入到分割子网络后,使用鉴别器对网络输出的两个特征图进行判别,希望对两个输出的特征图越接近越好(结果接近程度反映了分割网络向目标域数据的倾斜程度),l_adv损失在分割网络的特征层面上约束分割网络的判别能力向目标域数据偏移。第二项l_seg的具体含义是常规的分割损失。
Bidirectional Learning for Domain Adaptation of Semantic Segmentation详读
反向过程(域变换网络的学习):反向的过程的约束主要是添加了l_per损失,在(2)中是第三项,具体操作是将经过域变换S’和未经过域变换的数据S在分割网络中的输出结果作一致性损失,含义是希望对于S和S‘,S和S‘之间尽管存在视觉上差异,但是对于训练好的分割子网络对其输出的语义标签之间应该依旧存在一致性。第一项l_gan是在域变换网络后增加鉴别器,监督生成器生成的数据向目标域偏移。第二项l_recon是cycle gan中的重构损失,即希望变换的过程是可以重构的。
Bidirectional Learning for Domain Adaptation of Semantic Segmentation详读
2.自监督学习
自监督学习主要被添加到前向过程中,用来进一步提升分割网络M的性能。原始分割网络训练过程并没有使用带标签目标域数据进行有监督训练。对目标域数据进行有监督训练可以更快的帮助分割网络对目标域数据进行拟合,因此使用添加伪标签的做法,将置信度高的测试数据的分割结果加入到训练分割网络的过程。因此上述的(1)增加了自监督学习后修改为(3):
Bidirectional Learning for Domain Adaptation of Semantic Segmentation详读
添加了自监督学习后网络对数据的拟合过程图的前后对比:
Bidirectional Learning for Domain Adaptation of Semantic Segmentation详读
(a)图的含义是不使用自监督学习,仅通过l_seg和l_adv对网络进行约束,分割网络逐渐可以拟合一部分的目标域数据。(b)图的含义是使用自监督学习,(b)图第二步是选取置信度高的目标域数据帮助训练分割网络的过程,经过自监督学习对分割网络来说很容易学习到目标域中的一部分数据,令分割网络对这部分数据拟合,随着这部分数据的增步增加,理想情况如图(b)中的第三步。
网络的整体结构:
Bidirectional Learning for Domain Adaptation of Semantic Segmentation详读3.网络的训练过程:
输入是源域数据S和标签Ys,目标域数据T和自监督数据T_ssl(初始为空集),和在源域上训练好的分割网络M,输出即为经过K次双向学习的域变换网络和分割网络。训练过程算法如下表所示,主要包括两个循环,第一个循环是双向学习的过程,第二个循环是自监督学习的过程。
Bidirectional Learning for Domain Adaptation of Semantic Segmentation详读