DG-Net++快速理解

Joint Disentangling and Adaptation for Cross-Domain Person Re-Identification

我以为我懂了,看了模型图发现还是高估了自己。


论文快速理解

论文地址:https://arxiv.org/pdf/2007.10315.pdf
代码地址:https://github.com/NVlabs/DG-Net-PP


这篇论文是在DG-Net上面的扩展,主要解决的是跨域问题。用到了unsupervised domain adaptation无监督的域适应,同时使用了有监督的带标签的来自source domain和无监督的不带标签的target domain的数据。因此设计的核心思想是:align the feature distribution。本身来自不同域的数据可能在某些地方差距很大,具体到ReID问题上,这些差异表现在:季节、背景、视角、光照等。所以需要对齐两类数据的分布,从而提高模型复用效果。

以往的常用方法主要可以分为两大类:

  1. 在input level层面的,比如使用GAN进行风格转换。
  2. 在feature level层面的,比如self-training和distribution distance minimization等。

主要还是减少不同域的数据集的差异。

但是作者认为现有的方法都存在一个问题,就是在同时包含了id相关性和id相关的特征空间上完成adaptation,这个混杂的特征空间反而会削弱最终的效果。

所以作者提出解耦特征空间分成id相关和id不相关的部分,然后在id相关的部分进行适应。两个部分的效果是可以相互促进激励的。

论文主要包括以下三个贡献

  1. 用于无监督跨域学习的联合框架,并且能对特征进行解耦。
  2. 引入跨域的cycle-consistency来实现目标的解耦效果。
  3. 解耦过程和适应过程是co-designed的。

DG-Net++结成了DG-Net中的两个appearance encoder和structure encoder,但是解决的是不同的问题:

  1. DG-Net++解决的是无监督跨域问题。
  2. DG-Net++在无监督情况下进行了对id相关和非相关特征的解耦。
  3. DG-Net++的解耦过程和适应过程连结在一起,彼此受益。

作者将自己提出的框架分为两个模块,一个是Disentangling Module,主要作用是分离出id相关的特征。在该部分使用了一个cycle-consistency generation的结构,来自两个域的图生成的新的图可以还原为各自的原始图像。Adaptation module则专注于id相关的特征来完成adaptation。两个模块通过共享的appearance encoder组合在一起。
在这里插入图片描述

Disentangling Moduel

给定一个source domain中的图像 x s ( i ) x_{s(i)} xs(i)和一个target domain中的图像 x t ( j ) x_{t(j)} xt(j),交换它们的appearance code或structure code就可以生成一个新的图像。
disentangling 模块包括以下几个部件:

  1. 一个共享的appearance encoder。 E a p p : x → v E_{app}:x \rightarrow v Eapp:xv
  2. 一个用于source domain图像的structure encoder。 E s t r s : x s ( i ) → τ s ( i ) E^s_{str}:x_{s(i)} \rightarrow \tau_{s(i)} Estrs:xs(i)τs(i)
  3. 一个用于target domain图像的structure encoder。 E s t r t : x t ( j ) → τ t ( j ) E^t_{str}:x_{t(j)} \rightarrow \tau_{t(j)} Estrt:xt(j)τt(j)
  4. 一个用于source domain的decoder。 G s : ( v t ( j ) , τ s ( i ) ) → x s ( i ) t ( j ) G^s:(v_{t(j)},\tau_{s(i)}) \rightarrow x^{t(j)}_{s(i)} Gs:(vt(j),τs(i))xs(i)t(j)
  5. 一个用于target domain的decoder。 G t : ( v s ( i ) , τ t ( j ) ) → x t ( j ) s ( i ) G^t:(v_{s(i)},\tau_{t(j)}) \rightarrow x^{s(i)}_{t(j)} Gt:(vs(i),τt(j))xt(j)s(i)
  6. 一个用于判断真实图像和生成图像的判别器 D i m g D_{img} Dimg
  7. 一个用于判断图像来自哪个域的判别器 D d o m D_{dom} Ddom

真实图像都只有一个表明域和编号的下标,而生成图像则既有表示appearance来源的上标,也有表示structure来源的下标。

Cross-domain generation

给定一组source图像和target图像,通过交换他们的appearance code和structure code可以生成新的图像。由于这里没有生成图像的ground-truth label作为监督,作者使用cycle-consistency self-supervision的方法来保证效果,从生成图像中提取出appearance和structure来还原输出图像。
L c y c = E [ ∣ ∣ x s ( i ) − G s ( E a p p ( x t ( j ) s ( i ) ) , E s t r s ( x s ( i ) t ( j ) ) ) ∣ ∣ 1 ] + E [ ∣ ∣ x t ( j ) − G t ( E a p p ( x s ( i ) t ( j ) ) , E s t r t ( x t ( j ) s ( i ) ) ) ∣ ∣ 1 ] L_{cyc}=E[||x_{s(i)}-G^s(E_{app}(x^{s(i)}_{t(j)}),E^s_{str}(x^{t(j)}_{s(i)}))||_1]+\\E[||x_{t(j)}-G^t(E_{app}(x^{t(j)}_{s(i)}),E^t_{str}(x^{s(i)}_{t(j)}))||_1] Lcyc=E[xs(i)Gs(Eapp(xt(j)s(i)),Estrs(xs(i)t(j)))1]+E[xt(j)Gt(Eapp(xs(i)t(j)),Estrt(xt(j)s(i)))1]
其中 x s ( i ) x_{s(i)} xs(i)为source domain的图像, x t ( j ) x_{t(j)} xt(j)为target domain的图像, x t ( j ) s ( i ) = G t ( v s ( i ) , τ t ( j ) ) x^{s(i)}_{t(j)}=G^t(v_{s(i)},\tau_{t(j)}) xt(j)s(i)=Gt(vs(i),τt(j)) x s ( i ) t ( j ) = G s ( v t ( j ) , τ s ( i ) ) x^{t(j)}_{s(i)}=G^s(v_{t(j)},\tau_{s(i)}) xs(i)t(j)=Gs(vt(j),τs(i))为交换appearance和structure后的生成图像。
为了保证appearance encoder能精准提取出id相关的信息,作者还使用了identification loss:
L i d s 1 = E [ − l o g ( p ( y s ( i ) ∣ x s ( i ) ) ) ] L^{s_1}_{id}=E[-log(p(y_{s(i)}|x_{s(i)}))] Lids1=E[log(p(ys(i)xs(i)))]
这部分的主要保证原始的来自source domain的图像(带label的)分类不出错。同时也要保证生成图像保留了id相关的特征(appearance code)信息。
L i d s 2 = E [ − l o g ( p ( y s ( i ) ∣ x t ( j ) s ( i ) ) ) ] L^{s_2}_{id}=E[-log(p(y_{s(i)}|x^{s(i)}_{t(j)}))] Lids2=E[log(p(ys(i)xt(j)s(i)))]
可以理解成appearance code决定了人的类别,structure code代表图像来自哪个域。上面这个loss就是保证使用行人a的appearance生成的新图像,仍然是行人a。
为了保证生成效果,作者也使用了一个对抗损失来拟合真假图像。
L a d v i m g = E [ l o g D i m g ( x s ( i ) ) + l o g ( 1 − D i m g ( x t ( j ) s ( i ) ) ] + E [ l o g D i m g ( x t ( j ) ) + l o g ( 1 − D i m g ( x s ( i ) t ( j ) ) ] L^{img}_{adv}=E[logD_{img}(x_{s(i)})+log(1-D_{img}(x^{s(i)}_{t(j)})]+\\ E[logD_{img}(x_{t(j)})+log(1-D_{img}(x^{t(j)}_{s(i)})] Ladvimg=E[logDimg(xs(i))+log(1Dimg(xt(j)s(i))]+E[logDimg(xt(j))+log(1Dimg(xs(i)t(j))]
判断图像真假的判别器,不考虑图像来自哪个域。这样就可以间接性地引导appearance encoder去学习domain-invariant特征。

Adaptation Module

Adversarial alignment 虽然appearance encoder的部分是两个域共享的,但是仍然不能保证特征表达具有相似的分布。因此作者引入了domain判别器,对appearance encoder提取出的特征 v s ( i ) v_{s(i)} vs(i) v t ( j ) v_{t(j)} vt(j)进行区分。在对抗训练过程中appearance编码器会持续学习生成判别器 D d o m D_{dom} Ddom无法区分的特征,跨域的appearance特征分布之间的差距会逐渐减小。
domain appearance adversarial alignment loss:
L a d v d o m = E [ l o g D d o m ( v s ( i ) ) + l o g ( 1 − D d o m ( v t ( j ) ) ] + E [ l o g D d o m ( v t ( j ) ) + l o g ( 1 − D d o m ( v s ( i ) ) ] L^{dom}_{adv}=E[logD_{dom}(v_{s(i)})+log(1-D_{dom}(v_{t(j)})]+\\ E[logD_{dom}(v_{t(j)})+log(1-D_{dom}(v_{s(i)})] Ladvdom=E[logDdom(vs(i))+log(1Ddom(vt(j))]+E[logDdom(vt(j))+log(1Ddom(vs(i))]
Self-training作者在adaatation模块中包括了self-training的部分。它跨域减少跨域特征分布之间的差距,同时也鼓励了判别式得appearance特征的学习。
对于来自target domain的数据,迭代性的生成一组伪标签。并且使用这组伪标签改善网络。伪标签是通过对从appearance encoder提取出的target features进行聚类的道德,对于每个cluster中的样本都分配同一个标签。每两个epoch更新一次伪标签。
L i d t 1 = E [ − l o g ( p ( y ^ t ( j ) ∣ x t ( j ) ) ) ] L i d t 2 = E [ − l o g ( p ( y ^ t ( j ) ∣ x s ( i ) t ( j ) ) ) ] L^{t_1}_{id}=E[-log(p(\hat{y}_{t(j)}|x_{t(j)}))]\\ L^{t_2}_{id}=E[-log(p(\hat{y}_{t(j)}|x^{t(j)}_{s(i)}))] Lidt1=E[log(p(y^t(j)xt(j)))]Lidt2=E[log(p(y^t(j)xs(i)t(j)))]
在伪标签上也应有identification loss,保证分类正确和appearance encoder的提取效果。
带self-training的adaptation可以促进共享的appearance encoder同时学习域不变性特征和判别得特征。

Optimization

对share appearance encoder、image discriminator、domain discriminator和source structure encoders,target structure encoders, source decoders, target decoders进行联合训练,来优化最终目标。
L t o t a l ( E a p p , D i m g , D d o m , E s t r s , E s t r t , G s , G t ) = λ c y c L c y c + L i d s 1 + L i d t 1 + λ i d L i d s 2 + λ i d L i d t 2 + L a d v i m g + L a d v d o m L_{total}(E_{app},D_{img},D_{dom},E^s_{str},E^t_{str},G^s,G^t)=\lambda_{cyc}L_{cyc}+L^{s1}_{id}+L^{t1}_{id}+\lambda_{id}L^{s2}_{id}+\lambda_{id}L^{t2}_{id}+L^{img}_{adv}+L^{dom}_{adv} Ltotal(Eapp,Dimg,Ddom,Estrs,Estrt,Gs,Gt)=λcycLcyc+Lids1+Lidt1+λidLids2+λidLidt2+Ladvimg+Ladvdom
作者使用的权重是 λ c y c = 2 , λ i d = 0.5 \lambda_{cyc}=2,\lambda_{id}=0.5 λcyc=2,λid=0.5

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值