原文链接 :点击下载
语义分割领域,使用的方法发展:人工标注数据 -> 游戏引擎合成数据 -> UDA(无监督域自适应) -> …,但是这些方法都考虑的是源域与目标域之间的分布差异问题(inter-domain gap),然而目标域数据之间的分布差异问题(intra-domain gap)缺少关注。
该文提出的方法是将域间与域内分布差异联合考虑的一种方法。
图一展示了源域与目标域的适应,但是不同的图像基于同一个模型会产生预测差异较大的结果,对应于图中noisy map和clean map,将这种差异称为域内差异(intra-domain gap)。
下面来展示一下,如何将这两个分布差异联合起来考虑。
(a)域间自适应阶段
(b)熵排序过程
(c)域内自适应阶段
Source Images 经过生成器 G i n t e r G_{inter} Ginter 会得到对应的分割预测图 Y s Y_s Ys,与Source Labels 进行交叉熵损失 L i n t e r s e g L^{seg}_{inter} Linterseg 计算为Eq.1
Target Images 经过 G i n t e r G_{inter} Ginter 也会得到对应的 Target Predictions
G i n t e r G_{inter} Ginter还可以 对Source Images 和 Target Images 进行熵 I I I 计算,对应Eq.2,输出的熵 I I I 输入到判别器 D i n t e r D_{inter} Dinter 中,对熵图进行域标签预测。
生成器 G G G 要尽可能的欺骗 D D D ,使 D D D 以为输入的是真;判别器 D D D 要尽可能的判别输入是假。所以 G G G 和 D D D 之间存在一种矛盾关系,即对抗学习。
通过优化 Source Images 和 Target Images 之间熵值的关系 L i n t e r a d v L^{adv}_{inter} Linteradv,即缩小了域间差距。对应Eq.3
目标数据之间会存在域内差距,一种简单的解决方案是将目标域分解为较小的子域,现利用熵图来确定目标预测的置信度,并进行排名。
熵排序公式对应Eq.4,将排序好的熵值分割为 easy 和 hard 两个子域,其中 easy split 占总体的 λ \lambda λ 。相应的 Target prediction 也分成了 easy 和 hard 两个子域。
该阶段其实和(a)部分差不多。只不过 Source Images 有对应的 Source Labels,现在 Easy Split 没有对应的标签,用 G i n t e r G_{inter} Ginter 先对 Easy Split 生成伪标签,然后再将 Easy Split 输入 G i n t r a G_{intra} Gintra 生成分割预测图并与伪标签进行交叉熵 L i n t r a s e g L^{seg}_{intra} Lintraseg 计算,对应Eq.5
将 Hard Split 和 Easy Split 输入到 G i n t e r G_{inter} Ginter 进行熵图计算,将输出的熵图输入到 D i n t r a D_{intra} Dintra 进行域标签预测。 G i n t e r G_{inter} Ginter 和 D i n t r a D_{intra} Dintra 也是一种对抗学习,优化Eq.6对应缩小 Hard Split 和 Easy Split 连个域的域间差距,也就是 Target Images 的域内差距。
现在已完成了三个阶段的过程,将三个阶段的涉及到的损失 L L L 加起来得到总的损失函数,对应Eq.7,优化Eq.7也就意味寻找最优的生成器 G G G 和 判别器 D D D ,对应Eq.8
Table.1 展示了该方法在三个合成数据上的实验效果,总的 mIou 都是比其他的方法要好的,但是具体类别的预测结果可能表现不佳。
Table.2 展示了超参数 λ \lambda λ 如何选择可带来最佳的 mIoU提升,结果显示为0.67( 2 3 \frac{2}{3} 32)