行人重识别 联合GAN训练 DGNet: Joint Discriminative and Generative Learning for Person Re-identification

行人重识别 联合GAN训练 DGNet: Joint Discriminative and Generative Learning for Person Re-identification
Zhedong Zheng, Xiaodong Yang, Zhiding Yu, Liang Zheng, Yi Yang, Jan Kautz
NVIDIA, CAI University of Technology Sydney, Australian National University, 2019

行人重识别领域里,有过一些GAN的研究工作。但它们都是利用GAN生成的数据来训练re-id模型,两个模型是独立的。这篇论文提出的DGNet是第一个将GAN任务加入到训练re-id模型的框架中的,端到端的工作。


Introduction

这个网络会将一个行人编码到两个空间:外观和结构,其区别见表1。外观的编码器会与辨识器共享,作为re-id训练的backbone。以交换两个图片的外观或结构编码来生成图像,见图1。

图1

表1

Method

图2

网络结构见图2。DGNet把图片生成和辨识模块紧密地结合到了re-id训练中。需要关注的有以下几点:共两种图片生成方式,self-id和cross-id。辨识器引入了初级primary特征学习和细粒度fine-grained特征挖掘,这俩是与生成器一起设计的,目的是更好的利用生成的数据。

Generative Module

将真实图片和标签记做$X=\left\{x_{i}\right\}_{i=1}^{N}$ 和 $Y=\left\{y_{i}\right\}_{i=1}^{N}$,其中N是图片数。$y_{i} \in[1, K]$,K是id数量。给定两个真实图片$x_{i}$ 和 $x_{j}$,生成器会交换他们的外观或结构编码来生成新的行人图片。生成器包含一个外观编码器$E_{a}: x_{i} \rightarrow a_{i}$,一个结构编码器$E_{s}: x_{j} \rightarrow s_{j}$,一个解码器$G:\left(a_{i}, s_{j}\right) \rightarrow x_{j}^{i}$。此外还有一个辨识器D。当$i=j$时,生成器可以看做是一个auto-encoder,$x_{i}^{i} \approx x_{i}$。生成的图片下标为提供结构编码的图像,上标为提供外观图片的编码,真实图片只有下标。与外观编码$a_{i}$相比,结构编码$s_{j}$有更大的的空间分辨率以保留几何以及位置属性。但这可能导致G只使用$s_{j}$,忽略$a_{i}$,因为加码器倾向于依赖有更多空间信息的特征。因此将$E_{s}$的输入图片灰度化,驱使G同时利用两个特征。生成器有两个目标函数:self-id生成,起到正则化的作用;cross-id生成,使生成的图片可控,并匹配真实数据分布。

Self-identity generation 如图2b所示,给定一个真实图片生成器会先学习如何从它本身重建它,起了重要的正则化作用。使用逐像素的l1 loss来训练其重建。

基于同一个人的不同图片的外观编码应该相似的假设,我们进一步提出了一个在同一id的任两张图片的重建任务:

公式2使同一个id的不同图片的外观特征差异变小了,还需要使不同id的有足够区分,因此使用了id loss:

$p\left(y_{i} | x_{i}\right)$是基于外观特征预测的$x_i$属于其gt标签$y_i$的概率。

Cross-identity generation 与self-id不同,没有了像素级的gt监督。因此引入了基于外观和结构特征的隐码重建latent code reconstruction,来控制这种图片生成。如图2c,两个有不同身份$y_{i} \neq y_{j}$的图片$x_{i}$ 和 $x_{j}$,所生成的图片$x_{j}^{i}=G\left(a_{i}, s_{j}\right)$需要保留来自i的外观和来自j的结构信息。应能基于生成图片重建两个隐码:

类似于self-id里,我们也对外观编码使用了id loss,保持它的身份一致性:

其中$p\left(y_{i} | x_{j}^{i}\right)$是$x_{j}^{i}$属于$x_i$的gt类$y_{i}$的预测概率,也就是提供外观编码的图片id。

此外还引入了对抗loss,使生成的图片的分布符合真实数据:

Discussion 通过显式的学习外观和结构特征这俩具有互补和意义的方式,使得生成的复杂度大幅降低。之前的生成方法或采用随机噪声,或仅使用姿势因素,都很难掌控输出,并不可避免的产生人工制品。本网络生成的图片是可解释的,而且受到已有真实图片的约束,也提升了生成图片的真实性。理论上可以生成的量级也达到了$O(N \times N)$,超过了之前工作离线生成的$O(2 \times N)$。

Discriminative Module

辨识器与外观编码器是共享的网络,作为re-id的backbone。按照图片生成的方式,提出了初级特征学习和细粒度特征挖掘任务,来更好的利用在线生成的图片。因为这两个任务关注生成图片不同的方面,故在外观编码器上分支出了两个轻量级header,如图2d。

Primary feature learning 像已有工作那样把生成图片直接当做训练样本是可行的。但cross-id生成的图片的类间变化这件事促使我们采用教师-学生模型。教师模型就是一个在原数据训练的简单baseline模型。初级特征学习就是最小化辨识器预测的概率分布$p\left(x_{j}^{i}\right)$与教师模型预测的$q\left(x_{j}^{i}\right)$的KL散度:

其中K是id数量。与固定的独热标签或固定平滑标签比,这种动态软标签更匹配我们的情况。因为每个合成的图片都是由两个真实图片的视觉内容构成的。

Fine-grained feature mining 除了直接使用生成的图片来学习初级特征,我们特殊的生成流程使得一个有趣的方式变得可行。即模仿同一人衣服的变化,如图1的每一列。在以这种形式训练时,辨识器被迫去学习与id相关的、与衣物无关的细粒度属性(头发、帽子、背包和体型等)。我们把使用同一个结构特征,不同外观特征生成的图片看做与提供结构特征的图片看做同一类。这里使用了id loss来训练:

Optimization

整个网络联合训练,loss为:

具体权重参见原论文。辨识器的两个loss在生成质量稳定前不予使用。

Experiments

Implementation Details

外观编码器$E_a$是基于ImageNet预训练的ResNet50,移除了GAP和全连接层,使用一个adaptive max pooling,输出$2048 \times 4 \times 1$的外观编码。通过两个fc,映射为512维的初级特征$f_{\text {prim }}$和细粒度特征$f_{\mathrm{fine}}$。$E_s$是比较浅的网络,由4个卷积层和4个残差块组成。G通过4个残差块和4个卷积层处理$s$。每个残差块包含两个adaptive IN层,为$a$融入了尺度和bias参数。$D$仿照了流行的多尺度PatchGAN,在3种图片输入尺寸上进行辨识。在更新D时还使用了梯度裁剪,以加强训练稳定性。

后面还有生成质量的评估,辨识质量的评估等内容。这块不太关注,就不予记录了,请参照原文。

图3

图4

图5

图6

表2

图7

表3

图8

表4

表5