arcface的前世今生
arcface调研
- 1.简介
- 1.1发表
- 1.2优点
- 1.3性能
- 2.arcface的前世今生
- 2.1 softmax
- 2.2center loss
- 2.2 L-softmax
- 决策边界的概念
- 2.3A-softmax
- 2.4Cosface
- 2.5 arcface
- 3.参考
- 论文
- 博客
1.简介
1.1发表
ArcFace/InsightFace(弧度)是伦敦帝国理工学院邓建康等在2018.01发表,在SphereFace基础上改进了对特征向量归一化和加性角度间隔,提高了类间可分性同时加强类内紧度和类间差异。
论文链接:ArcFace: Additive Angular Margin Loss for Deep Face Recognition
1.2优点
- ArcFace loss:Additive Angular Margin Loss(加性角度间隔损失函数),对特征向量和权重归一化,对θ加上角度间隔m,角度间隔比余弦间隔在对角度的影响更加直接。几何上有恒定的线性角度margen。
- ArcFace中是直接在角度空间θ中最大化分类界限,而CosFace是在余弦空间cos(θ)中最大化分类界限。
1.3性能
LFW上99.83%,YTF上98.02%
2.arcface的前世今生
作为基于 softmax 改进的损失函数,arcface loss 的出现不是一簇而就的,在 arcface loss 之前有大量的前人的工作:
center loss,L-softmax loss,A-softmax loss,CosFace loss 等
2.1 softmax
公式:
L1=−1N∑i=1NlogeWyiTxi+byi∑j=1NWyiTxi+byiL_{1} = - \frac{1}{N} \sum_{i=1}^{N} {log \frac{e^{W^{T}_{y_{i}} x_{i} + b_{y_{i}}}} {\sum_{j=1}^{N}{W^{T}_{y_{i}} x_{i} + b_{y_{i}}}}} L1=−N1i=1∑Nlog∑j=1NWyiTxi+byieWyiTxi+byi
2.2center loss
论文:[ECCV 2016] A Discriminative Feature Learning Approach for Deep Face Recognition
ECCV 2016的这篇文章主要是提出了一个新的Loss:Center Loss,用以辅助Softmax Loss进行人脸的训练,主要目的是利用softmax loss来分开不同类别,利用center loss来压缩同一类别,最终获取discriminative features。
其原理是增加惩罚项,约束每一类向中心聚集
公式:
L1=−1N∑i=1NlogeWyiTxi+byi∑j=1NWyiTxi+byi+λ2∑i=1N∣∣xi−cyi∣∣2L_{1} = - \frac{1}{N} \sum_{i=1}^{N} {log \frac{e^{W^{T}_{y_{i}} x_{i} + b_{y_{i}}}} {\sum_{j=1}^{N}{W^{T}_{y_{i}} x_{i} + b_{y_{i}}}}} + \frac{\lambda}{2} \sum_{i=1}^{N} {\mid\mid x_{i} - cy_{i} \mid\mid ^{2}} L1=−N1i=1∑Nlog∑j=1NWyiTxi+byieWyiTxi+byi+2λi=1∑N∣∣xi−cyi∣∣2
其中:yiy_{i}yi 代表第 i 类的中心。yiy_{i}yi的求解过程相对复杂。
在训练的初始,yiy_{i}yi由Xavier初始化,即刚开始并不指向类中心,然后每个iterator更新一次yiy_{i}yi。
其更新方式类似于反向传播。
通过对xi−cyix_{i} - cy_{i}xi−cyi求导,得到下述表达式:
Δcyi=∑i=1Nδ(yi=j)(cj−xi)1+∑i=1Nδ(yi=j)\Delta cy_{i} = \frac{\sum_{i=1}^{N} {\delta (y_{i=j})(c_{j} - x_{i}) } } {1 + \sum_{i=1} ^{N} {\delta(y_{i=j})} } Δcyi=1+∑i=1Nδ(yi=j)∑i=1Nδ(yi=j)(cj−xi)
按导数值Δcyi\Delta cy_{i}Δcyi随着训练逐渐逼近类中心点。
- 贡献:
能够更好的区分细节,即当两个输入样本十分相似时,能够对细节更好的建模。
在一定程度上提升了类间距,缩小类内距。提出了 softmax 的类间距较小的问题,开启优化softmax的先河 - 缺点:
训练不稳定,收敛慢,容易过拟合。
center loss 和 softmax 的对比:
2.2 L-softmax
决策边界的概念
论文:Large-Margin Softmax Loss for Convolutional Neural Networks
假设只有两个类的情况下(方便分析,推广到多类别同样适用)
softmax:
L1=−1N∑i=1NlogeWyiTxi+byi∑j=1NWyiTxi+byiL_{1} = - \frac{1}{N} \sum_{i=1}^{N} {log \frac{e^{W^{T}_{y_{i}} x_{i} + b_{y_{i}}}} {\sum_{j=1}^{N}{W^{T}_{y_{i}} x_{i} + b_{y_{i}}}}} L1=−N1i=1∑Nlog∑j=1NWyiTxi+byieWyiTxi+byi
由 softmax 的公式可知,当类别为二的时候,分类为1和2的概率p分别为p1=eW1Tx+b1p_{1} = e^{W^{T}_{1} x + b_{1}}p1=eW1Tx+b1 和 p2=eW2Tx+b2p_{2} = e^{W^{T}_{2} x + b_{2}}p2=eW2Tx+b2,当p1 > p2 的时候判断为类1, 当p1 < p2时判断为类2 。因此判断边界为p1==p2p_{1} == p_{2}p1==p2, 即W1Tx+b1=W2Tx+b2W^{T}_{1} x + b_{1} = W^{T}_{2} x + b_{2}W1Tx+b1=W2Tx+b2。因此其决策边界依赖于 W 和 b 两个矩阵。
L-softmax 引入参数W的归一化,并将偏置 b置为零。决策边界W1Tx+b1=W2Tx+b2W^{T}_{1} x + b_{1} = W^{T}_{2} x + b_{2}W1Tx+b1=W2Tx+b2变为∥x∥cos(θ1)=∥x∥cos(θ2)\lVert x \rVert cos(\theta_{1}) = \lVert x \rVert cos(\theta_{2})∥x∥cos(θ1)=∥x∥cos(θ2) ,softmax的边界∥W1T∥∥x∥cos(θ1)=∥W2T∥∥x∥cos(θ2)\lVert W^{T}_{1}\rVert \lVert x \rVert cos(\theta_{1}) = \lVert W^{T}_{2} \rVert \lVert x \rVert cos(\theta_{2})∥W1T∥∥x∥cos(θ1)=∥W2T∥∥x∥cos(θ2)既依赖于权重向量的大小,又依赖于角度的余弦值,从而导致余弦空间中的决策区域重叠(重叠就是margin < 0)。因此,L-softmax仅以角度(angular) 作为决策边界优于原softmax依赖于 W 和 θ\thetaθ判断边界。
注:θ\thetaθ代表WWW和xxx的夹角
L-softmax:
L1=−1N∑i=1Nloge∥xi∥cos(mθyi,i)e∥xi∥cos(mθyi,i)+∑i≠je∥xi∥cos(θi,j)L_{1} = - \frac{1}{N} \sum_{i=1}^{N} {log \frac{e^{\lVert x_{i} \rVert cos(m \theta_{y_{i,i}})} } {e^{\lVert x_{i} \rVert cos(m \theta_{y_{i,i}} ) }+\sum_{i \neq j}^{}{ e^{ \lVert x_{i} \rVert cos( \theta_{i,j})} }}} L1=−N1i=1∑Nloge∥xi∥cos(mθyi,i)+∑i=je∥xi∥cos(θi,j)e∥xi∥cos(mθyi,i)
引入cos(mθyi,i)cos(m \theta_{y_{i,i}})cos(mθyi,i) 参数m作为角边距来调参控制训练的类间距。
- 贡献:
用夹角θ\thetaθ来控制决策边界,引入角边距m。优化了扩大类间距的算法。
注:论文中并没有归一化W矩阵,这里是为了简化计算。真正开始归一化矩阵W的是下一节的A-softmax。
L-softmax 和 softmax:
左边第一个是softmax,右边三个是取m不同的L-softmax。
2.3A-softmax
在L-softmax loss (large margin softmax loss)的基础上再添加限制条件||W||=1(权重归一化)和b=0就会使得预测仅取决于W和x之间的角度θ,这样便得到了angular softmax loss,简称A-softmax loss。上述L-softmax中,为了简化推理,已经使用了||W||=1(权重归一化)和b=0的假设。实际上,原论文并没有这样做。
原L-softmax的公式:
L1=−1N∑i=1Nloge∥Wi∥∥xi∥cos(mθyi,i)+bie∥Wi∥∥xi∥cos(mθyi,i)+bi+∑i≠je∥Wi∥∥xi∥cos(θi,j)+biL_{1} = - \frac{1}{N} \sum_{i=1}^{N} {log \frac{e^{\lVert W_{i} \rVert \lVert x_{i} \rVert cos(m \theta_{y_{i,i}}) + b_{i}} } {e^{\lVert W_{i} \rVert \lVert x_{i} \rVert cos(m \theta_{y_{i,i}} ) + b_{i}}+\sum_{i \neq j}^{}{ e^{\lVert W_{i} \rVert \lVert x_{i} \rVert cos( \theta_{i,j}) + b_{i}} }}} L1=−N1i=1∑Nloge∥Wi∥∥xi∥cos(mθyi,i)+bi+∑i=je∥Wi∥∥xi∥cos(θi,j)+bie∥Wi∥∥xi∥cos(mθyi,i)+bi
A-softmax的公式(添加W归一化,b=0 的L-softmax):
L1=−1N∑i=1Nloge∥xi∥cos(mθyi,i)e∥xi∥cos(mθyi,i)+∑i≠je∥xi∥cos(θi,j)L_{1} = - \frac{1}{N} \sum_{i=1}^{N} {log \frac{e^{\lVert x_{i} \rVert cos(m \theta_{y_{i,i}})} } {e^{\lVert x_{i} \rVert cos(m \theta_{y_{i,i}} ) }+\sum_{i \neq j}^{}{ e^{ \lVert x_{i} \rVert cos( \theta_{i,j})} }}} L1=−N1i=1∑Nloge∥xi∥cos(mθyi,i)+∑i=je∥xi∥cos(θi,j)e∥xi∥cos(mθyi,i)
2.4Cosface
- A-softmax的缺点:
由决策边界:∥x∥cos(mθ1)=∥x∥cos(θ2)\lVert x \rVert cos(m\theta_{1}) = \lVert x \rVert cos(\theta_{2})∥x∥cos(mθ1)=∥x∥cos(θ2) 可知, 当∥x∥cos(mθ1)>∥x∥cos(θ2)\lVert x \rVert cos(m \theta_{1}) > \lVert x \rVert cos(\theta_{2})∥x∥cos(mθ1)>∥x∥cos(θ2)时,x被分类到类1。
A-Softmax的margin在所有θ值上都不一致:当θ减小时, margin变小,当θ= 0时,margin完全消失。
softmax在类c1、c2的区分上有重叠;NLS(即W归一化)c1、c2之间没有重叠也没有距离margin;A-softmax c1、c2之间有margin但随着角度θ\thetaθ减小到0;LMCL(CosFace) c1、c2之间有清晰的边界。
A-softmax容易导致两个潜在的问题: - 首先,对于视觉上相似因此在W1和W2之间具有较小角度的困难类别C1和C2,margin很小。
- 其次,从技术上讲,必须采用额外的技巧用ad-hoc piecewise function来克服计算余弦相似度时的非单调性困难(cosθcos\thetacosθ递增区间和递减区间)。
因此,cosface loss改进了A-sofamax,W权重L2归一化,x输入向量归一化到一个固定值s,让cos(θ)加上m。对cosface来说,s需要足够大。
公式:
cos(mθ)⇒cos(θ)+mx=s⋅x∗∥x∗∥⇒∥x∥=scos(m\theta) \Rightarrow cos(\theta) + m \\\\ x = s \cdot \frac{x^{*}}{\lVert x_{*} \rVert} \\\\ \Rightarrow \lVert x \rVert = s cos(mθ)⇒cos(θ)+mx=s⋅∥x∗∥x∗⇒∥x∥=s
推导出新的损失函数
L1=−1N∑i=1Nloges(cos(θyi,i)−m)es(cos(θyi,i)−m)+∑i≠je∥xi∥cos(θi,j)L_{1} = - \frac{1}{N} \sum_{i=1}^{N} {log \frac{e^{s (cos(\theta_{y_{i,i}}) - m)} } {e^{s (cos(\theta_{y_{i,i}} ) - m) }+\sum_{i \neq j}^{}{ e^{ \lVert x_{i} \rVert cos( \theta_{i,j})} }}} L1=−N1i=1∑Nloges(cos(θyi,i)−m)+∑i=je∥xi∥cos(θi,j)es(cos(θyi,i)−m)
决策边界cos(θ1)−m=cos(θ2)cos(\theta_{1}) - m = cos(\theta_{2})cos(θ1)−m=cos(θ2),距离margin由m调节。
- 贡献:
引入数据x的归一化,优化θ\thetaθ的边界问题。
2.5 arcface
在xxx和WiW_{i}Wi之间的θ上加上角度间隔m(注意是加在了角θ上),以加法的方式惩罚深度特征与其相应权重之间的角度,从而同时增强了类内紧度和类间差异。
比如训练时降到某一固定损失值时,有Margin和无Margin的e指数项是相等的,则有Margin的θi\theta_{i}θi就需要相对的减少了。这样来看有 Margin的训练就会把 i 类别的输入特征和权重间的夹角θi\theta_{i}θi缩小了,从一些角度的示图中可以看出,Margin把θi\theta_{i}θi挤得更类内聚合了,θi\theta_{i}θi和其他θ\thetaθ类间也就更分离了。
公式:
L1=−1N∑i=1Nloges(cos(θyi,i+m))es(cos(θyi,i+m))+∑i≠je∥xi∥cos(θi,j)L_{1} = - \frac{1}{N} \sum_{i=1}^{N} {log \frac{e^{s (cos(\theta_{y_{i,i}} + m) )} } {e^{s (cos(\theta_{y_{i,i}} + m) ) }+\sum_{i \neq j}^{}{ e^{ \lVert x_{i} \rVert cos( \theta_{i,j})} }}} L1=−N1i=1∑Nloges(cos(θyi,i+m))+∑i=je∥xi∥cos(θi,j)es(cos(θyi,i+m))
决策边界:
cos(θ1+m)=cos(θ2)cos(\theta_{1} + m) = cos(\theta_{2}) cos(θ1+m)=cos(θ2)
决策边界:
ArcFace:Additive Angular Margin,加法角度间隔
SphereFace(A-softmax):Multiplicative Angular Margin,乘法角度间隔
CosFace:Additive Cosine margin,加法余弦间隔
3.参考
论文
- center softmaxA Discriminative Feature Learning Approach for Deep Face Recognition
- L-softmax Large-Margin Softmax Loss for Convolutional Neural Networks
- A-softmaxDeep Hypersphere Embedding for Face Recognition
- CosfaceLarge Margin Cosine Loss for Deep Face Recognition
- ArcfaceAdditive Angular Margin Loss for Deep Face Recognition
博客
- center softmax人脸识别论文再回顾之一:Center Loss
- L-softmax 深度学习–Large Marge Softmax Loss损失
- A-softmax深度学习—A-softmax原理+代码
- Cosface人脸识别合集 | 9 CosFace解析
- Arcface人脸识别合集 | 10 ArcFace解析
arcface的前世今生相关推荐
- 度量学习:ArcFace算法和工程应用总结
目录 前言 1 度量学习简介 2 ARCFace介绍 3 实际应用时的探讨 探讨1:类似于人脸识别这样的应用,从0到落地应用的大概流程是怎样的? 探讨2:怎么评估这个特征提取器网络训练好了? 探讨3: ...
- 【云栖大会精华汇】历届云栖大会精彩资料大放送,一篇看尽云栖大会前世今生...
[热点头条] 历届云栖大会精彩资料大放送,一篇看尽云栖大会前世今生 如果从2009-2010年算起,2017杭州云栖大会已经是第八届.为帮助更多朋友认识云栖大会,云栖社区特别整理了历届云 ...
- 实战:人脸识别的Arcface实现 | CSDN博文精选
来源 | CSDN博客 本文将简单讲述arcface从训练到部署的整个过程,主要包括前期的数据筛选和准备,模型训练以及模型部署. 此文参考的arcface的代码地址: https://github.c ...
- 从芯片到AI智能芯片,一文了解它的前世今生
作者 | 元宵大师,Python高级工程师,致力于推动人工智能.大数据分析在金融量化交易领域中的应用.欢迎大家关注我的个人公众号<元宵大师带你用Python量化交易>. 责编 | 胡巍巍 ...
- 追溯XLNet的前世今生:从Transformer到XLNet
作者丨李格映 来源 | 转载自CSDN博客 导读:2019 年 6 月,CMU 与谷歌大脑提出全新 XLNet,基于 BERT 的优缺点,XLNet 提出一种泛化自回归预训练方法,在 20 个任务上超 ...
- Transformer不比CNN强!Local Attention和动态Depth-wise卷积的前世今生
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Qi Han@知乎(已授权) 来源丨https://zhuan ...
- ArcFace - 人脸识别
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:知乎 作者:科密中的科蜜 链接:https://zhuanl ...
- 图像配准的前世今生:从人工设计特征到深度学习
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 机器之心编译 参与:Nurhachu Null,Geek AI 作 ...
- 基于GAN模型的生成人脸重构、返老还童、看见前世今生(Age Progression/Regression)
基于GAN模型的生成人脸重构.返老还童.看见前世今生(Age Progression/Regression) 看见前世今生(Age Progression/Regression) GAN的优势是直接可 ...
- Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx
Atitit 图像处理类库安装与安装模式的前世今生与未来大趋势attilax总结.docx 1. 安装的原理,主要是解压,复制,设置三大步1 2. 目前我们常见的三大种安装模式,二进制模式与源码安装模 ...
最新文章
- Hadoop入门(10)_通过java代码实现从本地的文件上传到Hadoop的文件系统
- IDEA 打可执行jar包(maven项目)
- BlockChain:《Blockchain Gate》听课笔记——以POW机制为例阐述共识机制的激励相容设计
- 【转】Linux添加/删除用户和用户组
- api 定位 微信小程序 精度_一行代码区分微信小程序或QQ小程序
- android 学习查阅笔记
- npm如何设置淘宝镜像
- 自从有了mybatis-plus代码生成器,写代码效率高了一大截
- HTML5 API详解(13):video/audio 视频/音频
- WordPress配置
- Eclipse创建web项目
- 直方图、正态分布图与SPC图
- linux的文件系统是采用,Linux文件系统
- 计算机房的正常温度和湿度,机房的温度、湿度标准值是多少?
- 违反GPL协议赔偿50万,国内首例!
- ubuntu16.04升级18.04时问题, (appstreamcli:5132): GLib-CRITICAL **: g_strchomp: assertion 'string != NULL'
- 喜大普奔,又一国标正式进入国际标准
- 二、三层交换配置HSRP(热备份)
- 杭电计算机考研经验总结
- 日志收集平台Graylog2以及Nxlog的安装与配置(基于docker)
热门文章
- vscode vim插件(updating)
- 计算机无本地安全策略,如何打开本地安全策略、如何解决“未授予用户在此计算机上的请求登录类型”...
- AutoCAD打印样式中缺少.ctb只有.stb怎么办?
- C# 如何将EMF文件转换成PNG文件
- oracle服务 ora_01033,Oracle ORA-01033 错误的解决办法
- 最全PR曲线、ROC曲线以及AUC计算公式详解
- 背包问题之完全背包算法详解
- 【Adobe Premiere Pro 2020】pr2020转场与过度的使用说明【批量修改图片时长、转场特效制作等】、时间轴及工具栏的使用说明、静态帧制作动态效果、制作影片曲线变速、PR消除画面抖动
- 毫米和像素怎么换算_自己计算出来的关于像素和厘米单位的换算
- 欧姆龙plc解密实例_欧姆龙PLC CP1H解密实例