论文地址
官方代码代码还没完全放出来
一篇解决无监督domain adaption reid的文章,发表在了ICCV2019上面。
前言
实际上无监督domain adaptive reid主要解决的是源数据集有标签,目标数据集无标签,我们用这样两个数据集训出来的模型要在源数据集和目标数据集上都表现得好,是一件有挑战性的工作。
在这篇论文中,作者提出了一种递进增强的自训练方法(progressive augmentation framework (PAST))来逐步提高模型在目标域上的表现。包含两个stages,一个是保守stage(conservative stage),一个是促进stage(promoting stage)。conservative stage 用triplet-based loss捕捉目标域数据点的局部结构,来提高特征表示。promoting stage在网络的最后一层增加一个可更改的分类层,连续不断地优化网络,使其可以使用关于数据分布的全局信息。更重要的,提出了一个全新的自训练策略,可选择地采用conservative和promoting stage,来递进地增强模型的表现力。此外,为了提高选择的triplet 样本的可靠性,我们在保守阶段引入了ranking-based triplet loss,这是一个基于数据对之间相似性的无标记目标函数。
介绍
通常来说,直接用source domain训好的模型去测试target domain的模型效果不好,因为源域和目标域之间的模型有domain shift的问题。在无监督跨域reid中,这个问题就变成了如何将在source domain上预训练训好的模型通过无监督有效地转换到目标域。
一些domain transfer用打伪标签的方法,比如用k-means或者DBSCAN聚类,每类当作是一个人。缺点就是效果很依赖于聚类的质量。
PAST:
- 在训练早期生成伪标签质量较差时抑制错误放大。
- 当标签质量更好后,逐步加入高置信度的标签样本,用于自训练
conservative stage
图1里面我们可以看到,正确标签的数据在一开始时很低的,因为domain shift。所以我们需要筛选出confidently的标签的样本来减少label noise。通常用图像相似度来当作confidence度量,常用的clustering-based triplet loss (CTL)对伪标签的质量很敏感,所以作者提出了一个label-free的loss,叫做ranking-based triplet loss(RTL)。
具体来说,我们为整个target dataset计算一个ranking 分数矩阵,然后产生triplets(从top n和(n,2n】positive加negative样本)。然后用所提出的RTL来计算loss。
conservative stage主要是在训练早期时用来防止模型坍塌(早期label质量低)
Promoting stage
训练的triplets在大数据集训练时动态增长,如果值用triplet loss,很容易陷入局部最优(可以看图1CTL和CTL+RTL的对比)。解决:把每个cluster当作一个类,然后把学习过程当作一个分类问题(就是用了交叉熵)。因为如果label一开始质量低的话,对分类会造成很大影响,所以promoting stage放在了conservative stage后面。
方法
整体框架如上图所示。主要是包含两个模块:conservative stage 和promoting stage。
首先,模型在源域上进行预训练,然后用这个模型对target domain T的所有图像进行特征提取,得到F,当作我们框架的输入。在conservative stage中,基于ranking score matrix,我们通过HDBSCAN聚类的方法产生更可靠的训练样本
TUT_U</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.83em; vertical-align: -0.15em;"></span><span class="mord"><span class="mord mathit" style="margin-right: 0.13em;">T</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.32em;"><span style="top: -2.55em; margin-right: 0.05em; margin-left: -0.13em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathit mtight" style="margin-right: 0.1em;">U</span></span></span></span><span class="vlist-s">?</span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"></span></span></span></span></span></span></span></span></span>。<span class="katex--inline"><span class="katex"><span class="katex-mathml">TUT_U</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.83em; vertical-align: -0.15em;"></span><span class="mord"><span class="mord mathit" style="margin-right: 0.13em;">T</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.32em;"><span style="top: -2.55em; margin-right: 0.05em; margin-left: -0.13em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathit mtight" style="margin-right: 0.1em;">U</span></span></span></span><span class="vlist-s">?</span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"></span></span></span></span></span></span></span></span></span>是T的一个子集。结合clustring-based triplet loss 和提出的ranking-based triplet loss,当前更新训练集的局部结构被用来模型优化。接着,我们就可以用优化了的新模型来提取特征<span class="katex--inline"><span class="katex"><span class="katex-mathml">FUF_U</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.83em; vertical-align: -0.15em;"></span><span class="mord"><span class="mord mathit" style="margin-right: 0.13em;">F</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.32em;"><span style="top: -2.55em; margin-right: 0.05em; margin-left: -0.13em;"><span class="pstrut" style="height: 2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathit mtight" style="margin-right: 0.1em;">U</span></span></span></span><span class="vlist-s">?</span></span><span class="vlist-r"><span class="vlist" style="height: 0.15em;"></span></span></span></span></span></span></span></span></span>。在promoting stage,用分类的思想,用交叉熵loss来进一步的优化网络。最终,模型交替的训练conser stage’和promoting stage。</p>