作者:杰少,一品炼丹师

ArcFace: Additive Angular Margin Loss for Deep Face Recognition(CVPR2019)

简 介

利用深度卷积神经网络(DCNNs)进行大规模人脸识别特征学习的一大挑战是设计合适的损失函数以提高识别能力。

  • 在欧氏空间中,中心损失是对深层特征与其对应的类中心之间的距离进行惩罚,以实现类内紧性;

  • SphereFace假设最后一个全连接层中的线性变换矩阵可用作角度空间中类中心的表示,并以乘法的方式惩罚深度特征与其相应权重之间的角度。

最近,一个流行的研究路线是将margins纳入已建立的损失函数,以最大限度地提高人脸类别可分性。

在本文中,我们提出了一个附加的角Margin损失(ArcFace)来获得高分辨的人脸识别特征。由于与超球面上的测地距离精确对应,所提出的弧面具有清晰的几何解释。通过大量的实验,我们证明了ArcFace的效果始终优于目前最好的模型,并且可以轻松实现,计算开销可以忽略不计。

背 景

目前训练人脸识别的DCNN方案主要有两种:

  • 训练一个多分类器,它可以将训练集合中的不同实体分开;

  • 训练embeddings,例如triplet loss。

但是softmax的loss和triplet loss都存在一些缺点,

对于softmax来说

  • 线性转化矩阵




















    是线性相关的;

  • 学习得到的特征对于闭集分类问题是可分离的,而对于开集人脸识别问题,学习到的特征是不可分辨的;

对于triplet loss来说

  • 特别是对于大规模数据集,人脸三元组的数量会出现组合爆炸,导致迭代步骤的数量显著增加;

  • semi-hard样本挖掘对于有效的模型训练是一个相当困难的问题;

提出的方法

1. ArcFace

softmax loss:

其中,














表示第




个样本的深度特征,属于







类。














表示权重















的第




列,














表示偏差项。









分别表示batch大小和类的个数。但是,softmax函数没有直接优化特征的embedding来加强类内样本的相似度以及不同类样本之间的不一致性。

为了方便,此处我们将







设置为0,然后令

其中,







是权重







和特征







之间的权重,我们通过







范数令













,同样的我们可以











做相同的处理,然后对其rescale,于是我们得到:

由于embedding特征分布在超球面上的每个特征中心,我们在




















加入一个增量的角度margin惩罚




,以是的我们类内更紧,类间更可区分。由于所提出的增加角度margin惩罚函数等于在超球面中标准化测地距离margin的惩罚,因此我们将该方法命名为ArcFace。

我们从8个不同身份的人脸图像中选取足够的样本(约1500张/类)分别训练具有softmax和ArcFace损失的二维特征嵌入网络。如图3所示,softmax损失提供了大致可分离的特征嵌入,但在决策边界中产生了明显的模糊性,

如上图所示,softmax损失提供了大致可分离的特征embedding,但在决策边界中产生了明显的模糊性,ArcFace损失显然可以在最近的类之间得到更明显的间隙。

ArcFace算法

2.与SphereFace和CosFace的比较

1.数值相似度

在SphereFace和CosFace和ArcFace中,我们都加入来margin的惩罚,我们用

















分别表示乘法角度margin,增加的角度margin和增加的cosine margin。从数值的角度来看,不同的margin惩罚都是希望相同类之间更为紧密,类之间分的更开。

通过将所有的margin惩罚放在一个框架中,我们有:

通过组合,我们往往可以获得更好的结果。

2. 几何区别

除了数值相似度之外,ArcFace拥有更好的几何属性,如下图所示:

3. 和其它Loss比较

其他损失函数可以基于特征和权重向量的角度来设计。例如,我们可以设计一个loss来增强超球面上的类内紧性和类间差异性。

Intra-Loss








































这边是加上后面的项,而我们的目标是最小化







,所以我们希望












尽可能的小,这样类内就会被压缩,从而变得更紧。

Inter-Loss

这边是减去后面的项,所以我们需要减去的项尽可能大,也就是

























尽可能大,也就是不同类之间尽可能的角度大。

Triplet Loss

想加大三元组样本的角度margin, 此处我们采用triplet-loss作为特征的角表示,

实验

  • ArcFace在所有三个测试集上都达到了最高的验证精度;

  • 组合margin框架比单独的SphereFace和CosFace有更好的效果,但都不如ArcFace效果好;

  • Triplet Loss优于标准Softmax Loss,说明了margin对提高效果的重要性;

  • 在三元样本中使用margin惩罚比在样本和中心之间插入margin效果要差,就像在ArcFace中一样。最后,我们将累呢、类间丢失和Triplet Loss合并到ArcFace中,但是没有观察到任何改进,这让我们相信ArcFace已经加强了类内更紧、类间差异性和分类margin。

  • ArcFace相较于Triplet-Loss有更好的margin;

小结

本文提出了一种Additive Angular Margin Loss ,该函数能有效地提高DCNNs学习的特征嵌入在人脸识别中的判别能力。在文献报道的最全面的实验中,我们证明了我们的方法始终优于目前最好的方法。

参考文献

  1. ArcFace: Additive Angular Margin Loss for Deep Face Recognition,CVPR2019


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑温州大学《机器学习课程》视频
本站qq群851320808,加入微信群请扫码:

【深度学习】同款商品识别的克星--ArcFace!相关推荐

  1. 深度学习在超市商品识别中的解决方案分享

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|AI公园 导读 Google出品的超市商品解决方案. 用户 ...

  2. ArcFace 同款商品识别的克星

    ArcFace: Additive Angular Margin Loss for Deep Face Recognition(CVPR2019) 一元@炼丹笔记 利用深度卷积神经网络(DCNNs)进 ...

  3. 基于深度学习的人脸性别识别系统(含UI界面,Python代码)

    摘要:人脸性别识别是人脸识别领域的一个热门方向,本文详细介绍基于深度学习的人脸性别识别系统,在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面.在界面中可以选择人脸图片.视频进行检 ...

  4. Python基于深度学习yolov5的扑克牌识别

    Python基于深度学习yolov5的扑克牌识别(附带源码) 源程序来源于本人参与开发的一个网络扑克牌小游戏的图像识别.AI分析,AI出牌的小项目,做完后和大家分享一下扑克牌自动识别模块制作的过程. ...

  5. 基于linux火焰识别算法,一种基于深度学习模型的火焰识别方法与流程

    本发明属于通信领域,具体涉及一种基于深度学习模型的火焰识别方法. 背景技术: 随着我国工业化与城镇水平的不断提高,现代设施大型公共建筑朝着空间大.进深广功能复杂的多元化方向发展,这对于防烟火朝着空间大 ...

  6. 基于深度学习的犬种识别软件(YOLOv5清新界面版,Python代码)

    摘要:基于深度学习的犬种识别软件用于识别常见多个犬品种,基于YOLOv5算法检测犬种,并通过界面显示记录和管理,智能辅助人们辨别犬种.本文详细介绍博主自主开发的犬种检测系统,在介绍算法原理的同时,给出 ...

  7. 中科院DeepMind联手,用深度学习揭示大脑如何识别人脸|Nature子刊

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI Deep ...

  8. 浙江大学《深度学习与行人重识别》课程课件

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要3分钟 Follow小博主,每天更新前沿干货 课程介绍 该课程为浙江大学罗浩博士于2018年10月录制的<基于深度学习和行人重识别> ...

  9. 【深度学习】DIY 人脸识别技术的探索(一)

    [深度学习]DIY 人脸识别技术的探索(一) 文章目录 摘要 问题重述 模型假设 定义与符号说明 问题分析 模型的建立与求解 参考 摘要 伴随着人工智能技术的发展,人们对信息安全有了更高的要求,传统的 ...

最新文章

  1. Element-ui学习笔记3--Form表单(二)
  2. 基于SpringBoot的个人博客系统
  3. 使用Nginx过滤网络爬虫
  4. 一个简单的从windows系统往AWS上直接拷贝文件的脚本
  5. Google推出了Python最牛逼的编辑器,不看后悔一辈子!
  6. java掠夺_Editing Java版指南/村庄与掠夺 (section)
  7. 以时间作为条件查询记录(案例)
  8. python使用scipy模块from scipy.misc import imread时报错:cannot import name imread问题解决
  9. vs2015安装qt5教程
  10. 为什么低通滤波器的作用相当于积分器
  11. MLX90640 红外热成像仪测温模块开发笔记(完整版)
  12. 什么是JSTL和EL表达式
  13. 指数灰度变换法 matlab,matlab指数灰度变换
  14. 视频去声音 免费中文版声音处理软件 轻松教你去除视频声音
  15. word交叉引用后,移动文章结构,修改引用顺序到符合引用先后
  16. My favorite player-Davor Suker
  17. 1253: 统计字符出现的频度
  18. 如何在靠tiktok在三个月内快速赚到20w的?实现人生逆转
  19. elementui确认消息区分取消和关闭按钮
  20. 如何下载电脑版音频剪辑软件?

热门文章

  1. MongoDB优越性
  2. Flex4与WebService通信
  3. TNS-12545: Connect failed because target host or object does not exist
  4. QAU 18校赛 J题 天平(01背包 判断能否装满)
  5. too many connections 解决方法
  6. 深入理解计算机系统(2.6)------整数的运算
  7. Jquery插件(一) webupload上传插件
  8. JSBinding + SharpKit / 实战:转换 Stealth
  9. QlikView Script -组合键处理
  10. 给医生的R语言课程:零基础入门篇