《SSG》笔记ICCV oral

《Self-similarity Grouping : A Simple Unsupervised Cross Domain Adaptation》

摘要

要解决的问题:行人重识别的领域适应问题
提出的方法为:提出了一个self-similarity grouping的方法,这个方法探索无标签样本的潜在相似性(整体和部分身体),以此来根据不同的视角建立多域聚类。 同时还提出了一个one-shot的方法。
代码地址:https://github.com/OasisYang/SSG

动机和贡献

通常在计算机视觉任务中往往会存在一个普遍的问题,那就是我们在一个数据集上面训练好了一个模型,在这个数据集上可以获得不错的效果,但是当我们把这个模型应用在另外一个数据集上面的时候往往效果会变差。特别的,在行人重识别领域中,这个问题尤其的突出,比如我们在market1501上面训练了一个模型,测试的时候rank-1可以达到92%,但是当我们把这个模型应用在dukemtmc这个数据上面进行测试的时候,rank-1可能只有30%。最主要的原因还是因为这两个数据集之间的偏差太大。
目前的解决行人充实别领域适应的方法:

  • 通过UDA(unsupervised domain adaptation),一个通过聚类的方法,对特征进行聚类,打上弱标签的再进行监督训练的方法
  • 通过GAN(生成对抗模型),一个通过风格转换的方式,将两个数据像素表征进行改变,让两个域尽量的相似,体现再亮度,对比度,色彩鲜艳程度等

这篇文章是基于UDA来做的,作者指出之前的UDA总是假设源数据集和目标数据集有相同的类别,但是实际上在行人充实别领域中,这种假设是不存在的。这里作者关注的是the similar natural characteristics(相似的自然特性)。

上面这张图说明该方法的流程,将目标数据集的每张图片分为三个部分:全身/上半身/下半身,这每一个部分的图片都会通过聚类产生弱标签。所以每一个样本都会有三个弱标签。这三个部分聚类的目的应该是挖掘样本之间的相似性,也许在全身不划分在一起,但是在上半身or下半身会划分在一起。这样有利于监督模型对特征的学习(但是这样不会有更多的模糊信息存在嘛?)

所提出的方法

图片说明
如上图所示,这篇文章所提出的方法步骤如下:

  1. CNN的模型是ResNet50,同时已经在源数据集上训练好了
  2. 特征提取后,在每一次迭代中:
    (1). 将特征图分为上半身下半身,并在最后采用全局池化GAP
    (2). 对每一部分的特征进行聚类,并打上弱标签
    (3). 根据弱标签,更新CNN模型的参数,损失函数为triplet loss
    (4). 测试的时候将三部分的特征拼接在一起作为query的特征

全卷据预训练

baseline模型就是采用resnet50进行监督训练,训练的时候采用了交叉熵损失函数和triplet 损失函数。

无监督自相似聚类

作者认为,图像的特征提取已经很优越了,性能的下降只是因为相似性刻画的问题。所以作者在聚类的时候同时考虑全局,上半身,下半身三个部分的聚类,从而获得更多的相似性刻画,在多个维度上面对行人的相似性进行度量,有利于finetune。
产生的新的数据集如下:
图片说明
对于每一个样本都对应有三个标签。
除此之外,根据baseline的2048个维度的特征,在finetune的过程中也要考虑一个2048维度的从FC层变换得到的特征,他的弱标签共享于全身部分聚类得到的特征。所以SSG的损失函数如下:
图片说明
注意:测试的时候是不会拼接这个2048维度的特征的

基于聚类的半监督训练

传统的半监督训练大多基于one-shot learning,根据每一个类别的一个样本来进行模型的学习,但是在行人重识别中,样本的类别个数是不清楚的,所以one-shot在实际应用的过程是不适的。但是作者在这里采用了一个取巧的办法,根据聚类来获得哪一个one-shot的样本,然后训练的方法也如one-shot那样采用step-wise 的方式(《Exploit the unknown gradually: One-shot video-based person re-identification by stepwise learning》)。
一元样本的获得过程

  1. 在全局特征上采用无监督聚类,获得个分组
  2. 从每个分组中随机选择一个图片样本,构成一个非常小的子数据集
  3. 对这个小数据进行标签标注并进行标签对齐

这一部分呢具体的实现,可能需要我看了代码才能做进一步的补充,这已经是一个很不错的baseline了,有迁移学习的一系列东西。

实验结果

maret1501领域适应结果如下:
图片说明
可以看到这个方法比UDAP高了4.6个点的mAP,就是引入了上下两个部分的聚类。通过one-hot的标注,更可以有15个点的替身。

全部评论

相关推荐

1 1 评论
分享
牛客网
牛客企业服务