和 MMT 那篇有着异曲同工之妙,同一年发出,不过这篇专注于多个mean-teacher模型的融合
论文收录:ECCV2020
论文地址:http://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123520579.pdf
论文代码:https://github.com/YunpengZhai/MEB-Net
思路
提出一个相互学习策略:用不同结构的多个网络(expert)在源域训练,学习特定的特征,然后通过这些expert相互学习实现跨域。
方法
本质上是一个模型融合的方法。分两个阶段:多个CNN在源域训练;互相学习进行域适应。
Learning in Source Domains
每个CNN用soft交叉熵+三元损失训练。
Clustering in the Target Domain
目标域的每个样本都输入到每个CNN(已经在源域训练好的)获得特征;将每个CNN的特征相加取平均获得该目标域样本的平均特征;利用该平均特征来聚类产生伪标签。
Expert Brainstorming
目的:把不同CNN获得的预测结果,相互做损失。
采用EMA方式获得每个CNN的预测label,然后将它们当作其他CNN直接预测标签的一个软gt,做交叉熵损失。每一个CNN的更新则是这些交叉熵损失之和。
同理,以此方式做三元损失。
此外,还对CNN直接预测的label与聚类得到的label做三元和交叉熵损失,为了从聚类标签中获得有效判别性特征。
Authority Regularization
目的:由于不同的CNN有着不同的判别能力,因此需要平衡一下每个expert之间的差异性,即让判别性高的权值更大。
权值的计算:每个CNN都对目标域样本聚类,类内聚类参数——每个样本的特征与该类样本平均特征做L2损失;类间聚类参数——每个类的样本平均特征与所有类的平均特征做L2损失。J 为类间参数除以所有类内参数之和。J越大说明聚类效果越好。
最后计算的是 teacher的 J, 然后每个 CNN 的 teacher 的 w 参数是该teacher的 j 除以所有 J 之和(即归一化到0-1)
得到的权重参数 w 用在 mutual 三元和交叉熵损失。
实验
1、用了三个模型:densenet121,resnet50,inceptionv3
2、测试仅用一个expert网络
3、模型融合 + 聚类 效果也比较高了
4、single model transfer
总结
1、模型融合 + mean teacher +聚类
多个模型得到 feature 然后取平均特征做聚类得到伪标签;用某个模型的mean teacher获得的 预测值 去监督其他模型的 预测值 ,同时每个模型的输出应该与伪标签一致。
2、复现了论文中单模型的点数,正负0.3个点,效果还是顶的。