Implicit Sample Extension for Unsupervised Person Re-Identification
cvpr2022 Xinyu Zhang1*, Dongdong Li3,1?, Zhigang Wang1, Jian Wang1, Errui Ding1, Javen Qinfeng Shi2, Zhaoxiang Zhang3,4, Jingdong Wang1? 1Baidu VIS, China 2The University of Adelaide, Australia 3Institute of Automation, CAS & UCAS, China 4 Centre for Artificial Intelligence and Robotics, HKISI CAS, China 通过生成信息分簇、合蔟 本文是基于Cluster-Contrast,进行了部分策略微调。
0.背景
0.0Cluster-Contrast
无监督reid的pipeline, 大致可以分成三个部分。 第一个部分就是特征提取,在每一个epoch开始的时候,通过网络将训练数据集中图片的特征都提取出来。 第二部分是聚类,通过传统的聚类方法如DBScan, KNN通过特征把图片聚成不同的类别,每个类别给一个标签,就是用来训练的伪标签。一开始的伪标签是很不准的,在训练的过程中,随着网络的精度越来越高,伪标签也会越来越接近真实标签。 第三部分就是图片特征的存储和更新,在网络训练的过程中,随着网络参数的变化,图片的特征也需要进行对应的更新。在训练的时候,我们因为有了伪标签,就能够通过类似于softmax的分类函数来对网络进行训练。因为伪标签在每次聚类的时候都会发生变化,所以无监督reid用的是non-parametric softmax loss。Cluster-Contrast用的是moco用的里面的InfoNCE loss( Noise Contrastive Estimation)来进行训练。
0.0.1损失
NCE 的核心思想就是通过学习数据分布样本和噪声分布样本之间的区别,从而发现数据中的一些特性,NCE强大之处真的不只是能够解决巨大词表Softmax的运算量的问题
感觉像是有条件的对数损失函数 换成了对比损失形式,分子表示正样本对,分母是负样本对。然后利用 InfoNCE 的优化过程,就可以做到使正样本对之间的互信息最大,使负样本对之间的互信息最小这件事情了
0.0.2图片特征的存储和更新
本文认为:图片特征的存储和更新对于网络的训练影响很大,如 一个行人重识别数据集中,不同的人拥有的图片数量是不一样的,如果按照训练的图片来更新feature的话,拥有大量图片的人的feature将会滞后更新,从而有害网络优化。所以ClusterContrast的核心思想就是,我们不再是从图片的层面上去更新特征和计算loss, 而是从人的维度去更新和计算loss。无论一个人有多少张图片,对于网络训练来说,他们都是一视同仁的,都是用同一个速度去更新特征。在无监督reid中,每个人都被聚类成一个cluster。 相同颜色的图片是属于同一个人的,对于一个人,不管他有多少张图片,只会从里面选一张图片的feature存起来。选择和之前存起来的feature最不相似的feature效果最好,这样能够让网络去挖掘一些难样本。也是启发式算法。
主流方法: 当前大部分无监督的行人重识别是先使用聚类产生伪标签进行训练。 存在问题:聚类或将相同的身份分成两个或多个子集群;有时会将不同的真实身份混合在一起。 注:不同的形状代表不同的地面真实身份,而不同的颜色代表不同的伪标签
1.摘要
基于上述问题,作者假设现有数据分布中可能缺少一些基础信息,这些信息对于产生理想的聚类结果很重要。为了发现这些信息,提出了一种隐式样本扩展(Implicit Sample Extension,ISE)方法来生成我们所说的围绕集群边界的支持样本。开发了一种渐进线性插值(progressive linear interpolation,PLI)策略来指导支持样本生成的方向和程度:1)从实际样本到其k -最近簇的方向,2)从k -最近簇混合上下文信息的程度。还基于其提出了一个新的loss。
2.相关工作
2.0无监督的REID
目前无监督的REID主要分为两类:第一种是无监督域适应(UDA)方法,这种方法还需要稍微标注一点数据。 另一种就是纯粹无监督学习(USL),本位主要就是研究USL。
2.1其他分簇机制
BUC[20]提出了一种自下而上的聚类方案,将单个样本逐渐合并到更大的集群中。MMCL[30]提出了一种多标签分类机制来构建单个图像之间的关系。SpCL[14]采用自步调学习,逐步生成更可靠的集群。CycAs[33]和tsl[36]都使用tracklet信息来更准确地预测伪标签。SoftSim[21]直接使用基于相似性的软标签训练Re-ID模型。
2.2Gan的生成信息机制
图像生成是丰富有限数据的常用策略。Mixup[42]和cutmix[40]直接融合两个图像或图像补丁作为数据增强。Viewmaker[27]通过添加学习到的扰动产生不同的视图。SPGAN[11]提出了一个保留相似性的GAN,用于两个域之间的样式转移。DGNet++[51]对人物图像的结构和外观进行分解,并拒绝融合以重建新的人物图像。Chen等人[5]使用3D网格来合成一个人图像的更多视图,从而学习视图不变特征。与这些工作不同的是,ISE是无参数的,在嵌入空间内隐式地生成样本,而不是在图像像素空间内显式地生成样本。因此,支持样本可以很容易地用于损失函数,而无需任何特征提取过程。
本文注重通过弥补确实信息来解决将簇分化开来和将簇整合来,来提高性能。
3.工作流程
3.1 通过聚类来生成伪标签
字符表示: X = {x1, x2,…, xN}表示一个未标记的Re-ID数据集,xi是第i个图像,N是总图像数; fθ(x)是从模型中提取的特征。 目前最近的基于聚类的REID是通过K-means[22](基于距离的聚类方法)或DBSCAN[12](基于密度的聚类方法)得到一个带伪标签的数据集:X ’ = {(x1, y1), (x2, y2),…, (xN ', yN ')},离群点(没预测出伪标签的点)就忽略了。有了伪标签之后就可以把此次训练当成有监督的训练了,标签也要做成词袋。 DBSCAN:半径eps和密度阈值Minpts
作者总结了一个损失函数笼统的形式: m_m 代表的是词库里第m条条目 m_+ 再经过f后还是在词袋里的,所以之前的预处理工作生成词袋的很重要 sim计算余弦相似度:sim(u, v) =u_Tv/ ||u|| ||v|| τ=温度超参 反向传播方式: 在REID领域有很多不同的更新方式,有像BDG那种要把所有信息都输入进去才更新权重的,也有像SDG那种基于mini-batch的,本文作者使用的是基于mini-batch,在REID领域叫做cluster - contrast,基线也是cluster - contrast。
3.2前进的线性插值Progressive Linear Interpolation(PLI)
?f控制方向,λ控制程度,是样本扩展过程中的两个重要因素 欧拉 牛顿 牛顿和欧拉相似就是迭代,区别是梯度(收敛计算方式不同,一个是该点或者是下一个点的导数,考虑的是局部最大值;一个是基于欧拉展开,考虑了全局极值)
3.3方向
相邻的蔟间更有可能产生分类错误的样本,作者的目标是在两个相似的蔟中生成支持样本。 具体步骤:通过余弦相似度,为f进行k近邻; 支持样本的方向是由k个紧邻的f的质心c确定的。
c是蔟的质心,c*是距离最近的质心。这样的支持样本有着丰富的上下文信息,今次每个相邻蔟的质心都决定一个方向因子,作者也为每个蔟都生成一个支持样本,故f有k个支持样本。
3.4程度
程度决定了支持样本中应该包含多少相邻簇的信息。过大的λ使支持样本与原始簇相距甚远,误导模型训练。过小的λ相反会产生几乎无用的支持样本,因为它们与原始样本相似。因此,我们对λ进行渐进式更新,以便随着训练的进行逐步包含更多的上下文信息。 λ_0代表初始化程度,t/T代表当前和总迭代数的比值。上述公式初始会使支持样本靠近原始样本,以免在特征不好的时候引入过量的噪声。随着训练的进行鲁棒性越来越高。
3.5损失函数
在产生大量数据之后,作者把这些支持样本都当成正样本,所以要换一下损失InfoNCE(Noise Contrastive Estimation,噪声对比估计):
τ代表温度超参数,c代表质心
作者还提出了一个更拟合原始样本的损失函数:
c
b
c^b
cb是一个mini-batch的聚类数。
f
+
f^+
f+是正支持样本的个数
最终损失函数的形式是: β为损失重量
4.实验
数据集:使用market-1501和msmt178 评估方式:CMC和mAP 骨干网络是resnet50,于imagenet预训练 输入256*128,batch256, 使用DBSCAN生成伪标签 除了真实的样本外,作者绘制了生成的支持样本(中空的形状),以更好地展示ISE的有效性。不同的形状和颜色分别代表gt真实身份和伪标签
5.展望
1.使用其他生成伪标签的算法:卡尔曼滤波 2.更换距离(kmeans)计算函数:
参考: ClusterContrast:https://zhuanlan.zhihu.com/p/368633180
|