人脸识别中的损失函数

人脸识别任务可以分为识别和核实两种。其中识别任务可以看作是一种分类任务,输入图片,输出人物身份类别;核实任务则是输入两张图片,输出判断这两人是否为同一个人。一方面,由于现实应用中更多的面对的是一个开集数据,也就是说应用中遇到的图片可能不是之前遇到的任何一个人;另一方面,可以通过对输入的测试图片与已知人物身份的图片进行核实来判断输入图片的身份。因此,当前的人脸识别研究更多的关注于核实任务。人脸核实任务通常通过将图片表示为一个向量(embedding),然后比较这两个向量的距离来判断两张图片是否是通过一个人。随着深度学习的兴起,人脸图片的向量表示通常通过神经网络学习得到。如此以来,模型性能的提升通常通过三个方面的改进来实现:训练数据及其预处理、网络结构设计以及损失函数设计。本文主要介绍近年来人脸识别方法再损失函数设计方面的发展。

人脸识别模型训练的损失函数主要分为基于分类的损失函数和基于triplet loss的损失函数两大类。其中基于分类的损失函数又因为是否对embedding或分类权重(W)做归一化以及是否增加额外的间隔(margin)等产生了多种变体;triplet loss则分为基于欧氏距离和基于角度距离两种。下面对这些损失及各种变体分别进行介绍。

基于分类(softmax)的损失

基本softmax分类损失

基本的softmax分类通过将embedding输入一层全连接层以及softmax函数得到分类概率。用 x,W,bx,W,b分别表示网络输出的人脸embedding以及全连接层的权重和偏置。那么经过softmax得到的分类损失可以表示为:

Lsoftmax=−1N∑i=1NlogeWTyixi+byi∑nj=1eWTjxi+bjLsoftmax=−1N∑i=1Nlog⁡eWyiTxi+byi∑j=1neWjTxi+bj

其中,NN表示样本数量,nn表示类别总数,yiyi表示样本xixi的真实类别。

由于softmax的分母对embedding在各个类别上的结果进行了求和,因此最小化这一损失一定程度上能够使类间距离变大,类内距离变小。得益于此,使用基本的softmax损失在大规模人脸数据上对神经网络进行训练得到人脸表示(embedding)在人脸核实任务上也能取得较好的效果。

Sphereface Loss

Sphereface Loss在softmax的基础上进一步引入了显式的角度间隔(angular margin),从而训练时能够进一步缩小类内距离,扩大类间距离。首先,将分类全连接层中的偏置bb置为0,那么可以得到下面的等式:

WTjxi=∥WTj∥∥xi∥cosθjWjTxi=‖WjT‖‖xi‖cos⁡θj

其中θjθj表示WTjWjT与xixi的夹角。这样以来损失函数就变成了:

L′softmax=−1N∑i=1Nloge∥WTyi∥∥xi∥cosθyi∑nj=1e∥WTj∥∥xi∥cosθjLsoftmax′=−1N∑i=1Nlog⁡e‖WyiT‖‖xi‖cos⁡θyi∑j=1ne‖WjT‖‖xi‖cos⁡θj

进一步地,我们将权重WW归一化,使∥W∥=1‖W‖=1,那么损失函数进一步变为:

L′′softmax=−1N∑i=1Nloge∥xi∥cosθyi∑nj=1e∥xi∥cosθjLsoftmax″=−1N∑i=1Nlog⁡e‖xi‖cos⁡θyi∑j=1ne‖xi‖cos⁡θj

如此以来,分类结果仅与embedding地范数∥xi∥‖xi‖和夹角θjθj相关,在此基础上,进一步引入角度间隔(angular margin)mm,就可得到sphereface loss:

Lsphereface=−1N∑i=1Nloge∥xi∥cosmθyie∥xi∥cosmθyi+∑nj=1,j≠yie∥xi∥cosθjLsphereface=−1N∑i=1Nlog⁡e‖xi‖cos⁡mθyie‖xi‖cos⁡mθyi+∑j=1,j≠yine‖xi‖cos⁡θj

CosineFace Loss

Cosineface进一步对人脸表示(embedding)xx进行了归一化,从而使分类结果仅取决于WTjWjT与xixi的夹角余弦;并进一步引入了余弦间隔mm,用于扩大类间距离,缩小类内距离。由于余弦的取值范围较小,为了使类别间差别更显著,进一步引入一个超参数ss用于放大余弦值。从而得到Cosineface的损失如下:

Lcosineface=−1N∑i=1Nloges(cosθyi−m)es(cosθyi−m)+∑nj=1,j≠yiescosθjLcosineface=−1N∑i=1Nlog⁡es(cos⁡θyi−m)es(cos⁡θyi−m)+∑j=1,j≠yinescos⁡θj

Arcface Loss

为了使人脸表示(embedding)的学习更符合超球体流形假设,Arcface进一步将Cosineface中的余弦间隔修改为角度间隔,得到如下损失:

Larcface=−1N∑i=1Nloges(cos(θyi+m))es(cos(θyi+m))+∑nj=1,j≠yiescosθjLarcface=−1N∑i=1Nlog⁡es(cos⁡(θyi+m))es(cos⁡(θyi+m))+∑j=1,j≠yinescos⁡θj

分类损失小结

总之,分类损失利用softmax函数的性质,促使模型学到的人脸表示(embedding)具有较小的类内距离,同时具有较大的类间距离。此类损失的改进大多是在softmax的基础上,引入不同类型的显式角度间隔,优化模型的分类边界,使得优化任务变得更难,限制更强,从而缩小人脸表示的类内距离,扩大类间距离。

上述四种分类损失得分类边界如下表所示:

损失函数分类边界

Softmax(W1−W2)x+b1−b2=0(W1−W2)x+b1−b2=0

SphereFace∥x∥(cosmθ1−cosθ2)=0‖x‖(cos⁡mθ1−cos⁡θ2)=0

CosineFaces(cosθ1−m−cosθ2)=0s(cos⁡θ1−m−cos⁡θ2)=0

ArcFaces(cos(θ1+m)−cosθ2)=0s(cos⁡(θ1+m)−cos⁡θ2)=0

对应的分类边界示意图如下所示:

可以看出,与原始的softmax分类边界相比,改进后的分类损失(SphereFace,CosFace,ArcFace)的分类边界之间具有更大的间隔。

Triplet Loss

与通过softmax优化使类内距离缩小,类间距离扩大不同,Triplet Loss直接对样本间的距离进行优化,使不同类样本间的距离比同类样本间的距离大出一个间隔。因此,计算Triplet Loss每次需要采样三个样本:anchor、positive 和 negative。其中,anchor 与 positive 样本属于同一类别,与 negative 样本属于不同类别。其公式表示如下:

Ltriplet=−1N∑i=1N(dist(xai,xpi)−dist(xai,xni)+m)Ltriplet=−1N∑i=1N(dist(xia,xip)−dist(xia,xin)+m)

其中,xx代表人脸表示(embedding),上标 a,p,na,p,n 分别表示 anchor,positive 和 negative。dist(x,y)dist(x,y) 表示 x,yx,y 的距离函数,mm 则表示不同类样本间距离比同类样本间距离大出的间隔。这里的距离函数和间隔既可以是欧氏距离也可以是角度距离等形式。

Triplet Loss 小结

Triplet Loss直接对样本表示间的距离进行优化,在训练数据足够多,模型表示能力足够强的情况下,能够学得很好的结果。不过其缺点是,一方面训练时模型收敛速度较慢,另一方面在构造triplet时需要选择合适的正样本对和负样本对,因此需要设计triplet的构造选择机制,这一过程通常比较复杂。较好的训练方式是先用分类损失训练模型,然后再用 Triplet Loss 对模型进行finetune以进一步提升模型性能。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容