【论文笔记】WSAL:基于域适应和生成对抗网络的图像分割模型

本文是论文《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 \mathcal{S} S:源域,即生成数据域

I S I_{\mathcal{S}} IS:源域图像

A S p i x A_{\mathcal{S}}^{pix} ASpix:源域图像像素级标注

A S o b j A_\mathcal{S}^{obj} ASobj:源域图像物体级标注

T \mathcal{T} T:目标域,即真实数据域

I T I_{\mathcal{T}} IT:源域图像

A T o b j A_\mathcal{T}^{obj} ATobj:源域图像物体级标注

在这里插入图片描述

几乎所有的基于深度学习的语义分割是基于FCN的,但是基于FCN的方法聚焦在局部特征,而忽略了大尺度的结构特征。在训练时,源域图像参与整个模型的训练,而目标域图像只参与检测部分的训练。在测试阶段,测试图像只通过分割网络来预测每个像素的得分图。

在物体检测和语义分割模型(DS)中,将FCN-8和SSD-512结合成了一个模型,并且它们的前四个卷积层是共享的,被称作Base Net。SSD-512用作物体检测,FCN-8用作语义分割。

DS模型通过以下损失函数来进行训练:
L D S = L s e g ( I S , A S p i x ) + L d e t ( I S , A S o b j ) + L d e t ( I T , A T o b j ) \begin{aligned} \mathcal{L}_{D S}=& \mathcal{L}_{s e g}\left(I_{\mathcal{S}}, A_{\mathcal{S}}^{p i x}\right) \\ &+\mathcal{L}_{d e t}\left(I_{\mathcal{S}}, A_{\mathcal{S}}^{o b j}\right)+L_{d e t}\left(I_{\mathcal{T}}, A_{\mathcal{T}}^{o b j}\right) \end{aligned} LDS=Lseg(IS,ASpix)+Ldet(IS,ASobj)+Ldet(IT,ATobj)
其中, L s e g ( I S , A S p i x ) \mathcal{L}_{seg}(I_\mathcal{S},A_\mathcal{S}^{pix}) Lseg(IS,ASpix)是二维交叉熵损失, L d e t ( I S , A S o b j ) \mathcal{L}_{det}(I_\mathcal{S},A_\mathcal{S}^{obj}) Ldet(IS,ASobj) L d e t ( I T , A T o b j ) \mathcal{L}_{det}(I_\mathcal{T},A_\mathcal{T}^{obj}) Ldet(IT,ATobj) 是MultiBox目标损失。

PDC包括1个卷积层和2个反卷积层,PDC模型的损失如下:
L P D C = − ∑ O S s e g ∈ S ∑ h ∈ H ∑ w ∈ W log ⁡ ( p ( O S P D C ) ) − ∑ O T s e g ∈ T ∑ h ∈ H ∑ w ∈ W log ⁡ ( 1 − p ( O T P D C ) ) \begin{aligned} \mathcal{L}_{P D C}=&-\sum_{O_{S}^{s e g} \in \mathcal{S}} \sum_{h \in H} \sum_{w \in W} \log \left(p\left(O_{S}^{P D C}\right)\right) \\ &-\sum_{O_{\mathcal{T}}^{s e g} \in \mathcal{T}} \sum_{h \in H} \sum_{w \in W} \log \left(1-p\left(O_{\mathcal{T}}^{P D C}\right)\right) \end{aligned} LPDC=OSsegShHwWlog(p(OSPDC))OTsegThHwWlog(1p(OTPDC))
其中 O S P D C O_\mathcal{S}^{PDC} OSPDC O T P D C O_\mathcal{T}^{PDC} OTPDC是源域和目标域图像像素级的分割得分图, p ( ⋅ ) p(\cdot) p()是像素级的softmax操作。

PDC模型损失的逆为:
L P D C i n v = − ∑ O S s e g ∈ S ∑ h ∈ H ∑ w ∈ W log ⁡ ( 1 − p ( O S P D C ) ) − ∑ O T s e g ∈ T ∑ h ∈ H ∑ w ∈ W log ⁡ ( p ( O T P D C ) ) \begin{aligned} \mathcal{L}_{P D C_{i n v}}=&-\sum_{O_{S}^{s e g} \in \mathcal{S}} \sum_{h \in H} \sum_{w \in W} \log \left(1-p\left(O_{\mathcal{S}}^{P D C}\right)\right) \\ &-\sum_{O_{\mathcal{T}}^{s e g} \in \mathcal{T}} \sum_{h \in H} \sum_{w \in W} \log \left(p\left(O_{\mathcal{T}}^{P D C}\right)\right) \end{aligned} LPDCinv=OSsegShHwWlog(1p(OSPDC))OTsegThHwWlog(p(OTPDC))
然而单独优化以上两个公式容易产生震荡,所以域融合损失为:
L ^ P D C i n v = 1 2 ( L P D C + L P D C i n v ) \hat{\mathcal{L}}_{P D C_{i n v}}=\frac{1}{2}\left(\mathcal{L}_{P D C}+\mathcal{L}_{P D C_{i n v}}\right) L^PDCinv=21(LPDC+LPDCinv)
最终的目标函数为:
min ⁡ θ P D C L P D C min ⁡ θ D S L D S + L ^ P D C i n v \begin{array}{c} \min _{\theta_{P D C}} \mathcal{L}_{P D C} \\ \min _{\theta_{D S}} \quad \mathcal{L}_{D S}+\hat{\mathcal{L}}_{P D C_{i n v}} \end{array} minθPDCLPDCminθDSLDS+L^PDCinv
其中 θ D S \theta_{DS} θDS θ P D C \theta_PDC θPDC分别为DS和PDC的参数,DS和PDC交替训练,在训练一者的时候另一者的参数保持不变。


为了从输入图像的特征图中获取精确的物体特征,通常选用ROI Pooling操作。ROI Pooling中的位置信息是通过ground truth来提供的。在ROI Pooling之后,具有相同大小的物体特征被输入到ODC中,在ODC中,每个标签都是采用one-hot编码的向量。

N维one-hot向量 Y N ( c ) = [ y 1 , y 2 , . . . , y N ] Y_N(c)=[y_1,y_2,...,y_N] YN(c)=[y1,y2,...,yN]定义为:
y i = { 1 ,  if  i = c 0 ,  otherwise  y_{i}=\left\{\begin{array}{ll} 1, & \text { if } i=c \\ 0, & \text { otherwise } \end{array}\right. yi={ 1,0, if i=c otherwise 
其中c为类别,源域中类别为c的物体,会生成一个one-hot向量 A S c = Y 2 N ( c ) A_\mathcal{S}^c=Y_{2N}(c) ASc=Y2N(c)作为其标签。同理,目标域的标签为 A T c = Y 2 N ( N + c ) A_\mathcal{T}^c=Y_{2N}(N+c) ATc=Y2N(N+c),ODC的损失为:
L O D C = C E L ( p ( O S O D C ) , A S c ) + C E L ( p ( O T O D C ) , A T c ) \begin{aligned} \mathcal{L}_{O D C}=& C E L\left(p\left(O_{\mathcal{S}}^{O D C}\right), A_{\mathcal{S}}^{c}\right) \\ &+C E L\left(p\left(O_{\mathcal{T}}^{O D C}\right), A_{\mathcal{T}}^{c}\right) \end{aligned} LODC=CEL(p(OSODC),ASc)+CEL(p(OTODC),ATc)
其中 O S O D C O_\mathcal{S}^{ODC} OSODC O T O D C O_\mathcal{T}^{ODC} OTODC表示每个物品特征的得分向量,CEL函数是标准交叉熵损失。

同时ODC损失的逆被用来知道SSD-512学习域间不变性特征,源域和目标域标签的逆表示为 A S inv c = Y 2 N ( N + c ) A_{\mathcal{S}_{\text {inv}}}^{c}=Y_{2 N}(N+c) ASinvc=Y2N(N+c) A T inv c = Y 2 N ( c ) A_{\mathcal{T}_{\text {inv}}}^{c}=Y_{2 N}(c) ATinvc=Y2N(c),ODC损失的逆为:
L O D C i n v = C E L ( p ( O S O D C ) , A S i n v c ) + C E L ( p ( O T O D C ) , A T i n v c ) \begin{aligned} \mathcal{L}_{O D C_{i n v}}=& C E L\left(p\left(O_{S}^{O D C}\right), A_{\mathcal{S}_{i n v}}^{c}\right) \\ &+C E L\left(p\left(O_{\mathcal{T}}^{O D C}\right), A_{\mathcal{T}_{i n v}}^{c}\right) \end{aligned} LODCinv=CEL(p(OSODC),ASinvc)+CEL(p(OTODC),ATinvc)
为了避免震荡,使用域融合目标函数:
L ^ O D C i n v = 1 2 ( L O D C + L O D C i n v ) \hat{\mathcal{L}}_{O D C_{i n v}}=\frac{1}{2}\left(\mathcal{L}_{O D C}+\mathcal{L}_{O D C_{i n v}}\right) L^ODCinv=21(LODC+LODCinv)
整个模型(DS,PDC,ODC)的训练损失函数如下:
min ⁡ θ P D C L P D C min ⁡ θ O D C L O D C min ⁡ θ D S L D S + L ^ P D C i n v + L ^ O D C i n v \begin{array}{c} \min _{\theta_{P D C}} \quad \mathcal{L}_{P D C} \\ \min _{\theta_{O D C}} \quad \mathcal{L}_{O D C} \\ \min _{\theta_{D S}} \quad \mathcal{L}_{D S}+\hat{\mathcal{L}}_{P D C_{i n v}}+\hat{\mathcal{L}}_{O D C_{i n v}} \end{array} minθPDCLPDCminθODCLODCminθDSLDS+L^PDCinv+L^ODCinv
在训练模型的一个部分时,其他部分的参数保持不变。

猜你喜欢

转载自blog.csdn.net/zuzhiang/article/details/107418380
今日推荐