本文是论文《Weakly Supervised Adversarial Domain Adaptation for Semantic Segmentation in Urban Scenes》的阅读笔记。
在以往的语义分割由于像素级人工标注信息较难获得,并且可能并不准确,所以有些模型采用在生成的数据集上进行训练,然后将训练得到的模型应用在真实数据集上的方法来解决上述问题。但是这种方式的效果并不好。本文据此提出了弱监督的对抗域适应模型。该模型包括三部分,一是物体检测和语义分割模型(DS),用来检测物体并预测分割图;二是像素级的域分类器(PDC),它用来辨别图像特征来自哪个域;三是物体级的域分类器(ODC),它用来辨别物体来自哪个域并对物体类别进行预测。这三部分中,DS可以被看作生成器,PDC和ODC可以看作判别器。
语义分割可以看作是图像分割、物体定位和多物体识别的集合。本文针对的是全城市场景标记。
弱标签指的是图像级或物体级的标签。虽然生成数据集的出现解决了人工标注标签不足的问题,但是在生成图像和真实图像之间存在巨大的domain gap。本文要解决的就是跨模态的语义分割问题。

源域图像需要提供像素级和物体级的标签,而目标域图像只需要提供物体级的标签,目标是预测目标域图像每个像素的标签。
在物体检测和语义分割模型(DS)中,前者可以学习到物体级的特征,并定位物体的 bounding box,后者可以学习到局部特征,并实现像素级的分类。像素级的域分类器(PDC)的输入是分割网络的特征图,输出是源域和目标域图像的每个像素所属的域。物体级的域分类器(ODC)的输入是检测网络的物体特征,输出是物体的分类和域分类。
本文是第一篇用弱监督的方法做跨模态全城市场景标注的。
记号
S:源域,即生成数据域
IS:源域图像
ASpix:源域图像像素级标注
ASobj:源域图像物体级标注
T:目标域,即真实数据域
IT:源域图像
ATobj:源域图像物体级标注

几乎所有的基于深度学习的语义分割是基于FCN的,但是基于FCN的方法聚焦在局部特征,而忽略了大尺度的结构特征。在训练时,源域图像参与整个模型的训练,而目标域图像只参与检测部分的训练。在测试阶段,测试图像只通过分割网络来预测每个像素的得分图。
在物体检测和语义分割模型(DS)中,将FCN-8和SSD-512结合成了一个模型,并且它们的前四个卷积层是共享的,被称作Base Net。SSD-512用作物体检测,FCN-8用作语义分割。
DS模型通过以下损失函数来进行训练:
LDS=Lseg(IS,ASpix)+Ldet(IS,ASobj)+Ldet(IT,ATobj)
其中,Lseg(IS,ASpix)是二维交叉熵损失,Ldet(IS,ASobj) 和Ldet(IT,ATobj) 是MultiBox目标损失。
PDC包括1个卷积层和2个反卷积层,PDC模型的损失如下:
LPDC=−OSseg∈S∑h∈H∑w∈W∑log(p(OSPDC))−OTseg∈T∑h∈H∑w∈W∑log(1−p(OTPDC))
其中OSPDC和OTPDC是源域和目标域图像像素级的分割得分图,p(⋅)是像素级的softmax操作。
PDC模型损失的逆为:
LPDCinv=−OSseg∈S∑h∈H∑w∈W∑log(1−p(OSPDC))−OTseg∈T∑h∈H∑w∈W∑log(p(OTPDC))
然而单独优化以上两个公式容易产生震荡,所以域融合损失为:
L^PDCinv=21(LPDC+LPDCinv)
最终的目标函数为:
minθPDCLPDCminθDSLDS+L^PDCinv
其中θDS和θPDC分别为DS和PDC的参数,DS和PDC交替训练,在训练一者的时候另一者的参数保持不变。
为了从输入图像的特征图中获取精确的物体特征,通常选用ROI Pooling操作。ROI Pooling中的位置信息是通过ground truth来提供的。在ROI Pooling之后,具有相同大小的物体特征被输入到ODC中,在ODC中,每个标签都是采用one-hot编码的向量。
N维one-hot向量YN(c)=[y1,y2,...,yN]定义为:
yi={1,0, if i=c otherwise
其中c为类别,源域中类别为c的物体,会生成一个one-hot向量ASc=Y2N(c)作为其标签。同理,目标域的标签为ATc=Y2N(N+c),ODC的损失为:
LODC=CEL(p(OSODC),ASc)+CEL(p(OTODC),ATc)
其中OSODC和OTODC表示每个物品特征的得分向量,CEL函数是标准交叉熵损失。
同时ODC损失的逆被用来知道SSD-512学习域间不变性特征,源域和目标域标签的逆表示为ASinvc=Y2N(N+c)和ATinvc=Y2N(c),ODC损失的逆为:
LODCinv=CEL(p(OSODC),ASinvc)+CEL(p(OTODC),ATinvc)
为了避免震荡,使用域融合目标函数:
L^ODCinv=21(LODC+LODCinv)
整个模型(DS,PDC,ODC)的训练损失函数如下:
minθPDCLPDCminθODCLODCminθDSLDS+L^PDCinv+L^ODCinv
在训练模型的一个部分时,其他部分的参数保持不变。