Pose Transferrable Person Re-Identification阅读笔记

Pose Transferrable Person Re-Identification

作者: Jinxian Liu, Bingbing Ni等人 2018 CVPR

1. Motivation

既然pose影响reid性能,那让网络尽可能多地看到不同pose的图像不就可以了。于是作者一个三步走策略:

  • 第一步:用训练集训练reid模型,让模型具有一定的鉴别力,让整个方法的效果不会低于baseline,即Guider
  • 第二步是从MARS上提取各式各样的pose,然后和训练集图像一起利用Generator-Guider-Discriminator结构生成图像
  • 第三步是生成图像后和原训练集图像一起送给预训练过的reID模型进行微调(用生成图像对Guider微调)。

2.介绍

在这里插入图片描述
作者说该模型还可用于其他pose迁移任务如行人检测、行人追踪等

3. 方法

3.1. Overview

在这里插入图片描述

3.2. Pose Transfer Module: Generator-Guider-Discriminator , G-R-D

3.2.1 Skeleton-to-Image Generation----第二步

直接用OpenPose对MARS图像提pose得到RGB的骨骼图像s,然后用cGAN训练网络,其需要paired图像输入(CycleGAN解决了这个问题,CycleGAN传送门),即原图x,骨骼图s,带pose s的GT图y(x和s是绑定在一起的,说是两张图,但其实是一张图,s只是个约束条件)。测试时,用图x和s生成
在这里插入图片描述
其中z是随机噪声,本文中其实没有明确使用。然后将真triplet
在这里插入图片描述
和生成triplet
在这里插入图片描述
一起给D辨真伪。其中triplet内是三张图按channel堆叠在一起送给D辨别的。min-max博弈损失为:
在这里插入图片描述
其中L1损失是让生成图像质量更好,L2会使得生成图像过于平滑,模糊(L1也会,略好点)。

3.2.2 Guider Module: ReID Boosting-----第一步得到但用于第二步

光用D看生成图像怎么样还是不够,于是还训练了一个guider R对生成图像进行鉴别。和D不同的是,R在第一步训练好后就fixed,不像D那样更新。
而Guider其实就是一个用训练集预训练的reID模型,其实就是对生成图像进行reID任务,相当于一个“引导”的作用,让生成图像更有利于现有的reID模型分类。既然是普通的reID,常用损失就有交叉熵损失和三元组损失:

  • Cross-Entropy based Guider Loss
    在这里插入图片描述
    q a q_a qa x a x_a xa分别是类a的标签和图像,而 P R ( ∗ ) P_{R}(*) PR()是*经过R后输出的属于类a的概率
  • Triplet based Guider Loss
    在这里插入图片描述
    输入是triplet,anchor是类a的图像 x a x_a xa的生成样本
    在这里插入图片描述
    positive是类a的一个真实样本 r a r_a ra,negative是类b的图像 x b x_b xb的生成样本
    在这里插入图片描述
    组成的一个triplet为
    在这里插入图片描述
    d A , B d_{A,B} dA,B表示AB分别经过R后的行人特征之间的L2距离,而 α \alpha α是margin, [ ∗ ] + [*]_+ []+是max(0,*)。

常见做法是交叉熵损失和三元组损失联调,效果很好。本文直接二选一,即 L R L_R LR。得到这一阶段的总损失为:
在这里插入图片描述
从而优化目标为:
在这里插入图片描述

3.3. Training with Balanced Data—第三步

第一步是直接用训练集如Market,Duke或CUHK的训练集训练图2张的reID模块,得到的就是Guider。
而第三步就是对训练集和训练集迁移到MARS上的pose的图像一起(ID不变)微调Guider,让reID模块更强。

作者文章中用源域和目标域,但其实做的是单域,目标域就是提供训练集的那个域,文章中是Market、Duke和CUHK。而源域就是提供一些各种各样的pose,文章中是MARS。

这里,作者用了LSR策略,也就是生成图像虽然ID不变,但不要过分信赖ID标签,而是打下面这种软标签:
在这里插入图片描述
CamStyle也有相似的操作,传送门
ϵ = 0 \epsilon=0 ϵ=0就是完全信任ID的硬标签,就是ZZ在CamStyle中普通版本的打标签方法,而 ϵ = 1 \epsilon=1 ϵ=1就是ZZD的LSRO。

而第三步和第二步的Guider一样,需要损失来监督,作者也是用了交叉熵损失和三元组损失监督。根据LSR的交叉熵损失为:
在这里插入图片描述
而triplet的选择就和普通三元组无异。只不过anchor是真实图像时,positive和negative也从真实图像中选,而anchor是生成图像时,positive和negative就从整个真实图像+生成图像组成的训练集中选,具体形式就不展开

注意:第二步中Guider用什么结构和损失,第三步中就也一样

3.4 网络架构

生成器使用siamese(triplet的输入) and U-net(图2的G中存在的跳过连接)的那种结构,而鉴别器就是简单的堆叠结构。而Guider即ReID模块,用的是ResNet50或DenseNet169.

4. 实验

4.1. 数据集

在Market、Duke和CUHK上训练和测试,而s是从MARS提取的。四个数据集分别简记为M,D,C,MA

4.2. 实验细节

三步走策略:

  • Pre-training a ReID model to be the guider. 也就是训练Guider 第一步
    在M和D上:
    ** 用ResNet50作guider(reID模块),交叉熵损失监督,lr为0.001,在30个epoch后衰减为0.0001,记为R-CE
    ** DenseNet169作guider,交叉熵损失监督,lr为0.001,在25个epoch后衰减为0.0001,不要dropout
    ** DenseNet169作guider,三元组损失监督,lr为0.001,bs为128,margin为1,记为D-Tri
    以上均用动量为0.9的SGD优化
    在C上:
    ** 用ResNet50作guider,交叉熵损失监督
    ** 用ResNet50作guider,三元组损失监督
    ** DenseNet169时和resNet50效果差不多
    一律:
    在这里插入图片描述
  • Boosting training of skeleton-to-image model.即生成图像 第二步
    在这里插入图片描述
  • Improving ReID model with generated samples 微调 第三步
    ε 设为0.4 , α设为0.5

4.3. 实验结果

  • 和baselien以及其他图像生成方法比
    在这里插入图片描述
  • 和SOTA比
    在这里插入图片描述
    在这里插入图片描述

4.4. 消融实验

  • 是否用guider的影响—是否预训练reID的影响
    在这里插入图片描述
    在这里插入图片描述
    没有时,生成图像明显模糊很多,并且结果差几个点
  • 不同的Guider的影响
    在这里插入图片描述

4.5 参数分析

  • 一张图进行N张图像迁移
    在这里插入图片描述
    两三张最好,太多了假的会由于丢失细节或生成结果中的奇异点开始起副作用

  • 其他参数
    在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值