Self-similarity Grouping: A Simple Unsupervised Cross Domain Adaptation Approach for Person Re-identification(ICCV_2019)
文章链接
代码链接:https://github.com/OasisYang/SSG
文章大致思路如下
SSG框架
1、有监督训练:
用ResNet50在源数据集上进行预训练,其中ResNet50最后一层删去,加两层全连接层(FC),一个2048维,一个Ps维,训练过程结合cross-entropy loss 和 hard-batch triplet loss。
2、无监督训练(每一次迭代):
①将无标签的图像输入到有监督训练好的模型中提取特征Ft(全局特征),然后再将图片分割为上下两部分,即将Ft分Ft_up,Ft_low,然后进行全局平均池化操作,得到三个特征向量:
②分别对整体(蓝色)、上身(绿色)、下身(红色)三个部分进行聚类,即在得到三个特征向量组的基础上,利用DBSCAN聚类方法对三组图像分别进行分类赋予伪标签yt,yt_up, yt_low,且三组图像的聚类互不干扰。
根据自标签建立新的数据集,如下式所示:
除了式1的特征向量集以外,SSG还另外在提取全局特征向量(蓝色)后,再增加一个FC层,得到新的特征向量ft_e(灰色),2048维,且拥有与ft相同的标签。
③将伪标签作为监督信息,利用triplet loss来更新CNN模型,最终目标函数表达式为:
3、测试阶段:
将三个特征向量组合起来,为图像的特征表达
SSG+——Clustering-guided Semi-Supervised Training
除了SSG框架,文章还提供一种半监督训练思路。
1、基于ft,利用聚类算法生成Ng组类别
2、接着从每类中随机选取一张图,形成新的数据集Xg(Ng张图)
3、对Xg进行手动注释,并根据注释进行分类
4、提取Xg中的特征向量fg,fg_up,fg_low(过程类似于SSG)
5、给定一个未标注的图像,然后根据三种特征向量检索,从Xg中找到与之最相似的,将相应的三类标签赋予该图像,如下式所示
这里的距离采用K-倒数编码法来计算。
SSG++——半监督与全监督结合
将SSG与半监督结合,形成一个端到端的训练网络
Results
由此可以发现半监督与全监督结合的效果最佳
完
(个人理解,仅供参考)