Center Loss在人脸识别中有何应用?

雷锋网按:本文作者祝浩(皮搋子狐狸),3M Cogent Beijing R&D 高级算法工程师。本硕分别毕业于哈尔滨工业大学机械专业和北京师范大学计算机专业,并于2012年加入3M。14年拿到NICTA Scholarship及top-up Scholarship。熟悉计算机视觉,神经影像和医学图像处理。在各种相关国际会议期刊上发表论文10余篇。

摘要

在大家吐槽用softmax训练出来的人脸模型性能差,contrastive 和 triplet需要个中谜一样的采样方法之际。ECCV 2016有篇文章提出了权衡的解决方案。通过添加center loss使得简单的softmax就能够训练出拥有内聚性的特征。该特点在人脸识别上尤为重要,从而使得在很少的数据情况下训练出来的模型也能有不俗的性能。本文尝试用一种比较容易理解的方式来解释这篇文章。

我觉得在开始正式介绍center loss之前,我有必要讲一个故事。请大家回答我,做人脸研究,最期待的事情是什么?来100块Titan……!咦,还不如换成银子呢。

笔者认为,对于做人脸的人而言,最幸福的事情就是拿到全世界所有人的若干张人脸数据(画外音:地球人都知道!)。各位看官先勿开喷,请听故事….假设我拿到了世界所有人的人脸数据,也训练好了一个所谓的映射空间(其实我更喜欢叫嵌入空间)…..此时我们觉得这个空间的画风应该是这样的(密集恐惧症慎入)….

图 1

咦?这不是海洋球么→_→,我书读得少你不要骗我?各位看官好眼力,这真的就是海洋球( T___T )。如果我们把一个球就看成一个人的话,球的中心就是类中心,直径就是他若干张照片带来的variance。理想情况我们当然认为每个人所代表的球应该差不多大,人与人之间也是能分开的,就跟海洋球一样。然后海洋球所在的池子呢,就是能容纳所有球的界。

梦做完了,醒醒,我翻了翻硬盘,也就有10W人的数据。现实总是那么骨感。接下来发生的事情胖子可能会不太爱听,因为我们只有10W人的数据,但是池子还是很大,如果我们用普通的方法训练的话,海洋球就会填不满这个池子。最简单的解决方案就是,我们从50亿个海洋球,变成10W个足球(估计还是不够,没准得用月球( ¯ □ ¯ )),对,你没听错,通过变成吃货长胖这种方式我们把损失49亿多海洋球弟兄的空间填满了。

图 2

看官可能会问,填满了不就填满了么?有什么问题么?请大家注意,虽然那49亿多个兄弟不在你的训练集里面,但是有可能在你的测试集哟。所以当以前的两个离得比较近的海洋球兄弟进入到这个胖子的世界的时候(‘‘)(’’), 这个新世界会要求新来的弟兄跟他们的国民一样胖,然后悲剧发生了。他们很有可能撞在了一起,以至于他们老妈都很有可能都分不清谁是谁(因为在小数据情况下的可分行并不能推广到全集)。如图3,如果用所有数据训练是可分的话,只用部分数据训练因为变胖问题,会使得两个不同的identity出现碰撞风险,从而会造成错误接受和错误拒绝

图 3

那么请问,什么样的方式才合理呢?鄙人认为,我心目中比较合理的海洋球摆放画风应该是这样的(7颗海洋球用来召唤神龙 (╯-_-)╯):

图 4

该画风的满足的条件就一个,那10W海洋球兄弟不允许吃胖。这样剩下来的空间就能够给他们每人一个大院子,这样一旦有新的朋友(49亿多个兄弟)来玩耍的时候,不至于撞得他们老妈都分不清楚是谁(至少从概率上极大的降低了)。

不好意思,主持人,故事讲得太爽,忘记我们是来讲一篇paper的了 (╯-_-)╯╧╧  。今天我们要讲的文章名字叫做A Discriminative Feature Learning Approach for Deep Face Recognition. 在放公式驱散一票读者之前,我觉得还是放点图来缓和一下作者和读者之间的紧张关系。论文中提出我们之前训练出来的features只是可分而已(下图左),如果要得到一个判别性比较高的features应该是右边这种样子的。用我们的胖子理论,不好意思应该叫海洋球理论,大家就可以知道,并且理解为什么右图的特征更合理。

图 5

我们用论文中的另一个图来表达,海洋球理论的论据。我们在图6的左上图上画了三条线来模拟feature之间的角度(因为人脸verification基本上就是cosine距离),可以看到,如果每一个类别吃的太胖,可能会导致他的类内距离可能比类间距离大,从而……你懂的(假分很高)。如果我们引入论文中的center loss并且给一个比较高的weight的时候,比如右下图,我基本找不到反例了。

图 6

同时新的未知类别进来的时候也有更大的概率会和其他的类别分开(包含未知类和已知类)。在这center loss起到的作用就是减肥剂,怎么让一个比较胖的类内数据分布,变瘦,从而使得他有足够的院子容纳新的客人。

以上文字给初学者品尝,接下来的文字将会上公式,请有耐心的初学者和大牛们接着往下看。整个softmax+center loss的定义如下:

我基本不太想解释一遍…….左边是softmax,右边嘛,就是约束当一个样本看到自己的类中心的时候,走上去打个招呼。这样才能瘦。主持人快来…..我编不下去了…..

可能大家会问了,为什么需要右边的约束才能达到这个效果呢?softmax为什么达不到这个效果?或者说softmax有啥缺点?

昂,简单来说就是伟大的softmax管杀不管埋。不对,应该说是只许自己胖,不准别人胖。

各位看官请看softmax的更新函数,如果出现input的条件概率分数比较低的情况,他就会告诉所有的参数,\theta_j。你们碍着我长胖了,离我远点,然后乘机偷偷的向着input方向长胖一点(不改其吃货本质)。所以每个类都这么流氓的结果,就是大家都变成胖子,每个胖子的鼻子都贴着另一个胖子。

写到这本来想停笔了,但是wanda同学提了个问题。这玩意和contrastive loss和triplet loss之间有什么区别或者是联系没有呀?

上面的公式可以看成softmax + contrastive loss只不过只提供一个类内样本作为pair,而这个类内样本就是整个类的类中心。这在一定程度上解决了contrastive loss坑爹的采样问题,大家都知道contrastive loss需要坑爹的采样很多pair对,一不小心还会搞得positive pair和negative pair严重imbalance。

尽管triplet一定意义上解决了这个imbalance的问题,带来的后果是更复杂的采样策略,导致实际在使用过程中的trick实在太多,什么semi-hard example mining等等。Center loss相当于拆解了contrastive loss的两种情况:positive pair和negative pair。Center loss相当于把每一个进来的样本都自动配了一个positive sample(也就是他们类中心), negative pair的inter-class separation则是通过softmax来完成的,就是那么的简单粗暴有效。

Wanda童鞋已经重复出很positive的结果并提供了mxnet code,欢迎试用。

雷锋网(公众号:雷锋网)注:本文由深度学习大讲堂授权雷锋网发布,如需转载请注明作者和出处,不得删减内容。 

本文作者:深度学习大讲堂

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-12-25 14:54:09

Center Loss在人脸识别中有何应用?的相关文章

【首次超越人类】旷视行人再识别(ReID)突破,人脸识别后创新纪录

近年来,人脸识别技术的成熟使得机器在辨别人脸的能力上大举超过人类,在构建"智慧城市"."平安城市"等方面也得到了广泛应用.然而在实际应用的场景中,摄像头并非在任何情况下都可以拍摄到清晰人脸.不仅如此,在实际的场景中,一个摄像头往往无法覆盖所有区域,而多摄像头之间一般也没有重叠. 因此,用全身信息来对人员进行锁定和查找就变得十分必要--通过将整体行人特征作为人脸之外的重要补充,实现对行人的跨摄像头跟踪.于是,计算机视觉领域开始逐渐展开针对"行人再识别&quo

基于 OpenCV 的人脸识别

##一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展览的技术实现中,都有 OpenCV 的身影. OpenCV 起始于 1999 年 Intel 的一个内部研究项目.从那时起,它的开发就一直很活跃.进化到现在,它已支持如 OpenCL 和 OpenGL 等现代技术,也支持如 iOS 和 Android 等平台. 1

《战狼2》中人脸识别无人机表现不俗,军、警用果真如此高能?

"非洲某国战乱,战火蔓至海外华人,雇佣兵辣手残杀普通平民,在此危急时刻,前解放军特种兵冷锋挺身而出单刀赴会,中国海军舰队临危上线奔袭掩护-.."前不久上映的军事动作电影<战狼2>以其燃爆男性荷尔蒙的火爆战争打斗场面一时间刷屏朋友圈,上映后不久便迅速吸金39亿,成功打破中国电影票房纪录. 本片中,海陆空各种高能武器集中展示,闪瞎围观群众.从海军装备来说,搭载垂直发射系统的中国海军052D驱逐舰排浪而来.054A护卫舰不怒自威,最让人意外的是,连中国航母辽宁舰也首次在商业片中&

fusesource-做人脸识别算法,在进行肤色分割时遇到一些问题,求大神帮助!

问题描述 做人脸识别算法,在进行肤色分割时遇到一些问题,求大神帮助! 在做人脸识别算法的肤色分割时遇到一些问题,求大神帮助! 对图像进行光线补偿后,把图像从RGB空间转换到YCbCr空间,然后根据已经统计好的肤色模型计算其肤色相似度,最后转换为灰度图,可是转换后结果如图所示: 代码如下,求大神帮看看哪里出了问题!大谢! %fR1/fG1/fB1均为光线补偿后的图像数据: %彩色空间转换 fCb1=128-0.147*fR1-0.289*fG1+0.436*fB1; fCr1=128+0.615*

OpenCV+python 人脸识别

首先给大家推荐一本书:机器学习算法原理与编程实践 本文内容全部转载于书中,相当于一个读书笔记了吧 绪论 1992年麻省理工学院通过实验对比了基于结构特征的方法与基于模版匹配的方法,发现模版匹配的方法要优于基于特征的方法. 以支持向量机为代表的统计学习理论在随后被应用到了人脸识别与确认中去.但是由于算法运行效率问题,很快被一种新的算法替代了.这就是2001年康柏研究院提出的基于简单矩形特征和AdaBoost的实时人脸检测系统.该方法的主要贡献包括: 1.可以快速计算简单矩形特征作为人脸图像特征 2

人脸识别盛世 潜藏的危机不可忽视

我们的名字.年龄.手机号.身份证号.家庭住址--也许在互联网上流传已久.如今,我们更是连"脸"都不要了. 搭载"黑科技"人脸识别的新iPhone发售在即,买了手机号码后要"刷脸"激活.支付宝联手肯德基试水"靠脸吃饭",招商银行可以"刷脸"转账......"人脸识别"的应用,在商场和大街上到处都在出现.如今,和别人聊天不聊点儿"人脸识别"就好像已经out了一样. 这人脸

用100美元攒一个懂人脸识别又能对话的门铃

使用Amazon Echo和树莓派来自己动手做一个门铃:每个月仅花费几分钱就可以识别在你门口成千上万的访客. 最近我准备在新房子里安装一个门铃时想到:为什么不让我的门铃告诉我谁在门口? 我自己动手做的大部分项目的成本都高于其它同等产品,即便我已经把自己的时间价值定为每小时0美元.我想这可能是跟供应链和经济规模相关.但是我在自己制作这些东西的过程中得到了更多的乐趣.在这个项目中我攒了一个门口摄像头,它不仅比我的Dropcam便宜而且还有一些真正有用的功能,由于某些原因这些功能我在市场还没有见到过.

还有王法吗?美国联邦调查局开发人脸识别系统,数据源涉及公民隐私

美国政府问责局(GAO)今日发布了一份报告,该报告称:美国联邦调查局(FBI)开发了一个庞大的人脸识别系统,该系统包含了面部分析.比较和评价的功能. 政府部门表示,FBI开发的的人脸识别系统可以获得大量的证件照片的访问权限,照片数量多达41.1亿.可以看出来FBI对这件事儿也非常重视,特意为他的人脸识别系统的照片库建立了一个数据库,并起了名字叫做"下代识别"( Next Generation Identification).数据库中有3千万的照片是来自曾经犯罪的入档照片.那剩下那么多照

opencv 做人脸识别 opencv 人脸匹配分析_C 语言

机器学习 机器学习的目的是把数据转换成信息. 机器学习通过从数据里提取规则或模式来把数据转成信息. 人脸识别 人脸识别通过级联分类器对特征的分级筛选来确定是否是人脸. 每个节点的正确识别率很高,但正确拒绝率很低. 任一节点判断没有人脸特征则结束运算,宣布不是人脸. 全部节点通过,则宣布是人脸. 工业上,常用人脸识别技术来识别物体. 对图片进行识别 复制代码 代码如下: #include "opencv2/core/core.hpp" #include "opencv2/obj