01:介绍该领域
02:宏观介绍本方法
03:介绍本方法的具体实现
04:本方法的实验
跨域概念介绍:训练集与测试集来源的时间、摄像头位置等具有较大差别,识别目标的所处季节、背景、视角等都发生变化。这就是目标域与源域之间的差距。同时,域内自身会有差距。
解决方法:
这些方法背后有一个共同问题:这种适应性通常在特征空间上运行,该特征空间编码 id 相关和 id 无关的因素。因此,id 相关特征的适配不可避免地受到 id 不相关特征的干扰和损害,限制了 UDA 的性能增益。
本论文提出了一种跨域和循环一致的图像生成方法,通过相应的编码器模拟三个潜在空间来分解源图像和目标图像。潜在空间包含捕获 id 相关特征的共享外观空间。
【净化特征空间(编码了身份相关与无关的特征,因此后者将对前者产生影响),前者举例:外观等;后者:姿势、位置、背景等】
解耦问题、域适应问题,共同解决相互促进:
文章中详细介绍了其他各类方法,不再展开。
DG-Net++相比之前工作的重要设计:
主要功能就是将两个域的图像编码至:id-related(共享外观空间) 与 id-unrelated(源/目标结构空间)。
源域真实图片 X s = x s ( i ) i = 1 N s Xs ={x_{s(i)}}^{N_s}_{i=1} Xs=xs(i)i=1Ns ,图片对应标签为Y【上下标不变】
同样,对目标域也采用类似标记,只将其中的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:辨别源或目标空间
跨域cycle-consistency来加强外观与结构特征之间的分离
给定一对源图像和目标图像,我们首先交换它们的外观或结构代码来合成新图像。由于合成图像不存在真实监督,我们利用循环一致性自我监督,通过交换从合成图像中提取的外观或结构代码来重建两幅真实图像。
为了保证图像生成器伪造的质量以及提高特征的判别性,作者用循环一致性损失和交叉熵损失来约束:
外观编码器损失函数:
图片鉴别器损失函数:
除了跨域生成之外,解耦合模块还可以灵活地将域内生成合并为进一步稳定、约束域内的解耦合工具。
专门在id-related的特征空间中进行,探索类内相似性与类间解耦合后的外观差异。
为了消除两个域的差异,我们要实现 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不能区分的特征,因此跨域差异将减小。将这一部分对抗对齐的损失表示为:
有识别损失的自训练,能逐渐减少类内变化。
通过 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) 预测在该伪标签下的概率。
同时也利用该伪标签计算合成图像的识别损失,从而保证伪身份一致性:
讨论:两个模块相辅相成【叙述原因略】
优化方法:将上述多方的损失进行综合考虑,得到下面的加权和损失,为实验的优化总目标。
其中 λ \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更新一次伪标签。
主要讲讲实验中的一些细节,实验结果与其他方法的对比将不再说明。【现在还没有太理解这样做的原因,之后理解了再继续更新】
论文源代码:https://github.com/NVlabs/DG-Net-PP