01:介绍该领域
02:宏观介绍本方法
03:介绍本方法的具体实现
04:本方法的实验
论文理解
01 Introduction
跨域概念介绍:训练集与测试集来源的时间、摄像头位置等具有较大差别,识别目标的所处季节、背景、视角等都发生变化。这就是目标域与源域之间的差距。同时,域内自身会有差距。
解决方法:
- 利用GAN完成风格迁移(源域到目标域、目标域内部):从inputl-level(输入级)方,和/或,从feature-level(特征级)方
- 在目标域内部无监督或辅助监督:
这些方法背后有一个共同问题:这种适应性通常在特征空间上运行,该特征空间编码 id 相关和 id 无关的因素。因此,id 相关特征的适配不可避免地受到 id 不相关特征的干扰和损害,限制了 UDA 的性能增益。
本论文提出了一种跨域和循环一致的图像生成方法,通过相应的编码器模拟三个潜在空间来分解源图像和目标图像。潜在空间包含捕获 id 相关特征的共享外观空间。
【净化特征空间(编码了身份相关与无关的特征,因此后者将对前者产生影响),前者举例:外观等;后者:姿势、位置、背景等】
解耦问题、域适应问题,共同解决相互促进:
- 解耦合导致更好的域适应:可以使后者更专注于 id 有关的特征,减轻 id 无关特征的干扰
- 域适应反过来改善解耦合:共享外观编码器在适配期间可以得到增强
02 Related work
文章中详细介绍了其他各类方法,不再展开。
DG-Net++相比之前工作的重要设计:
- DG-Net++旨在解决无监督的跨域重 id,而 DG-Net 是在完全监督的设置下开发的。
- DG-Net++建立在一个新的跨域循环一致性方案之上,在没有任何目标监督的情况下,将 id相关/不相关因素分离出来。相比之下,DG-Net 采用了通过潜在代码重构的域内解纠缠,并获得了基本的真实身份。
- DG-Net++以统一的方式将解耦合与适配无缝融合,使两个模块相互受益,这在 DG-Net 中是没有考虑到的。
- 在六个基准对上,DG-Net++在无监督跨域重标识方面显著优于 DG-Net。
03 方法
重点:
- 将所有特征分为三个空间:Shared appearance space(id相关)、Source structure space与target structure space(均id无关)
- 共享外观解码器(shared appearance encoder),将解耦合与域适应相结合
- 源域与目标域共享图像和域鉴别器,但有自己的结构编码器和解码器
- 虚线表示源/目标结构编码器的输入图像被转换为灰度
图为特征空间的构造:
03.1 解耦合模块
主要功能就是将两个域的图像编码至:id-related(共享外观空间) 与 id-unrelated(源/目标结构空间)。
3.1.1 公式
源域真实图片 X s = x s ( i ) i = 1 N s Xs ={x_{s(i)}}^{N_s}_{i=1} Xs=xs(i)i=1Ns ,图片对应标签为Y【上下标不变】
- 注:s 表示的是源域, N s N_s Ns 表示源域中的图片编号,标签数量上限为 K s K_s Ks
同样,对目标域也采用类似标记,只将其中的s变为t
共享外观编码器 E a p p : x → v E_{app}: x \rightarrow v Eapp:x→v
源结构空间编码器
E
s
t
r
s
、
解
码
器
G
…
E_{str}^{s}、解码器G…
Estrs、解码器G…
目标结构空间编码器、解码器
图片鉴别器(域无关性)
D
i
m
g
D_{img}
Dimg:辨别真实或合成图片
域鉴别器
D
d
o
m
D_{dom}
Ddom:辨别源或目标空间
- 对于合成图像,用上标表示提供外观代码的真实图像,用下标表示提供结构代码的真实图像;
- 对于真实图像,只有下标作为域和图像索引。适应和重新识别使用外观代码进行的;
3.1.2 跨域生成
跨域cycle-consistency来加强外观与结构特征之间的分离
给定一对源图像和目标图像,我们首先交换它们的外观或结构代码来合成新图像。由于合成图像不存在真实监督,我们利用循环一致性自我监督,通过交换从合成图像中提取的外观或结构代码来重建两幅真实图像。
为了保证图像生成器伪造的质量以及提高特征的判别性,作者用循环一致性损失和交叉熵损失来约束:
外观编码器损失函数:
图片鉴别器损失函数:
除了跨域生成之外,解耦合模块还可以灵活地将域内生成合并为进一步稳定、约束域内的解耦合工具。
03.2 域适应模块
专门在id-related的特征空间中进行,探索类内相似性与类间解耦合后的外观差异。
3.2.1 对抗对齐(Adversarial alignment)
为了消除两个域的差异,我们要实现 id-relate 信息也是域无关的,也就是不论是目标域还是源域,对于同一个id的图像,提取的 id-relate 特征应该是相似、对齐的,因此引入了一个domain的判别器 D d o m D_{dom} Ddom,用于区分编码的域成员 v s ( i ) v_{s(i)} vs(i) 与 v t ( i ) v_{t(i)} vt(i)。
在对抗训练过程中,共享外观编码器学习 D d o m D_{dom} Ddom不能区分的特征,因此跨域差异将减小。将这一部分对抗对齐的损失表示为:
3.2.2 自训练
有识别损失的自训练,能逐渐减少类内变化。
通过 E a p p E_{app} Eapp提取的特征进行聚类,预测打上一组伪标签: Y t ^ = { y ^ t ( j ) } \hat{Y_t}=\{\hat{y}_{t(j)}\} Yt^={y^t(j)}【因为是聚类的方法,所以伪标签和其对应的图片数量在训练过程中可能会变化】。本实验选取的聚类方法为DBSCAN,用 K-reciprocal 来衡量点对之间的距离,以迭代的方式进行网络微调,获得的伪标签通过识别损失约束 E a p p E_{app} Eapp:
其中,
p
(
y
^
t
(
j
)
∣
x
t
(
j
)
)
p(\hat{y}_{t(j)}|x_{t(j)})
p(y^t(j)∣xt(j)) 是
x
t
(
j
)
x_{t(j)}
xt(j) 预测在该伪标签下的概率。
同时也利用该伪标签计算合成图像的识别损失,从而保证伪身份一致性:
03.3 讨论与优化
讨论:两个模块相辅相成【叙述原因略】
优化方法:将上述多方的损失进行综合考虑,得到下面的加权和损失,为实验的优化总目标。
其中
λ
\lambda
λ 均表示权重,在实验中
λ
c
y
c
=
2
\lambda_{cyc}=2
λcyc=2 ,
λ
i
d
=
0.5
\lambda_{id}=0.5
λid=0.5。
先使用解耦合模块在源域进行预热训练 E a p p E_{app} Eapp、 E s t r s E_{str}^s Estrs、 E s t r t E_{str}^t Estrt、 G s G^s Gs、 D i m g D_{img} Dimg,迭代100K次;再使用域适应模块中的对抗对齐训练整个网络50K次。然后使用自训练,所有组件(编码器、解码器)一起训练,每2个epochs更新一次伪标签。
04 实验
主要讲讲实验中的一些细节,实验结果与其他方法的对比将不再说明。【现在还没有太理解这样做的原因,之后理解了再继续更新】