2019年CVPR的著名SOTA,现有方法中的生成模型pipeline与判别式re-id学习阶段保持相对分离,而作者反其道行之,提出了一种端到端地耦合ReID学习和图像生成的学习模型DG-Net。该包括一个将每个人分别编码为外观编码(appearance code)和结构编码(structure code)的生成模块(generative module),和一个与生成模块共享外观编码器的判别模块(discriminative module),通过切换外观或结构编码,生成模块能够生成高质量的跨ID组合图像,这些图像会在线反馈给外观编码器,并用于改进判别模块,实验表明该方法能带来很大的提高,达到了当时新的SOTA。
论文一览:
视频展示:
https://www.bilibili.com/video/av51439240/
痛点
ReID数据面临着非常多的变化,这也是生成模型出现的意义,这些生成模型至少满足两种特质:
1-真实性:即生成的图像必须具有足够的质量来缩小生成场景和真实场景之间的差距;
2-多样性:生成的图像不仅能够囊括已有的场景还可以涵盖未曾遇到的场景。
但是作者提出目前ReID使用的生成模型是一种基于GAN的独立模型,这个独立模型与辨别模型之间过于分离,作者认为受制于此,生成模型的优化目标可能会与ReID任务不够对标。因此本文提出了一种能够耦合判别与生成学习的统一网络,DG-Net。
DG-Net将行人图片分解为了两种相关空间:主要用于编码外观和其他与身份相关的语义的外观空间;和包含与几何和位置相关的结构信息以及其他附加变化的结构空间。如下图1:
可以看到纵轴取外观(appearence),横轴取结构(structure),他们生成了7×7=49中不同的外观和结构组合结合起来的新图片。生成图像的变化都是来自训练集本身,相比于其他GAN方法,DG-Net生成的数据也更接近原始的训练集。
模型
文章提出的DG-Net模型结构示意如下:
生成模块(the generative module)包括一个外观encoder E a : x i → a i E_{a}:x_{i}→a_{i} Ea:xi→ai,一个结构encoder E s : x j → s j E_{s}:x_{j}→s_{j} Es:xj→sj,一个decoder G : ( a i , s j ) G:(a_{i},s_{j}) G:(ai,sj)和一个用于分辨是生成图像还是真实图像的discriminator 。此时若 i = j i=j i=j,则该生成模块相当于一个自编码器。
结构encoder得到的结构编码(structure code) s j s_{j} sj拥有更多的空间分辨率和位置信息,为了防止decoder生成图像时过于依靠结构编码,实际部署时作者将其转化为了灰度图像,以驱使decoder能够同时利用了外观编码 a i a_{i} ai和结构编码 s j s_{j} sj。
生成模型——自id生成
生成模块先学习如何重建自身图像,入图2(b),作者认为自我重建任务对整个图像生成来说都起着重要的正则化作用。其过程为(红箭头):
loss使用的是pixelwise L1 loss:
基于“同一个人在不同图片中的外观是相似的”这一基本假设,作者设计了用两张同属一个行人的不同图片进行自身重建的任务,其过程为:
loss为:
为了使不同的id的行人分开,文章还使用了id loss来分别不同的id:
生成模型——跨id生成
不同于自id生成,跨id生成没有pixelwise的ground truth监督,如下图2©
生成 x j i x^{i}_{j} xji是基于 x i x_{i} xi的外观特征和 x j x_{j} xj的结构特征得到。生成 x i j x^{j}_{i} xij则相反,基于 x i x_{i} xi的结构特征和 x j x_{j} xj的外观特征得到。有loss:
和自id生成一样,基于外观code的id loss约束有:
此外,文章采用对抗性损失将生成的图像的分布与实际图像的分布进行匹配有:
综合来看,作者认为本文提出的生成模块能够显式地基于相关编码生成高质量行人图像,而且相比于其他GAN方法能够拥有更高的可操纵性和可解释性,能够使生成图像在真实图像中受到约束,而且就产生的不同图像数量(O(N×N))而言,这样的online方法也比其他offline的GAN方法(O(2×N))具有更完备的多样性。
辨别模型——主要特征学习(primary feature learning)
判别模型示意图如图2(d)所示:
文章在这部分采用了一个teacher-student的动态软标签的监督策略,使用一个在原训练集训练好的teacher网络(简单的baseline CNN)动态地给定生成的图像一个软标签。然后最小化teacher网络和判别模块的概率分布之间的KL散度:
判别模型——细粒度特征挖掘(fine-grained feature mining)
生成图像(如图1)模拟同一个人不同的衣服变化。由于衣服不停的在变化,判别网络被迫学习其他与衣服无关的细粒度特征来完成任务,比如头发,帽子,身材等等。文章定义了特定的id loss:
该loss以多任务的方式施加了额外的监督给判别模块。与其他显式搜索难样本进行训练不同,由于生成图像的特性所在,判别模块将自己学习到细微的特征。
判别模块将根据外观和结构编码的方式来具体使用生成的数据,且根据两种不同的出发点——其一是学习主要特征,其二是学习细粒度特征,前者专注于结构信息不变的外观信息的情况(衣服变化等),后者专注于外观不变的结构信息。
训练时,外观和结构encoder,decoedr和判别模块将一起进行优化,训练多种loss的加权和:
其中 L r e c o n i m g = L r e c o n i m g 1 + L r e c o n i m g 2 L^{img}_{recon}=L^{img_{1}}_{recon}+L^{img_{2}}_{recon} Lreconimg=Lreconimg1+Lreconimg2,是生成模块中的自id生成环节loss。 L r e c o n c o d e = L r e c o n c o d e 1 + L r e c o n c o d e 2 L^{code}_{recon}=L^{code_{1}}_{recon}+L^{code_{2}}_{recon} Lreconcode=Lreconcode1+Lreconcode2是生成模块中跨id生成环节的外观和结构生成loss。而 L i d s L^{s}_{id} Lids和 L i d c L^{c}_{id} Lidc是跨id生成环节中对不同id辨别的id loss。 L a d v L_{adv} Ladv是跨id生成环节的对抗损失。等式中的λ是一个常数,代表不同项的权重,用以控制相关loss的重要程度。具体设置可以看原paper。
实验
文章定性又定量地对比了DG-Net和其他SOTA方法,实验在Market,Duke和MSMT17上进行。
生成图像与其他GAN方法的生成图像对比如下图3:
生成图像关于在线喂图和id监督的分离实验:
如图4,如果不在线将生成的图像馈送到外观encoder,生成图像会遭受边缘模糊和奇怪纹理的干扰。 如果进一步取消id监督,模型无法产生准确的衣服颜色或样式,将大幅影响图像质量。
在三种数据集上对两个输入做外观和结构的交换如下:
与其他SOTA的真实性和多样性定量比较:
FID衡量生成的图像与实际分布的接近程度。SSIM计算类内相似度,可以用来反映图像生成的多样性。
判别模块的分离实验如下:
由于原始训练集中的数据偏差,生成模块倾向于学习常规的纹理(例如条纹和点),但是忽略了一些罕见的图案(例如衬衫上的徽标),如图7:
对主要特征学习和细粒度特征学习的超参数实验:
文章最终选定了α=0.2,β=0.5。
在Market1501和Duke上与其他SOTA对比:
MSMT17上的SOTA对比
写作
本文写作非常的好,值得学习和模仿。
“(Introduction 句1)Person re-identification (re-id) aims to establish identity correspondences across different cameras.”
Introduction第一句,好精炼的表达。
“(Introduction 句4)As a result, designing or learning representations that are robust against intra-class variations as much as possible has been one of the major targets in person re-id.”
“结果,设计或学习尽可能抵御类内变化的表征已成为行人重识别的主要目标之一
”,写得非常的好~
“(Conclusion 句1)In this paper, we have proposed a joint learning framework that end-to-end couples re-id learning and image generation in a unified network. There exists an online interactive loop between the discriminative and generative modules to mutually benefit the two tasks. Our two modules are co-designed to let the re-id learning better leverage the generated data, rather than simply training on them.”
这样的价值是非常好的,能让读者真正感觉到你的贡献。所以有时候写文章有点像推销,学会把自己的工作卖出去,就得让大家先接受你,对你感兴趣。
问题
吹毛求疵的说,我想看这个模型的完整部署情况,而文章说了discriminative module,说了generative module,和loss和优化的部署,但看完文章我依然不太清楚DG-Net应该是什么样的?(但也没有办法,受制于篇幅文章也只能粗略谈模型,更细的东西也许需要读源码才能明白了)
模型复杂,loss繁多,不好训练的。
参考文献
[1] Zheng Z, Yang X, Yu Z, et al. Joint discriminative and generative learning for person re-identification[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2019: 2138-2147.