论文一

Cluster Contrast for Unsupervised Person Re-Identification

主要贡献

  • 优化了memory存储的东西,仅存储聚类每个类别随机挑选的一个特征
  • 更新memory的时候挑选最难的样本更新对应类的特征

USL任务的主要流程

  • 在ImageNet上训练网络来提取特征。
  • 使用kmeans或者DBSCAN聚类生成伪标签
  • 用对比损失就算query和memory中对应实例的损失

以往解决方法存在的问题

1、训练数据每个类别实例数目不同会导致每个类别的实例特征被更新的比例不同,最终导致我们计算出的每个类别的cluster centroid feature新旧实例特征占比不同。我称为类别特征表示的不一致性问题。

假设每个mini-batch 大小为16x4=64,16为每次mini-batch取的类别数,4为每类样本数,并且我们假设训练数据集其中一类数据的样本总数是128,则该类别cluster centroid feature只更新了4/128=1/32

2、聚类算法不可避免的会将不同类别的数据聚类到同一类,这样会导致cluster centroid feature 表示错误,最终影响模型效果。

针对问题1:本方法选择聚类级别的memory,不去存具体每个实例的特征,选择一个聚类中随机一个特征存储。并且在更新特征的时候选择minibatch中最难的样本来更新。

we find that a single feature vector is enough for cluster representation, and it could also decrease the GPU memory usage and training time.

针对问题2:作者使用了clusterNCEloss,说是对比损失实现和CE交叉熵损失差不多。

对比SpCl

1、

  • SpCl的memory在USL任务中存储聚类实例特征和离群点实例特征
  • 本方法不存储离群点实例特征,并且聚类也不是存储所有聚类实例特征而是随机采样类中的一个特征
    在这里插入图片描述

2、

  • SpCl对于memory聚类实例的更新使用的是一一对应的更新,源域则是对应类别均值来更新
  • 本方法,对于聚类中心使用的是minibatch中最难的样本来更新
    在这里插入图片描述

这里引出一个问题:选择minibatch中最难的可能选到噪声样本。
作者解答:

我们在一个批中选择最难的查询实例来更新集群特性向量。批处理硬实例可以被认为是中等实例,因为它是小子集中最难的实例 而不是整个集群中最难的数据。我们表明,批处理硬实例在实验部分比平均实例特征要好得多

Average :78.7 90.9(选均值更新)
Random :80.9 91.7(选随机类内样本更新)
Easy :75.8 89.7(选最简单样本更新)
Hard :82.6 93.0(选最难样本更新)

效果

在这里插入图片描述

总结

是reid在USL任务上一个很棒的baseline

论文二

《Hard-sample Guided Hybrid Contrast Learning for Unsupervised Person Re-Identification》

主要贡献

  • 对比CL论文新提出了基于最难样本引导的混合对比学习方法

论文Pipeline

因为本文以论文一为baseline,所以大框架没有变化,主要是新增了一个损失函数。

首先看最右侧的Instance Memory,这是个memory bank主要存储了所有的有编码器提取的特征,这是个实例级别的memory bank。在训练的时候每个iter,假设minibatch的大小是256就用这256个样本先更新这个Instance memory,如下图红框:

然后根据每个样本属于的类别(图中颜色区分)计算平均值得到了cluster centroid memory bank,同时计算每个类中的那个最难样本(离类中心最远的)存储在Hard Samples bank中。

得到了两个memory bank后和论文一一样,使用当前iter的minibatch和两个bank点乘得到Lc和Li两个loss,最后两个loss以1:1加权反传更新模型。

论文效果

该论文是目前reid USL任务的SOTA