本文重点讲损失函数和MMT框架的流程
其余内容可参考Mutual Mean-Teaching:为无监督学习提供更鲁棒的伪标签
下图是单个网络做无监督域适应的ReID框架。损失函数包括两部分基于交叉熵的分类损失(Classification Loss)和三元损失函数(Triplet Loss),表达式如下:
各参数和符号的具体含义自行查阅...
下图是MMT的框架,其损失函数除了上述两个,重新定义了软分类损失(Soft Classification Loss)和软三元损失函数(Soft Triplet Loss)。首先,软分类损失函数表达式如下所示,意思是平均模型预测的类别概率值与对方网络预测的类别概率值的差异。
接着是MMT重新自定义的软三元损失函数,意思是平均模型预测值与对方网络预测值的差异。
综上所述,MMT的损失函数包括四部分,硬分类损失 硬三元损失 软分类损失 软三元损失,硬损失是由网络本身得到的,软损失是由平均模型得到的。具体表达式如下:
下图是算法流程,具体描述一下:
- 在源数据集上预训练两个模型Net 1和Net 2(两个网络的初始化参数不同),损失函数只有公式1和公式2,即公式3
- 将上述两个预训练模型在目标域计算特征,并使用Kmeans聚类算法得到 hard pseudo labels
- Net 1和Net 2通过前向传播计算得到硬分类损失和硬三元损失
- 计算两个平均模型,并结合Net 1和Net 2输出的特征计算软分类损失和软三元损失
- 上述四个损失加权更新Net 1和Net 2
- 重复2,3,4,5
Reference paper:Mutual Mean-Teaching- Pseudo Label Refinery for Unsupervised Domain Adaptation on ReID