自步对比学习(Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID)

自步对比学习(Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID)

简介

文章来源

目标重识别

上面的链接就有很好的介绍,主要怎么理解该问题。

个人理解:用简单的大白话来说,该任务的执行过程应该是对于某个目标先进行类似于确定的操作,再在譬如不同摄像机,场景下,再次将该目标识别出来。

领域自适应

知乎深度学习大讲堂

个人理解:动机是机器学习深度学习再使用训练样本训练模型之后,测试样本或者真实场景的样本可能与训练数据的分布差异较大,容易出现过拟合的现象,针对这种问题提出迁移学习。领域自适应就是迁移学习的一个重要方法,主要是利用信息丰富的源域样本来提升目标域模型的性能。

方法

设计了一个框架,由一个基于CNN的encoder f θ f_\theta fθ和一个混合记忆模块,关键创新是该网络是被源域类别,目标域聚类类别,目标域离群实例三者联合监督训练的,并且还能动态更新混合记忆模块去提供更加可靠的学习目标。

为了避免初始化被噪声聚类影响,该方法初始化过程使用的是更加可靠的聚类结果,因此提出了一个新的聚类评价标准去衡量聚类的质量。

3.1通过对比学习构造和升级混合记忆模块

这里假定目标域的训练样本都是无监督的 X t X^t Xt,采用3.2节的聚类策略进行聚类分组。源域的样本为 X s X^s Xs,带有标签。

目标域的伪标签数据为 X c t X^t_c Xct,目标域的离群实例(也就是不属于任何聚类的样本)为 X o t X^t_o Xot i . e . X t = X c t ∪ X o t i.e.X^t = X^t_c\cup X_o^t i.e.Xt=XctXot)。

3.1.1统一对比学习

给定一个一般特征向量 f = f θ ( x ) , x ∈ X s ∪ X c t ∪ X o t f=f_\theta(x),x\in X^s\cup X^t_c\cup X_o^t f=fθ(x),xXsXctXot,我们的统一对比loss为:
L f = − l o g e x p ( < f , z + > / τ ) ∑ k = 1 n s e x p ( < f , w k > / τ ) + ∑ t = 1 n c t e x p ( < f , c k > / τ ) + ∑ t = 1 n o t e x p ( < f , v k > / τ ) \mathcal{L}_f=-log\frac{exp( \left< f,z^+ \right> /\tau)}{\sum_{k=1}^{n^s}exp(\left<f,w_k\right>/\tau)+\sum_{t=1}^{n^t_c}exp(\left<f,c_k\right>/\tau)+\sum_{t=1}^{n^t_o}exp(\left<f,v_k\right>/\tau)} Lf=logk=1nsexp(f,wk/τ)+t=1nctexp(f,ck/τ)+t=1notexp(f,vk/τ)exp(f,z+/τ)
z + z^+ z+表示与 f f f正相关的原型, τ \tau τ经验数值为0.05,<>为内积用来衡量相似度。 n s n^s ns表示源域类别数, n c t n_c^t nct表示目标域聚类数, n o t n_o^t not表示目标域离群实例的个数。根据 f f f所属类别, z + z^+ z+的值与之对应

3.1.2混合记忆模块

他这里的策略是每个epoch重新聚类得到更加可靠的聚类信息,因此每次聚类类别,离群值都在变化,相应的统一对比loss就要发生改变,因此loss的类原型是非参数化动态构造的?

记忆模块初始化:通过前向计算 f θ f_\theta fθ得到提取的特征来初始化混合记忆模块,初始源域类中心可由每个类的平均特征向量得到,而初始的目标域实例特征 { v } \{v\} {v}是由 f f f被直接编码的。然后目标域的聚类中心被每个类的平均向量初始化。

注意,这样通过前向计算初始化仅有一次,后面更新混合记忆模块都在训练中进行。

更新记忆模块:每次迭代,每个小batch中的被编码特征向量会参与记忆模块更新。

对于源域中的类中心 { w } \{w\} {w},譬如第k个类中心就由minibatch中的属于k类的特征向量的均值向量更新:
w k ← m s w k + ( 1 − m s ) ⋅ 1 ∣ B k ∣ ∑ f i s ∈ B k f i s w_k\leftarrow m^sw_k+(1-m^s) \cdot \frac{1}{|\mathcal{B}_k|}\sum_{f^s_i\in \mathcal{B}_k}f_i^s wkmswk+(1ms)Bk1fisBkfis
B k \mathcal{B}_k Bk表示属于在当前minibatch中源域第k类的特征集合, m s ∈ [ 0 , 1 ] m^s\in[0,1] ms[0,1]是动量参数,由经验设置为0.2

目标域的聚类中心不能被这样存储和更新,因为聚类的集合和离群值的集合是不断变化的。混合记忆模块缓存了所有目标域特征 { v } \{v\} {v},每个minibatch中的编码特征向量 f i t f^t_i fit被用来更新与之对应的实例条目 v i v_i vi
v i ← m t v i + ( 1 − m t ) f i t v_i\leftarrow m^tv_i+(1-m^t)f_i^t vimtvi+(1mt)fit
这里 m t m^t mt按照经验设置0.2。然后再由新的 v i v_i vi更新聚类中心。

3.2可靠聚类的自步学习

自步学习在每个epoch之前的重聚类步骤中,只有最可靠的聚类才会被保留,不可靠的类将会被打散重新归为离群值实例。

通过衡量聚类的独立性和紧性,提出一个可靠的评判标准。

**聚类的独立性:**一个可靠的类应该是与其他类和个例样本独立的。

I ( f i t ) \mathcal{I}(f_i^t) I(fit)表示属于同一类的堂样本 f i t f_i^t fit,用IOU分数来衡量聚类的独立性得分:
R i n d e p ( f i t ) = ∣ I ( f i t ) ∩ I l o s s e ( f i t ) ∣ ∣ I ( f i t ) ∪ I l o s s e ( f i t ) ∣ \mathcal{R}_{indep}(f_i^t)=\frac{|\mathcal{I}(f_i^t)\cap\mathcal{I}_{losse}(f_i^t)|}{|\mathcal{I}(f_i^t)\cup\mathcal{I}_{losse}(f_i^t)|} Rindep(fit)=I(fit)Ilosse(fit)I(fit)Ilosse(fit)
I l o s s e ( f i t ) \mathcal{I}_{losse}(f_i^t) Ilosse(fit)表示聚类标准松散的时候包含的类集合。 R i n d e p \mathcal{R}_{indep} Rindep越大表示该类对于 f i t f_i^t fit越独立。在一个聚类中的样本应该有同样的独立分。

放宽聚类的标准也不会有样本被归到其他类里(对于一个聚类好的类来说)。

**聚类的紧性:**就是类内的样本之间有更短的距离。收紧聚类的标准也不会有样本被分到其他类里(对于一个聚类好的类来说)
R c o m p ( f i t ) = ∣ I ( f i t ) ∩ I t i g h t ( f i t ) ∣ ∣ I ( f i t ) ∪ I t i g h t ( f i t ) ∣ \mathcal{R}_{comp}(f_i^t)=\frac{|\mathcal{I}(f_i^t)\cap\mathcal{I}_{tight}(f_i^t)|}{|\mathcal{I}(f_i^t)\cup\mathcal{I}_{tight}(f_i^t)|} Rcomp(fit)=I(fit)Itight(fit)I(fit)Itight(fit)
I l o s s e ( f i t ) \mathcal{I}_{losse}(f_i^t) Ilosse(fit)表示聚类标准收紧的时候包含的类集合。该值越大表示类内的样本间距更小

设置了 α , β ∈ [ 0 , 1 ] \alpha,\beta\in[0,1] α,β[0,1]为独立性和紧性的阈值,来确定可靠的聚类。保留 R i n d e p > α , R c o m p > β \mathcal{R}_{indep}>\alpha,\mathcal{R}_{comp}>\beta Rindep>α,Rcomp>β的聚类结果,剩下的其他数据全部被当做不属于任何类的离群实例。

一些方法应用细节

每个epoch前重新聚类,聚类方法使用的是DBSCAN,基于密度聚类的方法。参考

伪码(也可以找西瓜书看看):来源
在这里插入图片描述
聚类中的距离使用的是Jaccard距离。直接参照百度百科

后续实验

具体细节就可以看论文表格了,一些对比实验与消融实验。论文的附录里有算法的伪码还有一些实施细节等,对于帮助论文理解有较大的帮助。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值