关于人脸的各种loss

1. 前言

人脸识别本身是一个很复杂的系统,从人脸的检测,定位,提取到识别,都有很多需要仔细研究的内容。单从人脸的识别来说,我们可以暂时简单地把目标定为,为人脸学习到一个好的特征表示。什么是好的特征呢?简单来说就是,同一个人的人脸特征是相近的,不同的人的人脸特征是远离的。

2. Deep Learning Face Representation by Joint Identification-Verification

为了更好地学习特征,这篇论文提出将IdentificationVerification都作为训练的目标,也就是使用两个loss的组合,使得学习的特征能够不仅用于分类,同时用于判断是否是同一个人。相应地:
Identification的loss,它用于判断属于哪一个类,使用softmax计算概率:

分类

Verification的loss,它使得同一个人的不同人脸的特征倾向于类似,不同人的人脸特征趋向于分开。使用L2 Norm,使得不同人的特征大于
m

verification

作者还使用了cosine similarity,如下d是两个特征向量的cosine 相似度:

verification

训练算法如下:


algorithm

很显然,该算法需要每次选取两个样本。

3. Deeply learned face representations are sparse, selective, and robust

在这篇论文中,作者提出三个对神经网络效果非常重要的因素:稀疏性,选择性,鲁棒性。
作者提出了DeepID2+,如下图:


DeepID2+
  1. 最终的特征维度为512维
  2. 作者将每一层卷积层的特征输出接FC层,加入到loss中。作者认为这样提高了监督信号的传递,以及在较低层的作用。
    如下图,是每层的准确率


    acc

4. SphereFace: Deep Hypersphere Embedding for Face Recognition

在这篇论文中,作者对常用的欧几里得距离提出了质疑。在常见的分类任务中,我们都会对特征进行处理,最终经过一个fc层得到每个类别的一个评分,评分最大的,就是我们预测的类。假设一个二分类任务,分类的边界就是:(\textbf{W}_1 - \textbf{W}_2)\textbf{x} + b_1 - b_2 = 0。其中\textbf{W}, b就是分类层的参数。
倘若对\textbf{W}进行归一化,是长度为1,将b置为0。边界变为:||x||(cos(\theta_1) - cos(\theta_2)) = 0,其中\theta_i\textbf{W}_ix的夹角。如下图:

Loss

  1. (图a,b)原始的softmax loss的边界是一条直线,它关注的是特征向量和\textbf{W}_i的内积哪个更大。
  2. (图c, d)对\textbf{W}进行归一化后,就相当于在一个球面,现在关心的是特征向量和\textbf{W}_i的角度大小。
  3. (图e, f)由于之前的边界在和两个类都过于接近,因此,得到的特征不会是分类效果好的特征,因此作者提出了A-Softmax。将分类边界变为:||x||(cos(m\theta_1) - cos(\theta_2)) = 0||x||(cos(\theta_1) - cos(m\theta_2)) = 0 。其中m控制的两个边界之间的区域的大小。如果你要问,那中间是什么?我认为,中间属于错分类区域。也就是说,在分类的时候,必须使得特征向量在正确区域的里面,这个正确区域比原来的softmax要小,这就是loss要完成的事情。
    论文中还特地提到了hypersphere manifold,之前看过一些流形的内容,在这里,感觉只是提了一个高大上的概念而已。

5. NormFace: L2 Hypersphere Embedding for Face Verification

在这篇论文中,作者对分类层(FC)的特征和参数都进行了归一化处理,却发现在很多轮的训练后,网络依旧没有收敛,因此,作者探究了这个现象的原因,并提出了可以训练这种网络的方法。
作者回答了如下问题

  1. 为什么对特征归一化处理在测试阶段会很有效?
  2. 为什么仅仅优化cosine相似度无法收敛?
  3. 怎样在使用softmax loss的时候来优化cosine相似度?
  4. 既然归一化后无法收敛,那么针对归一化特征是否有其他合适的loss?

回答

  1. 对于问题一,参考下图:
    normalization

    左图可以看到如果使用欧几里得距离,f_2f_1更近,和f_3相距较远,但是f_2f_3属于同一类。右图可以看到,用softmax分在类别0的区域。作者发现特征向量之间角度比欧式距离,内积更好。
    作者解释了为什么softmax会出现右图的样子。当使用softmax进行分类的时候,结果就是\textbf{W}_i \textbf{f}最大的那个i。并且,对于最大的那个iP_i(s\textbf{f}) \ge P_i(\textbf{f}) 对于s\lt 1 总是成立的。这说明softmax总是倾向于增大特征的绝对值。对于加了偏置的分类层,作者同样进行了分析,并且发现有些类会聚集在零点附近。因此,倘若进行归一化,就会使得这些类分散在四周,得到非常差的效果。

论文中,作者对特征和参数使用如下归一化方式:


normalization

梯度如下图:


梯度

因此,向量正则化后进行反向传递,总会导致向量的长度增加。
  1. 为什么不收敛呢?正则化后,相当于优化余弦距离:
    cosine

    这主要是因为,正则化后的d(\textbf{f}, \textbf{W_i})在-1 到 1之间,然而如果使用内积 和 softmax loss常常是(-20,20)(-80, 80)。这使得概率P_{y_i}(\textbf{f};\textbf{W}) = \frac{e^{W_{y_i}^Tf}}{\sum_j^ne^{W_j^Tf}}很难接近1,即使它已经分的很好了。同时由于softmax loss总会给予ground truth那一类 P_i - 1的梯度,使得模型总会给分得很好的样本很大的梯度,然而,分得不好的的梯度却很小。
    作者证明了,即使在所有样本被很完美地分类(每个样本的特征和对应的类的weight 完全一样)时,正则化后的softmax loss也会有一个较大的下限。
    那么解决方法就是,不要正则化到1,而是一个大于1的值(下限)。如下图:
    lower bound

5.1 REFORMULATING METRIC LEARNING

作者研究了正则后的metric learning,例如:contrastive loss,triplet loss。由于正则后,内积可以看作欧几里得距离,如下式:

loss

W_i
看作是一个样本的特征(文章中称为agent of i-th class),可以将contrastive loss 和 triplet loss看作:
loss

// TODO
这样的loss有一些不好的地方,就是对于边界内的负样本没有作用。如下图:


loss

阴影的红点是没有被loss作用到的点。

6. Large-Margin Softmax Loss for Convolutional Neural Networks

L-softmax设计了一个新的分类层,用于增大特征的表达性能。如下图:


lsoftmax

7. FaceNet: A Unified Embedding for Face Recognition and Clustering

在这篇论文中,作者使用了一个神经网络(Inception,ResNet等)作为特征提取器,将输出的特征用triplet loss进行训练。这样的结构不需要分类层,模型会非常小。
Triplet Loss

loss

loss

训练的时候会选择一个三元组,anchor,negative,positive,其中anchor和positive属于同一个类,negative是其他类。loss就是拉大anchor negative距离,减少anchor和positive距离。
这样的方法关键在于如何选择三元组。

8. ArcFace: Additive Angular Margin Loss for Deep Face Recognition

ArcFace的loss如下:

loss

需要注意的是
m
的选择决定了
\theta
的取值范围,如果
m=0.5
,那么
\theta
仅仅在
\theta \lt 151.35^o
的时候单调,但是作者调查发现,
\theta
根本不那么大,因此就没有考虑。
阅读ArcFace的源码会发现,对于
cos(\theta)
小于0的样本来说,作者并没有进行
cos(\theta + m)
的变换,而是按照原来的fc层进行操作。这样做的原因,猜想是对于
\theta \lt 90^o
来说,本身已经是一个hard example了,也就是说本身的loss已经会很大了,就没有必要加个
m
弄得更大了。在具体的实验中,我也发现如果没有这样的考虑,一视同仁的话,会导致loss很难收敛。

后记

还有很多关于人脸,metric learning的文章没有仔细读,即使是介绍的这几篇也不是全部理解。为了在大规模的人脸识别中学习到discriminative的特征,需要在很多地方做文章 。即使是一个更有效的loss,如果参数没有选择好,很可能得到的效果还不如普通的fc。

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

推荐阅读更多精彩内容