论文题目:《ArcFace Additive Angular Margin Loss for Deep Face Recognition 》
论文地址:https://arxiv.org/pdf/1801.07698.pdf

1. 前言

这篇文章提出一种新的用于人脸识别的损失函数:additive angular margin loss,基于该损失函数训练得到人脸识别算法ArcFace(开源代码中为该算法取名为insightface,二者意思一样,接下来都用ArcFace代替)。ArcFace的思想(additive angular margin)和SphereFace以及不久前的CosineFace(additive cosine margin )有一定的共同点,重点在于:在ArchFace中是直接在角度空间(angular space)中最大化分类界限,而CosineFace是在余弦空间中最大化分类界限,这也是为什么这篇文章叫ArcFace的原因,因为arc含义和angular一样。除了损失函数外,本文的作者还清洗了公开数据集MS-Celeb-1M的数据,并强调了干净数据的对实验结果的影响,同时还对网络结构和参数做了优化。总体来说ArcFace这篇文章做了很多实验来验证additive angular margin、网络结构设计和数据清洗的重要性,

主要思想:
● ArcFace loss:Additive Angular Margin Loss(加性角度间隔损失函数),对特征向量和权重归一化,对θ加上角度间隔m,角度间隔比余弦间隔在对角度的影响更加直接。几何上有恒定的线性角度margen。
● ArcFace中是直接在角度空间θ中最大化分类界限,而CosFace是在余弦空间cos(θ)中最大化分类界限。
● 预处理(人脸对齐):人脸关键点由MTCNN检测,再通过相似变换得到了被裁剪的对齐人脸。
● 训练(人脸分类器):ResNet50 + ArcFace loss
● 测试:从人脸分类器FC1层的输出中提取512维的嵌入特征,对输入的两个特征计算余弦距离,再来进行人脸验证和人脸识别。
● 实际代码中训练时分为resnet model+arc head+softmax loss。resnet model输出特征;arc head将特征与权重间加上角度间隔后,再输出预测标签,求ACC是就用这个输出标签;softmax loss求预测标签和实际的误差。
● LFW上99.83%,YTF上98.02%

优点:
● 性能高,易于编程实现,复杂性低,训练效率高
● ArcFace直接优化geodesic distance margin(弧度),因为归一化超球体中的角和弧度的对应。
● 为了性能的稳定,ArcFace不需要与其他loss函数实现联合监督,可以很容易地收敛于任何训练数据集。
缺点:
● W模型很大

2. Angular Margin Loss

不管是SphereFace、CosineFace还是ArcFace的损失函数,都是基于传统的softmax loss进行修改得到的,公式(1)就是softmax loss损失函数。


       首先把偏置b_j设置为0,,接着将特征向量归一化,权重归一化,然后乘以缩放系数s就得到公式(2)。


       公式(3)便为最终的Angular Margin Loss。

公式解释如下:

在xi和Wji之间的θ上加上角度间隔m(注意是加在了角θ上),以加法的方式惩罚深度特征与其相应权重之间的角度,从而同时增强了类内紧度和类间差异。
       惩罚θ角度的意思就是:训练时加上m就会使θ降低
       解释Margin是如何使类内聚合类间分离的:比如训练时降到某一固定损失值时,有Margin和无Margin的e指数项是相等的,则有Margin的θ_yi就需要相对的减少了。这样来看有 Margin的训练就会把 i 类别的输入特征和权重间的夹角θ_yi缩小了,从一些角度的示图中可以看出,Margin把θ_yi挤得更类内聚合了,θ_yi和其他θ类间也就更分离了。
       L2归一化来修正单个权重||W_j||=1,还通过L2归一化来固定嵌入特征||x_i|,并将其重新缩放成s。特征和权重的归一化步骤使预测仅取决于特征和权重之间的角度。因此,所学的嵌入特征分布在半径为s的超球体上。
       由于提出的加性角度间隔(additive angular margin)惩罚与测地线距离间隔(geodesic distance margin)惩罚在归一化的超球面上相等,因此我们将该方法命名为ArcFace。

3. 人脸分类器训练过程


       先将特征向量L2归一化,权重L2归一化,他俩的夹角为θ,计算cos(θj),求反余弦arccos(θyi)得到特征xi与真实权值Wyi之间的夹角θyi,添加角度间隔m,再求余弦cos(θyj+m),将所有的log乘以特征尺度s,然后将log送到softmax函数得到各类别概率。再用Ground Truth和One Hot Vector一起算出交叉熵损失。即DCNN特征和最后一个完全连接层之间的点积等于特征和权重归一化后的余弦距离。我们利用arc-cosine函数来计算当前特征和目标权重之间的角度。然后,在目标角上加上一个附加的角度间隔,用余弦函数重新计算逻辑回归的反向传播过程。然后,我们用一个固定的特征范数重新缩放所有的逻辑,随后的步骤与Softmax loss 中的步骤完全相同。

具体算法步骤如下:

【人脸识别】arcface详解相关推荐

  1. python人脸识别opencv_Python基于Opencv来快速实现人脸识别过程详解(完整版)

    前言 随着人工智能的日益火热,计算机视觉领域发展迅速,尤其在人脸识别或物体检测方向更为广泛,今天就为大家带来最基础的人脸识别基础,从一个个函数开始走进这个奥妙的世界. 首先看一下本实验需要的数据集,为 ...

  2. 恩智浦NXP RT1062F 本地神经网络人脸识别接口 - [详解]

    文章目录 恩智浦NXP RT1062F 本地神经网络人脸识别接口使用详解 一.芯片介绍 二.摄像头图片获取 `CSI中断源码` 通过FLEXIO调取图片信息 三.识别接口调用 人脸识别接口初始化结构体 ...

  3. CVPR 2020 | 元学习人脸识别框架详解

    2020-05-15 23:07:48 本文介绍的是CVPR2020 oral论文<Learning Meta FaceRecognition in Unseen Domains(MFG[1]) ...

  4. opencv python考勤_Python基于Opencv来快速实现人脸识别过程详解(完整版)

    前言 随着人工智能的日益火热,计算机视觉领域发展迅速,尤其在人脸识别或物体检测方向更为广泛,今天就为大家带来最基础的人脸识别基础,从一个个函数开始走进这个奥妙的世界. 首先看一下本实验需要的数据集,为 ...

  5. Python+OpenCV人脸识别技术详解

    总在科幻电影里看到人脸识别,现在我们也可以编程来实现啦.哈哈~~ OpenCV是Intel®开源计算机视觉库.它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法. ...

  6. python模块cv2人脸识别_Python基于Opencv来快速实现人脸识别过程详解(完整版)

    前言 随着人工智能的日益火热,计算机视觉领域发展迅速,尤其在人脸识别或物体检测方向更为广泛,今天就为大家带来最基础的人脸识别基础,从一个个函数开始走进这个奥妙的世界. 首先看一下本实验需要的数据集,为 ...

  7. cvpr2020 人脸检测与识别_CVPR 2020 | 元学习人脸识别框架详解

    本文介绍的是CVPR2020 oral论文<Learning Meta FaceRecognition in Unseen Domains(MFG[1])>,作者来自明略科技集团明略科学院 ...

  8. 高帧率扑克牌识别技术详解一(可用于车牌识别,字符识别,人脸检测,验证码识别等等成熟领域)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 高帧率扑 ...

  9. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

  10. 车牌识别与计算机编程,基于MATLAB的车牌识别程序详解.ppt

    基于MATLAB的车牌识别程序详解 自定义一个字符函数,用来从车牌区域中提取出7个字符,其中利用切割函数来进行切割. 程序:function [word,result]=getword(d) word ...

最新文章

  1. 怎样学好Oracle子查询,Oracle学习(六):子查询
  2. 百度2011招聘笔试题+答案解析
  3. 列字段通用excel导入修改版
  4. VirtualBox中使用双网卡实现CentOS既能上网(校园网)也能使用SSHclient
  5. Spring自学日志01
  6. 我为什么用 SQLite 和 FMDB 而不用 Core Data
  7. linux查看日历_能从远程获得乐趣的 Linux 命令 | Linux 中国
  8. fastreport java 集成_报表生成器配置FastReport.Net环境
  9. 陈丹琦团队最新论文:受GPT-3启发,用小样本学习给语言模型做微调,性能最高提升30%...
  10. 揭开均线系统的神秘面纱_揭开定价创造力的黑暗艺术神秘面纱
  11. 如何使用Apple Watch启动和跟踪锻炼
  12. 计算机开机白屏怎么处理,电脑开机白屏怎么办如何解决开机白屏的问题
  13. ansible 以及填坑
  14. SQL Server安装总是缺少msi等文件,出现错误1612、1706等解决办法
  15. android md5加密登录,Android开发之MD5加密
  16. 家用计算机硬盘一般价格,家用电脑使用企业级硬盘的效果会很好吗?
  17. ToggleSwitch控件介绍
  18. 黑客教父详解账号泄露全过程:1亿用户已泄露
  19. Windows电脑SMB共享设置方法
  20. 【MyBatis框架】核心配置文件讲解

热门文章

  1. html作业本,小鹅通作业本使用教程
  2. 10. GD32F103C8T6 定时器-测量pwm的占空比和频率
  3. 14004.xilinx自动打包image.ub脚本
  4. 07.Qt程序的发布
  5. 计算机网络|传输控制协议TCP概述
  6. Linux内核--基于Netfilter的内核级包过滤防火墙实现
  7. 在ROS中使用Neato XV-11 激光雷达
  8. 《Reids 设计与实现》第十六章 集群(下)
  9. pip命令安装pygeme后 IDLE import pygame报错
  10. Vue中插槽slot的使用