完整文章移步:https://www.guyuehome.com/35271
论文
Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID
主要贡献
- 提出Hybrid memory混合记忆模型
- 在无监督方法中将聚类得到的异常值也加以利用
- 提出统一对比损失
- 提出聚类可靠性评估方法
Pipeline
- 初始化1:在ImageNet上初始化cnn编码网络F
- 初始化2:使用F对源域数据以及目标域数据编码
- 初始化3:源域数据选择类中心存入Hybird memory,目标域数据所有特征存入Hybird menmory。
- 训练1:使用F对输入的batch编码,与Hybird memory中的对应特征进行对比损失计算。
- 如果属于源域则与Hybird memory中对应类的中心特征进行计算
- 如果属于目标域聚类的类别,则与Hybird memory中聚类类别的类中心特征进行计算
- 如果属于目标域聚类异常值,则与Hybird memory中同一个特征进行计算
- 训练2:得到损失反向传播修正F
- 训练3:使用F对源域数据以及目标域数据编码
- 训练4:对特征进行聚类,使用聚类可靠性评估将不可靠的聚类拆成聚类异常值
- 训练5:根据新的编码使用动量更新Hybird memory中对应的值
- 重复训练步骤
对比损失公式
- z+是表示特征向量f属于那个类别的特征,对应于pipline中的训练1中的分析
- <a,b>表示a和b向量点乘,因为向量都L2 nomal处理了所以点乘来代替余弦计算
- 分母就是特征向量与其他类别的余弦距离的计算和。
- 整个式子优化到0则log的对数优化到1,则优化分子等于分母,即f和z+的距离最近其他都最小。
动量更新Hybird memory
对于源域类别的更新,对同一类别的图片编码的特征求均值对应更新Hybird memory同一类别:
对于目标域类别的更新,直接根据索引找到对应的向量更新:
聚类可靠性
通俗的说就是:一个可靠的聚类应当在多尺度的聚类环境下保持稳定。从每个点来看,正常聚类用一个面积为10的包围圈包括了它,然后用一个面积为8的包围圈也包括了他并且这次的包围圈和面积为10的包围圈包围相同的点的个数大于一个设置的阈值超参,然后用一个面积为8的包围圈也包括了他并且这次的包围圈和面积为12的包围圈包围相同的点的个数大于一个设置的阈值超参。满足上面两个条件这个点就属于聚类结果,不然就属于离群点。
SpCL的两种任务
任务一:UDA,无监督领域泛化
这个主要是利用源域的数据来优化目标域的性能,目标域数据无标签。
任务二:USL,无监督
只使用目标域的数据,且目标域数据无标签。
任务一和任务二在使用SpCl的主要区别在于对比损失的计算有差异(去掉了和源域类中心计算对比损失)以及memory存储的特征不同(不存源域的类中心特征)。
对于任务一,对比损失如下:
对于任务二,对比损失如下: