Image-Image Domain Adaptation with Preserved Self-Similarity and Domain-Dissimilarity for Person Re-identification
作者:Weijian Deng, Liang Zheng 2018 CVPR
简称SPGAN(similarity preserving generative adversarial network)
代码: https://github.com/Simon4Yan/Learning-via-Translation
和ZL老师团队2018年另一篇CVPR很相似:Camera Style Adaptation for Person Re-identifification,可参考:这篇博客
1. 摘要
以无监督的方式将labeled源域数据迁移到目标域,保持id信息不变,即为self-similarity,而迁移涂图像和目标域图像之间的id肯定是不同的,也就是domaindissimilarity(建立在reid是处理开集任务的前提上,训练集和测试集的id完全不重叠)。以上两者都是通过 Similarity Preserving cycle consistent Generative Adversarial Network (SPGAN)实现的,该网络是一个无监督域适应框架,由一个 Siamese network (SiaNet)网络和Cycle GAN网络组成。前者用contrastive loss监督,将迁移后图像和其在源域中的对应图像pull到一起,和目标域的所有图像都push开。
2. 介绍
无监督域适应(UDA)能有效处理跨域问题,但其考虑的是训练集和测试集类别有重叠的情况,因此其实不是很适合reid任务,因此现在的跨域问题主要集中在打伪标签(也很少),风格迁移,编码域不变特征(与id相关的特征)等。目前常见的做法是:先将源域图像迁移到目标域风格,然后由于id不变使得无监督reid就成了有监督reid任务。
贡献
- 迁移源域图像到目标域风格,进行reid的UDA任务
- SPGAN来提升性能,迁移过程保持ID不变
3. 方法
3.1. baseline
标注的源域数据集S和未标注的目标域数据集T,包含两步:将源域数据集迁移到目标域风格,让后就是有监督reid任务(特征学习),如图2所示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817103051769.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
- 源域-目标域图像迁移
用Cycle GAN学习的生成函数G(*)将源域图像S迁移到目标域T风格,即得到G(S)训练集。
- 特征学习
G(S)就是有目标域风格,而ID与源域一致,和目标域T一起可以用于有监督reid的特征学习。
这篇文章最主要集中在第一步,性能如表1所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019081710370054.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
3.2. SPGAN
3.2.1 CycleGAN回顾
关于CycleGAN的详细内容可以参考这篇博客
G:S->T 和 F:T->S 的双向图像生成 + 循环一致性损失进行生成图像约束
其中ST中样本分布记为
p
x
p_x
px和
p
y
p_y
py,鉴别器为
D
T
D_T
DT和
D
S
D_S
DS,对抗损失:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817104238806.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817104251679.png)
风格循环一致性损失:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817104314864.png)
为了适应reid任务,作者添加了ID不变损失:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817104334141.png)
ID不变性损失部分和CamStyle一样,具体解释可见CamStyle。
CamStyle传送门:CamStyle
没有
L
i
d
e
L_{ide}
Lide损失,G和F生成的结果会改变输入图像的颜色,如图4b所示。
3.2.2 SPGAN
在Cycle GAN中集成了SiaNet,如图3所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019081711174376.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
其主要目的是为了防止利用生成图像的强ID标签,而只利用pairs图像的弱ID标签(同一人还是不同人),因此通过使用SiaNet网络进行contrastive loss监督:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817111418839.png)
其中x1和x2是一对输入图像向量,d是norm后的两个输入向量之间的欧氏距离。如果x1和x2是同一个人的图像则 i=1(正对),否则 i=0(负对)。m 是margin参数,
m
∈
[
0
,
2
]
m \in[0,2]
m∈[0,2]。当m=0是,表示负对计算的损失不反向传播,而m>0表示正对和负对都参与计算,m越大表示负对损失在反向传播时权重越大。
训练pairs的挑选:
以无监督的方式挑选
-
正对:
**
x
S
x_S
xS和
G
(
x
S
)
G(x_S)
G(xS)
**
x
T
x_T
xT和
F
(
x
T
)
F(x_T)
F(xT)
-
负对:
**
G
(
x
S
)
G(x_S)
G(xS)和
x
T
x_T
xT
**
F
(
x
T
)
F(x_T)
F(xT)和
x
S
x_S
xS
总目标损失:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817112222929.png)
训练时交替优化生成器,鉴别器,SiaNet,即训练其中一者时,其余两者保持不变。训练SPGAN直到模型收敛或达到最大迭代次数。
3.3. 特征学习
使用IDE模型,用Resnet50做backbone,修改最后一个FC层为reid数据集行人类别数。测试时,提取pool-5层结果的2048-d向量为行人特征,使用欧式距离作为相似性度量。
Local Max Pooling(LMP):
用LMP代替原模型中的GAP层(在Conv5上的进行),作者首先将Conv5的结果划分为P个水平parts,在每个part上分别进行全局max/avg池化(没有参数),最后将得到的结果concat起来。并且经过实验,LMP效果比LAP效果好。LMP过程如图5所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817113832291.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
生成结果对比如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817113947761.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
4. 实验
4.1. 实验细节
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817114225873.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
4.2. 评估
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817141531395.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817141705355.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817141726864.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817141811745.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817141830756.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817141949124.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817142033217.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
下面的测试性能在跨域中算是很高的(2018年,且没有MSMT做辅助)。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190817142108670.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019081714234382.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MjI2OTU1,size_16,color_FFFFFF,t_70)