论文:“Data Uncertainty Learning in Face Recognition”
代码参考:https://github.com/Ontheway361/dul-pytorch
文中使用分类和回归两种方法学习不确定性:
共同点是 在最后的卷积层后接两个嵌入(维度相同),一是均值mu,一是方差sigma(训练时使用方差的对数),即假设人脸特征是满足(mu、sigma)的高斯分布。
不同点在于:
1、基于分类的方法(DUL_CLS):
使用(mu + xi * sigma)作为最后的特征表达(xi是服从标准正态分布,和特征同维的随机向量),后接分类的全连接层。损失是am-softmax等分类损失 + lambda * KL 损失(为了使特征的分布接近标准正态分布,lambda是一个很小的系数)。
2、基于回归的方法(DUL_REG):
2a、先训练一遍嵌入只有一个的确定性模型,保存其中用于分类的全连接层,由C个D维权重向量(即类中心)组成(D是嵌入维度,C是类别数)。
2b、修改嵌入为两个,固定backbone参数,finetune,输入样本,得到mu和sigma,计算样本所在类的权重向量属于(mu,sigma)分布的对数似然,最大化batch中所有样本的对数似然乘积,取其反即为损失。