ICCV_2019——无监督行人重识别之Self-Training With Progressive Augmentation

Self-Training With Progressive Augmentation for Unsupervised Cross-Domain Person Re-Identification(ICCV_2019)

文章链接
代码链接:tinyurl.com/PASTReID

文章大致思路如下:

针对无监督跨数据集行人重识别,即在源数据集有数据标签,但目标数据集没有标签的情况下,让训练的模型同时在源、目标数据集都表现良好,也就是模型具有鲁棒性。
文章提出了一个思路:利用逐步增强的自训练方法(progressive augmentation framework,PAST)来提高模型在目标数据集的准确率,该训练方法包含两个阶段:保守阶段(conservative stage)和提升阶段(promoting stage)。conservative stage引入triplet-based loss捕捉目标数据集结构中的局部关系,promoting stage则是通过在模型的最后一层加入类别数可变的分类层,充分捕捉数据集的全局关系。然后两个训练阶段交替进行。另外,文章提出了一个新的损失函数ranking-based triplet loss应用于conservative stage。
补充说明:
局部关系:选取的每三对样本,判断正样本、负样本
局部关系
全局关系:对所有数据样本进行分类,这里引用一篇文章中的关系图来作说明
全局关系

下面详细介绍文章框架PAST:

在这里插入图片描述

大致流程:

1、在带有标签的源数据集上对CNN模型进行预训练,得到一个预训练模型

2、利用得到的预训练模型提取未标记目标数据集的特征F。

3、在保守阶段(Conservative Stage):根据F计算的排序得分矩阵DR,通过HDBSCAN聚类方法对训练样本分配伪标签,生成更可靠的训练集Tu,为目标训练集的子集。然后基于聚类的三联体损失(CTL)和基于排序的三联体损失(RTL),从Tu集中捕获局部关系从而优化模型,然后利用优化后的模型提取Tu集的特征Fu 。
具体如下:
对训练数据集T{x1, x2, …, xN},提取特征F,再利用K-倒数编码法 (详情参考这篇文章) 对每个图像之间的距离进行计算,得到距离矩阵D,如下式所示,其中DJ为检索图像xi与数据集所有其他图像之间的距离矩阵。
公式1
距离越小,图像之间的相似度越大,因此对D进行升序排序得到DR,如下式所示,其中DR(xi)是DJ (xi)的已排序距离矩阵。
公式2
接着基于DR,利用HDBSCAN聚类方法(详情看这篇文章)将训练图像集分为不同个聚类,并为不同聚类附上伪标签。有些没有集群的图像就因此丢失,这样拥有伪标签的图像就组成一个新的图像集Tu。在新的图像集Tu上,利用两种Triplet loss来进行优化模型。如下所示:

Clustering-based Triplet Loss (CTL):( 取决于伪标签的质量)
公式3
随机抽取P个聚类集群,每个聚类集群K个实例,组成P×K个图像,选取每个anchor图像Xa的最难正样本Xp以及最难负样本Xn,即与Xa距离最远的正样本Xp以及离Xa最近的负样本Xn,形成三元组。基于伪标签聚类的三元组损失如上式3所示,其中,xij表示i类集群中的第j个图像,f(xij)表示xij的特征向量,m表示正样本与负样本之间的距离。

Ranking-based Triplet Loss (RTL):(基于排序矩阵,不依赖标签)
公式4
选取anchor图像Xa,正样本Xp为从DR(Xa)矩阵中从top-n 中随机选取一个,负样本Xn来自[n,2n]这个区间。基于排序的三元组损失函数如上式4所示,其中,Pp和Pn是xp和xn相对于xa的排名位置,n为正样本的最大排序位置,m为正负样本之间的距离。

最后,结合CTL和RTL,得到最终损失函数公式如下:
在这里插入图片描述
λ权衡CTL以及RTL起的作用。

4、在提高阶段(Promoting Stage):三元组损失函数关注点在anchor、positive sample、negative sample之间的局部关系,在本阶段需要利用训练样本数据分布的全局信息,利用分类损失进一步改进模型,与上个阶段进行互补。
具体做法为在模型的最后加入一个全连通层作为分类层,类的数量根据HDBSCAN集群生成的集群数量而变化。结合交叉熵损失函数,其表达式为:
公式6
其中yi为带有伪标签的样本,C为聚类后的分类数。
需要注意的是:由于每次经过HDBSCAN聚类得到的分类数C都不一样,所以分类层在每次聚类后都需要进行初始化而后重新训练。为了避免随机初始化带来的精度波动从而有利于模型训练的收敛,文章使用每次聚类后的均值特征来作为初始化参数,具体如下所示:
公式7
其 中 W ∈ R d × C , W c ∈ R d 为 W 的 第 c 列 , d 表 示 的 是 特 征 维 度 。 其中W∈R^{d×C},Wc∈R^d 为W的第c列, d表示的是特征维度。 WRd×C,WcRdWc,d

5、交替训练:保守阶段与提升阶段交替训练。
交替训练结果示意图
可以发现这46张图片都来自同一个人,但是在训练中它们的标签是未知的。在每次迭代中,相同颜色的图像id表示通过聚类方法将它们分配到相同的集群(伪标签)。灰色图像id意味着样本不属于任何簇,因此不用于训练。从迭代1到迭代4,可发现:更多的样本被选择进行训练,同时伪标签变得更加可靠。

实验结果

文章选择三个数据库Market-1501,DukeMTMC-Re-ID,CUHK03。
backbone选择了PCB(详情看这篇文章
训练阶段:保守阶段跟提升阶段的学习率设置不同,可以获得更好的训练效果。
与现有的聚类算法比较如下图所示:
实验结果

(个人理解,仅供参考)

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值