【学习笔记】无监督行人重识别

BUC

《A Bottom-up Clustering Approach to Unsupervised Person Re-identification》2019 AAAI
【学习笔记】无监督行人重识别_第1张图片
BUC是一种自底向上聚类方法(bottom-up clustering)来联合优化CNN和无标签样本间的关系。最开始把每张行人图像作为单独的一类,来最大化每类的diversity,然后逐渐把相似的类合并为同一类,来提升每类的similarity。

loss计算

图像 x x x的属于簇 c c c的概率 p ( c ∣ x , V ) = e x p ( V c T v / τ ) ∑ j = 1 C e x p ( V j T v / τ ) p(c|x,V)=\frac {exp(V^T_cv/\tau)} {\sum^C_{j=1}exp(V^T_jv/\tau)} p(cx,V)=j=1Cexp(VjTv/τ)exp(VcTv/τ) V V V s i z e = C × D size=C \times D size=C×D的查找表,存储每个簇的中心特征, C C C为当前簇的总数, D D D为特征的维度。 v v v是图像 x x x的归一化特征, V c T v V^T_cv VcTv v v v与簇 c c c中心特征的余弦相似度, τ \tau τ是温度系数。根据这个公式就能计算CrossEntropy Loss,然后按 V y ^ i ← 1 2 ( V y ^ i + v i ) V_{\hat y_i}\leftarrow \frac 1 2(V_{\hat y_i}+v_i) Vy^i21(Vy^i+vi)更新查找表,以得到更准确的簇心。

合并类

每次迭代完成后合并一小部分相似度最高(即类间距离最近)的类别。为了避免一个类太大和促进小的类合并,进行合并时还加入了一个多样性正则项,样本数多的两个类距离会被拉远。 D ( A , B ) = D d i s t a n c e ( A , B ) + λ D d i v e r s i t y ( A , B ) D(A,B)=D_{distance}(A,B)+\lambda D_{diversity}(A,B) D(A,B)=Ddistance(A,B)+λDdiversity(A,B)

聚类无监督

【学习笔记】无监督行人重识别_第2张图片
基于聚类的伪标签法首先用聚类算法(K-Means, DBSCAN等)对无标签的目标域图像特征进行聚类,从而生成伪标签,再用该伪标签监督网络在目标域上的学习。以上两步循环直至收敛。
基于聚类的伪标签法可以一定程度上随着模型的优化改善伪标签质量,但是模型的训练往往被无法避免的伪标签噪声所干扰,并且在初始伪标签噪声较大的情况下,模型有较大的崩溃风险。伪标签噪声主要来自于源域预训练的网络在目标域上有限的表现力、未知的目标域类别数、聚类算法本身的局限性等等。

K-Means

K-Means的主要目的是将 n n n个样本点划分为 k k k个簇,使得相似的样本尽量被分到同一个聚簇。K-Means衡量相似度的计算方法为欧氏距离。K-Means算法的类别个数需要事先人为给定,对异常点敏感性高。由于采用欧氏距离来衡量样本之间相似度,所以得到的聚簇都是凸的,就不能解决其他类型数据分布的聚类。K-Means算法是局部最优的,容易受到初始簇心的影响。

步骤

n n n个样本点中随机选择 k k k个样本点作为中心点,将剩余的样本点按欧式距离划分到 k k k个簇中,将这 k k k个簇的中心点坐标修改为各个簇的平均值。以新的 k k k个簇心重新划分样本和更新簇心。重复此步骤,直至簇心不再发生变化,即算法收敛。

DBSCAN

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是基于密度的聚类算法。密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本之间是紧密相连的。DBSCAN能够将足够高密度的区域划分成簇,可以发现任意形状的聚簇,其核心思想是从某个核心点出发,不断向密度可达的区域扩张,从而得到一个包含核心点和边界点的最大化区域,区域中任意两点密度相连。DBSCAN不需要提供类别数,聚类结果几乎不依赖于结点遍历顺序,能够有效的发现噪声点。但邻域值 e p s eps eps对聚合结果影响较大。在类中的数据分布密度不均匀时, e p s eps eps较小时,密度小的簇会被划分成多个性质相似的簇; e p s eps eps较大时,会使得距离较近且密度较大的簇被合并成一个簇。

步骤

任意选择一个没有类别的样本作为核心对象,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。接着继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇。重复此步骤,直到所有核心对象都有类别为止。一些异常样本点或者说少量游离于簇外的样本点,这些点不在任何一个核心对象在周围,一般将这些样本点标记为噪音点。

【学习笔记】无监督行人重识别_第3张图片

性能测试

结果未经过细调,仅用作参考。

Methods Market1501
BUC 55.61% 69.15% 75.33% 31.50%
聚类(k-means)
聚类(DBSCAN) 74.79% 88.18% 92.19% 55.25%

你可能感兴趣的:(学习记录,深度学习,深度学习)