【背景】
最近研究域自适应语义分割,看到两篇比较好玩的文章。遂记录下来,供今后找点灵感。
【论文描述/动机】
用于语义图像分割的域自适应是非常必要的,因为用像素级标签手动标记大型数据集既昂贵又耗时。现有的域适应技术要么在有限的数据集上工作,要么与监督学习相比产生不那么好的性能。本文提出了一种新的双向学习框架,用于分割的域适应。使用双向学习,图像翻译模型和分割适应模型可以交替学习并相互促进。此外,提出了一种自监督学习算法来学习更好的分割自适应模型,从而改进图像翻译模型。
【论文介绍】
文章先对经典的域自适应方法进行了分析:
1、经典域自适应的做法是利用对抗学习最小化源分布和目标分布之间的一些距离度量(两个常用的度量是一阶和二阶矩)。用这两种常用的距离度量在一些分类任务上取得了很大的性能提升,但是在语义分割任务上表现并不突出。
2、还有一些做法是将两种度量进行了分离,将他们视为两个任务进行。具体做法如下:
2.1、先使用图像到图像的翻译模型将图像从源域翻译到目标域(pix2pix/cycleGAN)
2.2、然后,在分割模型的特征上添加鉴别器,以进一步减小域间隙
当前一步减少了域间隙时,后一步容易学习,可以进一步减少域偏移,但我们知道分割模型非常依赖于图像到图像的翻译质量。一旦图像到图像的翻译失败或者效果不那么明显,在接下来的阶段就无法弥补了。
为解决上述提及的各方面存在的问题,本文用一种Bidirectional Learning trick,巧妙地缓解了这些问题。并引入一种自学习策略(SSL),应用于双向学习的感知损失,进一步提升了网络表现。
【双向学习/Bidirectional Learning】
上文我们也介绍到,现阶段分离两种度量视为两类任务并顺序执行。一、用图像翻译成图像,初步缩减源域与目标域的域隔阂。二、将翻译后的源域图像以及目标域图像输入一个经典的域自适应语义分割网络。计算其对抗损失,分割损失并最小化它们。从宏观的角度上我们可以抽象成文章中提及的顺序学习。
分析中也提及到,这种学习模式中M(传统的域自适应模型)极度依赖来自F(图像翻译模型)的结果,如果F产生的结果表现并不好,那么M所产生的效果也不好。
于是作者试想,能否添加一条数据反馈M->F达到双向制约的目的?最终的双向学习模型如下:
在F->M方向上作者加入了一些tricks。这个过程中作者提出了一种自监督学习方法,具体做法就是在网络训练过程中,对于目标域数据(真实数据)输送至网络后会产生结果,作者设置了一个阈值,将高置信度的结果近似为Ground-Truth结果,而排除低近置信度结果,将这些高置信度结果用以更新分割网络模型。这样做,类似于半监督模型,使用伪标签改善了M的表现,同时在接下来的M->F反馈中也能起到更好地感知作用。
再M->F方向上,模型通过分段式迭代改进,引入了一种新的感知损失,在像素级上对齐分割图像与翻译结果之间的语义一致性,从而搭建出M->F之间的桥梁,利用翻译模型中的约束,可以进一步减小翻译图像和真实数据集(目标)之间的视觉外观(例如,照明、对象纹理)的差距。
【模型细节】
我们从大局上了解了整个框架的数据流向,现在从细节上对模型进行叙述。
在F->M方向上,与一些经典的顺序网络一样。首先用源域图像
对于F的模型,我们从M->F方向上重新设计其损失(与图像翻译网络适配)。其损失计算如下:
为了确保图像翻译图像的一致性,这三个损失是同时计算的。GAN网络损失强制对齐
重建损失:
【自监督学习/SSL】
在F->M方向上,如果标签对于源域和目标域都涵盖(监督学习),那么计算其损失并最小化就可以得到一个比较理想的模型,但是在域自适应领域中,目标域的标签是不具备的。因此我们引入自监督学习方法(已经在半监督领域得到应用)进一步增强模型M的性能。其具体做法如下:
在经过一定批次的训练后,我们会获得源域
其中
大体意思就是,第一步我们利用传统的域自适应模型已经对齐了一部分图像特征,从第二部分我们将已经对齐得不错的图像特征剔除,再进一步利用伪标签将剩下未对齐部分的特征对齐到源域上。其算法步骤如下:
【网络架构和损失函数】
如图所示,整个网络框架由两部分组成:图像翻译模块,域自适应分割模块。
在训练图像翻译模块过后,
其中
如图3所示,感知损失联系了翻译模型和分段适应模型。当我们学习翻译模型的感知损失时,我们不是只保持
同理
在分段自适应模型训练,需要带有损失的对抗性学习和带有损失的自我监督学习。对于对抗性学习,我们添加了一个鉴别器来减少上图所示的源概率和目标概率之间的差异。
分割损失直接应用交叉熵损失,源域的分割损失定义如下:
于目标域图像
【总结】
这篇文章的思路很有意思,双向学习思路也很新颖,值得细品。