前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人脸识别损失函数疏理与分析

人脸识别损失函数疏理与分析

作者头像
李拜六不开鑫
发布2020-08-05 15:28:31
2.2K1
发布2020-08-05 15:28:31
举报
文章被收录于专栏:本立2道生本立2道生

目录

  • 写在前面
  • Cross-Entropy Loss (softmax loss)
  • Contrastive Loss - CVPR2006
  • Triplet Loss - CVPR2015
  • Center Loss - ECCV2016
  • L-Softmax Loss - ICML2016
  • A-Softmax Loss - CVPR2017
  • AM-Softmax Loss-CVPR2018
  • ArcFace Loss - CVPR2019
  • 欧氏距离or角度距离与归一化
  • 参考

博客:博客园 | CSDN | blog

写在前面

Closed-set 和 Open-set 人脸识别的对比如下,

Comparison-of-open-set-and-closed-set-face-recognition.png
Comparison-of-open-set-and-closed-set-face-recognition.png

两张人脸图像,分别提取特征,通过计算特征向量间的距离(相似度)来判断它们是否来自同一个人。选择与问题背景相契合的度量方式很重要,人脸识别中一般有两种,欧氏距离余弦距离(角度距离)

训练阶段和测试阶段采用的度量方式要一致,如果想在测试阶段使用欧氏距离,自然在训练阶段就要基于欧氏距离来构造损失进行优化。

实际上,不同度量方式间存在着一定的内在联系,

  • 欧氏距离与向量的模和角度都有关,模固定,角度越大欧氏距离也越大,角度固定,模同比增大欧式距离也增大,模分别增大情况会比较复杂;
  • 余弦距离和角度距离有单调关系(负相关),但两者分布的“密度”不同,观察余弦函数曲线可知,在角度从0向
\pi

匀速(线性)前进时,余弦值在0和

\pi

附近缓慢变化,在

\frac{\pi}{2}

附近近似线性变化

  • 当向量模长归一化后,欧氏距离和余弦距离有单调关系,所以,在预测阶段,归一化后的特征选取哪种度量进行判别均可

可对不同损失函数按度量方式进行划分,

  • 欧氏距离:Contrastive Loss,Triplet Loss,Center Loss……
  • 余弦距离(角度距离):Large-Margin Softmax Loss,Angular-Softmax Loss,Large Margin Cosine Loss,Additive Angular Margin Loss……

先从最基本的Softmax Loss开始。

Cross-Entropy Loss (softmax loss)

交叉熵损失,也称为softmax损失,是深度学习中应用最广泛的损失函数之一。

指数操作会将映射前的小差异指数放大,Softmax Loss希望label对应的项越大越好,但因为指数操作的存在,只需要映射前差异足够大即可,并不需要使出“全力”。

在人脸识别中,可通过对人脸分类来驱动模型学习人脸的特征表示。但该损失追求的是类别的可分性,并没有显式最优化类间和类内距离,这启发了其他损失函数的出现。

Contrastive Loss - CVPR2006

Contrastive Loss由LeCun在《Dimensionality Reduction by Learning an Invariant Mapping》CVPR2006中提出,起初是希望降维后的样本保持原有距离关系,相似的仍相似,不相似的仍不相似,如下所示,

Graph-of-Contrastive-Loss.png
Graph-of-Contrastive-Loss.png

类内希望距离越小越好,类间希望越大越好(大于margin),这恰与人脸识别特征学习的目的相一致。Contrastive Loss在DeepID2中得以使用,作为Verification Loss,与Softmax Loss形式的Identification Loss构成联合损失,如下所示,

这种Softmax Loss + 其他损失 构成的联合损失比较常见,通过引入Softmax Loss可以让训练更稳定,更容易收敛。

Triplet Loss - CVPR2015

Contrastive Loss的输入是一对样本。

Triplet Loss的输入是3个样本,1对正样本(同一个人),1对负样本(不同人),希望拉近正样本间的距离,拉开负样本间的距离。Triplet Loss出自《FaceNet: A Unified Embedding for Face Recognition and Clustering》。

triplet-loss.png
triplet-loss.png

损失函数如下,

该损失希望在拉近正样本、拉开负样本的同时,有一个margin,

Softmax Loss最后的全连接层参数量与人数成正比,在大规模数据集上,对显存提出了挑战。

Contrastive Loss和Triplet Loss的输入为pair和triplet,方便在大数据集上训练,但pair和triplet挑选有难度,训练不稳定难收敛,可与Softmax Loss搭配使用,或构成联合损失,或一前一后,用Softmax Loss先“热身”。

Center Loss - ECCV2016

因为人脸表情和角度的变化,同一个人的类内距离甚至可能大于不同人的类间距离。Center Loss的出发点在于,不仅希望类间可分,还希望类内紧凑,前者通过Softmax loss实现,后者通过Center Loss实现,如下所示,为每个类别分配一个可学习的类中心,计算每个样本到各自类中心的距离,距离之和越小表示类内越紧凑。

center-loss-algorithm.png
center-loss-algorithm.png

希望达成的效果如下,

center-loss-distribution-of-features.png
center-loss-distribution-of-features.png

以上损失在欧氏距离上优化,下面介绍在余弦距离上优化的损失函数。

L-Softmax Loss - ICML2016

L-Softmax 即 large-margin softmax,出自《Large-Margin Softmax Loss for Convolutional Neural Networks》。

L-Softmax-Geometric-Interpretation.png
L-Softmax-Geometric-Interpretation.png

A-Softmax Loss - CVPR2017

A-Softmax即Angular-Softmax,出自《SphereFace: Deep Hypersphere Embedding for Face Recognition》

L-Softmax中,在对

x_i

归类时,会同时考虑类中心向量的模夹角

A-Softmax的最大差异在于对每个类中心向量进行归一化,即令

||W_j|| = 1

,同时令bias为0,在分类时只考虑

x_i

W_j

的夹角,并引入和L-Softmax相同的margin,如下所示,

\[\mathcal{L}_{\mathrm{AS}}=-\frac{1}{N} \sum_{i=1}^{N} \log \left(\frac{e^{\left\|\boldsymbol{x}_{i}\right\| \psi\left(\theta_{y_{i}, i}\right)}}{e^{\left\|\boldsymbol{x}_{i}\right\| \psi\left(\theta_{y_{i}, i}\right)}+\sum_{j \neq y_{i}} e^{\left\|\boldsymbol{x}_{i}\right\| \cos \left(\theta_{j, i}\right)}}\right) \\ \psi(\theta_{y_i, i})=(-1)^{k} \cos (m \theta_{y_i, i})-2 k, \quad \theta_{y_i, i} \in\left[\frac{k \pi}{m}, \frac{(k+1) \pi}{m}\right], k \in [0, m-1] \]

m=1

时,即不引入margin时,称之为 modified softmax loss

Softmax Loss、Modified Softmax Loss和A-Softmax Loss,三者的决策面如下,

A-Softmax-decision-boundaries.png
A-Softmax-decision-boundaries.png

可视化如下,

A-Softmax-Geometry-Interpretation.png
A-Softmax-Geometry-Interpretation.png

AM-Softmax Loss-CVPR2018

AM-Softmax即Additive Margin Softmax,出自论文《Additive Margin Softmax for Face Verification》,同CosFace 《CosFace: Large Margin Cosine Loss for Deep Face Recognition》,CosFace中损失名为LMCL(Large Margin Cosine Loss)。

Additive-Margin.png
Additive-Margin.png
AM-Softmax-visualization.png
AM-Softmax-visualization.png

ArcFace Loss - CVPR2019

ArcFace Loss 即 Additive Angular Margin Loss,出自《ArcFace: Additive Angular Margin Loss for Deep Face Recognition》。

AM-Softmax Loss将margin作用在余弦距离上,与之不同的是,ArcFace将margin作用在角度上,其损失函数如下,

ArcFace.png
ArcFace.png

把margin是加在余弦距离(CosFace)还是加在角度(ArcFace)上,在《Additive Margin Softmax for Face Verification》中有这样一段分析,

Angular-Margin-or-Cosine-Margin.png
Angular-Margin-or-Cosine-Margin.png

ArcFace中并没有求取arccos,所以计算并不复杂,而是把margin加在了角度上,但优化的仍是余弦距离。

还有一点需要注意的是,无论margin是加在余弦距离上还是加在角度上,单纯看示意图,很容易看出减少了类内距离,那类间距离增加呢?

文中,给出了类内距离和类间距离的数学描述,如下:

欧氏距离or角度距离与归一化

这里,再讨论下为什么对W和x的模进行归一化,主观思考偏多,未经验证。

在文章为什么要做特征归一化/标准化?中,我们提到

参考

  • A Performance Comparison of Loss Functions for Deep Face Recognition
  • InsightFace: 2D and 3D Face Analysis Project
  • 人脸识别的LOSS(上)
  • 人脸识别的LOSS(下)
  • 深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • Cross-Entropy Loss (softmax loss)
  • Contrastive Loss - CVPR2006
  • Triplet Loss - CVPR2015
  • Center Loss - ECCV2016
  • L-Softmax Loss - ICML2016
    • A-Softmax Loss - CVPR2017
    • AM-Softmax Loss-CVPR2018
    • ArcFace Loss - CVPR2019
    • 欧氏距离or角度距离与归一化
    相关产品与服务
    人脸识别
    腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档