从softmax到ArcFace
0. softmax
σi(z)=ezi∑j=1mezj\sigma_i(z)=\frac{e^{z_i}}{\sum_{j=1}^{m}e^{z_j}} σi(z)=∑j=1mezjezi
其中,exe^xex的作用:
对xxx取exp变为非负数,避免正负值抵消
更容易达到终极目标one-hot形式,或者说,softmax降低了训练难度,使得多分类问题更容易收敛。 Softmax鼓励真实目标类别输出比其他类别要大,但并不要求大很多。 (参考链接: https://zhuanlan.zhihu.com/p/34404607 )
1. softmax loss
L1=−1m∑i=1mlogeWyiTxi+byi∑j=1neWjTxi+bjL_1 = - \frac{1}{m}\sum_{i=1}^{m}log\frac{e^{W^T_{y_i}x_i+b_{y_i}}}{\sum_{j=1}^{n} e^{W_j^Tx_i + b_j}} L1=−m1i=1∑mlog∑j=1neWjTxi+bjeWyiTxi+byi
其中,特征的维度ddd为512,mmm是batch size; nnn是 class number;xi∈Rdx_i\in \mathbb{R}^dxi∈Rd表示第iii个输入样本,属于yiy_iyi类;
Wj∈RdW_j\in \mathbb{R}^{d}Wj∈Rd表示最后一层全连接层的权重 W∈Rd×nW\in \mathbb{R}^{d\times n}W∈Rd×n的第jjj列,b∈Rnb\in \mathbb{R}^nb∈Rn是偏置项。
缺点: softmax loss 没有显式66的优化features,使其对正配对的相似度评分更高,负配对的相似度评分更低,从而导致性能不高。
2.权重归一化 A-Softmax loss
权重归一化做了两件事情(1) bj=0b_j=0bj=0 (2) WjTxi=∣∣Wj∣∣∣∣xi∣∣cosθjW_j^Tx_i=||W_j||\ ||x_i||\ cos\theta_jWjTxi=∣∣Wj∣∣ ∣∣xi∣∣ cosθj,并应用L2 normalization使得∣∣Wj∣∣=1||W_j||=1∣∣Wj∣∣=1,这样做的好处是前向过程不再关注权重,仅仅关注特征向量和权重的夹角和特征向量两个因素。
L2=−1m∑i=1mloge∣∣xi∣∣cosθyie∣∣xi∣∣cosθyi+∑j=1,j≠yine∣∣xj∣∣cosθjL_2=-\frac{1}{m}\sum_{i=1}^{m}log\frac{e^{||x_i||cos\theta_{y_i}}}{e^{||x_i||cos\theta_{y_i}}+\sum_{j=1,j\ne y_i}^{n}e^{||x_j||cos\theta_j}} L2=−m1i=1∑mloge∣∣xi∣∣cosθyi+∑j=1,j=yine∣∣xj∣∣cosθje∣∣xi∣∣cosθyi
在SphereFace的论文中,权重的L2normalization仅仅有了一点点提升。
3.角度乘数margin
在 SphereFace 中,角度的margin放在了角度的乘数上
L3=−1m∑i−1mloge∣∣xi∣∣cos(mθyi)e∣∣xi∣∣cos(mθyi)+∑j=1,j≠yin∣∣xj∣∣cosθjL_3=-\frac{1}{m}\sum_{i-1}^{m}log\frac{e^{||x_i||cos(m\theta_{y_i})}}{{e^{||x_i||cos(m\theta_{y_i})}}+\sum_{j=1,j\ne y_i}^{n}||x_j||cos\theta_j} L3=−m1i−1∑mloge∣∣xi∣∣cos(mθyi)+∑j=1,j=yin∣∣xj∣∣cosθje∣∣xi∣∣cos(mθyi)
其中,θyi∈[0,π/m]\theta_{y_i}\in[0,\pi/m]θyi∈[0,π/m],为了去除取值范围的限制,论文提出了使用分段单调函数替代cos(mθyi)cos(m\theta_{y_i})cos(mθyi),该函数ψ(θyi)\psi(\theta_{y_i})ψ(θyi)公式为:
L4=−1m∑i=1mloge∣∣xi∣∣ψ(θyi)e∣∣xi∣∣ψ(θyi)+∑j=1,j≠yine∣∣xj∣∣cosθjL_4=-\frac{1}{m}\sum_{i=1}^{m}log\frac{e^{||x_i||\psi(\theta_{y_i})}}{e^{||x_i||\psi(\theta_{y_i})}+\sum_{j=1,j\ne y_i}^{n}e^{||x_j||cos\theta_j}} L4=−m1i=1∑mloge∣∣xi∣∣ψ(θyi)+∑j=1,j=yine∣∣xj∣∣cosθje∣∣xi∣∣ψ(θyi)
其中,ψ(θyi)=(−1)kcos(mθyi)−2k,θyi∈[kπm,kπ+1m],k∈[0,m−1],m≥1\psi(\theta_{y_i})=(-1)^kcos(m\theta_{y_i})-2k, \ \theta_{y_i}\in[\frac{k\pi}{m}, \frac{k\pi+1}{m}], k\in[0,m-1], m\ge1ψ(θyi)=(−1)kcos(mθyi)−2k, θyi∈[mkπ,mkπ+1],k∈[0,m−1],m≥1;m是个整数并且表示了角度margin。然而,在SphereFace实现的过程中,加入了softmax的监督,并引入了超参数λ\lambdaλ来动态的控制权重。
ψ(θyi)=(−1)kcos(mθyi)−2k+λcos(θyi)1+λ\psi(\theta_{y_i})=\frac{(-1)^kcos(m\theta_{y_i}) - 2k + \lambda cos(\theta_{y_i})}{1+\lambda} ψ(θyi)=1+λ(−1)kcos(mθyi)−2k+λcos(θyi)
训练初始的时候λ\lambdaλ设置为1000,最后减小到5来保证角空间的相对收缩。引入了超参数增加了训练的复杂性。
4. 特征归一化 AM-Softmax loss
- 特征归一化的操作在人脸比对验证过程中被广泛使用。
- L2 normalization是超球面度量学习的重要步骤
应用L2 normalization使得∣∣xi∣∣=1使得||x_i||=1使得∣∣xi∣∣=1,然后乘以一个缩放系数sss,这里的sss就是超球面的半径。在论文中人脸识别模型训练过程中s=64s=64s=64,基于权重归一化和特征归一化我们可以得到WjT=cos(θj)W_{j}^{T}=cos(\theta_j)WjT=cos(θj).
如果特征归一化应用到SphereFace上,则可以得到对应的形式SPhereFace-FNorm:
L5=−1m∑i=1mlogesψ(θyi)esψ(θyi)+∑j=1,j≠yinescosθjL_5=-\frac{1}{m}\sum_{i=1}^{m}log\frac{e^{s\psi(\theta_{y_i})}}{e^{s\psi(\theta_{y_i})}+\sum_{j=1,j\ne y_i}^{n}e^{scos\theta_j}} L5=−m1i=1∑mlogesψ(θyi)+∑j=1,j=yinescosθjesψ(θyi)
5. 添加cosine margin Arcface loss
在《Additive margin softmax for face verification》一文中,m被移到了cosθcos\thetacosθ的外面,因此提出了cosine margin loss function:
L6=−1m∑i=1mloges(cosθyi−m)es(cosθyi−m)+∑j=1,j≠yiecosθjL_6=-\frac{1}{m}\sum_{i=1}^{m}log\frac{e^{s(cos\theta_{y_i}-m)}}{e^{s(cos\theta_{y_i}-m)}+\sum_{j=1,j\ne y_i}e^{cos\theta_j}} L6=−m1i=1∑mloges(cosθyi−m)+∑j=1,j=yiecosθjes(cosθyi−m)
在paper中,m=0.35,这样修改有3个优点:
- 非常容易实现,不需要复杂的超参数
- 结构更清晰,不需要Softmax监督即可收敛
- 性能明显提高
6. 添加角度margin
虽然,cosine margin从余弦空间到角空间是一对一的映射,但这两个边界之间仍然存在差异。与余弦边距相比,角边距有更清晰的几何解释,角空间中的边距对应于超球面流形上的弧距。
具体做法是,增加角度margin在cos函数里面,因为cos(θ+m)cos(\theta+m)cos(θ+m)小于cos(θ)cos(\theta)cos(θ)(θ∈[0,π−m]\theta\in [0,\pi-m]θ∈[0,π−m]),所以分类的约束效果会更加强烈。ArcFace loss公式:
L6=−1m∑i=1mloges(cos(θyi+m))es(cos(θyi+m))+∑j=1,j≠yiecosθjL_6=-\frac{1}{m}\sum_{i=1}^{m}log\frac{e^{s(cos(\theta_{y_i}+m))}}{e^{s(cos(\theta_{y_i}+m))}+\sum_{j=1,j\ne y_i}e^{cos\theta_j}} L6=−m1i=1∑mloges(cos(θyi+m))+∑j=1,j=yiecosθjes(cos(θyi+m))
如果我们分解cos(θ+m)cos(\theta+m)cos(θ+m),可以得到cos(θ+m)=cos(θ)cos(m)−sin(θ)sin(m)cos(\theta+m)=cos(\theta) cos(m)-sin(\theta) sin(m)cos(θ+m)=cos(θ)cos(m)−sin(θ)sin(m),这其实与cosθ−mcos\theta-mcosθ−m类似,但是不同的是sin(θ)sin(\theta )sin(θ)是动态的。
参考链接:
https://www.groundai.com/project/arcface-additive-angular-margin-loss-for-deep-face-recognition/1
从softmax到ArcFace相关推荐
- 度量学习(Metric learning)—— 基于分类损失函数(softmax、交叉熵、cosface、arcface)
概述 首先,我们把loss归为两类:一类是本篇讲述的基于softmax的,一类是基于pair对的(如对比损失.三元损失等). 基于pair对的,参考我的另一篇博客: https://blog.csdn ...
- 【论文理解】ArcFace: Additive Angular Margin Loss for Deep Face Recognition(InsightFace)
论文地址:https://arxiv.org/abs/1801.07698 github:https://github.com/deepinsight/insightface 这篇论文基本介绍了近期较 ...
- Arcface v1 论文翻译与解读
神罗Noctis 2019-10-13 16:14:39 543 收藏 4 展开 论文地址:http://arxiv.org/pdf/1801.07698v1.pdf 最新版本v3的论文翻译:Ar ...
- 【深度学习】同款商品识别的克星--ArcFace!
作者:杰少,一品炼丹师 ArcFace: Additive Angular Margin Loss for Deep Face Recognition(CVPR2019) 简 介 利用深度卷积神经网络 ...
- ArcFace 同款商品识别的克星
ArcFace: Additive Angular Margin Loss for Deep Face Recognition(CVPR2019) 一元@炼丹笔记 利用深度卷积神经网络(DCNNs)进 ...
- Arcface v3 论文翻译与解读
论文地址:http://arxiv.org/pdf/1801.07698.pdf Arcface v3 与 Arcface v1的内容有较大不同.建议先阅读Arcface v1 的论文,再看v3.可以 ...
- 论文阅读之Arcface
Arcface论文阅读 文章目录 Arcface论文阅读 人脸识别流程 数据 VGG2 MS-Celeb-1M MegaFace LFW CPF AgeDB 损失层 Softmax Loss Cent ...
- 【百度论文复现赛】ArcFace: Additive Angular Margin Loss for Deep Face Recognition
文章目录 摘要 Introduction Proposed Approach ArcFace SphereFace与CosFace的比较 与其它损失函数比较 实验 Implementation Det ...
- ArcFace: Additive Angular Margin Loss for Deep Face Recognition 论文学习
论文地址:https://arxiv.org/pdf/1801.07698.pdf Abstract 使用 DCNN 进行大规模人脸识别的一个主要挑战就是设计损失函数来增强判别能力.Center lo ...
- ArcFace(insightface)论文翻译——中英文对照+标注总结
ArcFace: Additive Angular Margin Loss for Deep Face Recognition 文章目录 ArcFace: Additive Angular Margi ...
最新文章
- 怎么将jsp中var报错_招聘中不得将全日制作为限制性条件,怎么就不公平了?
- C++ Primer 5th笔记(4)chapter4 表达式:类型转换
- 10 行 Java 代码实现 LRU 缓存
- 东北大学计算机分数线2017,东北大学2017年艺术类专业录取分数线
- metronic 4.5.7开发环境下, 在Windows 10上安装了10.16.0版本的node js之后,导致node sass无法加载...
- Python-sorted函数
- Python软件封装打包
- [篇五章二]_使用 USB 系统安装盘在真机上安装激活 Windows 10 LTSC 2021 中文企业版系统
- 哲学家就餐问题-中断解决
- TensorFlow学习记录:saved_model模块的用法
- 搜索引擎整体结构图以及描述
- ZUI————对话框闪退问题
- MySQL存储过程中利用do while循环实现将行与行具有层级关系(联系)的行值检索出来
- 2D转3D技术的优势
- 计算机磁盘管理看不到盘符,新装的固态硬盘系统里看不见?解决方法来了
- 在 Microsoft Word 优雅的插入代码块
- 用户可以与计算机进行人机对话是什么性,人机对话考试是什么意思 有哪些利弊...
- 业内首部《云网络发展白皮书》正式发布, 云交换成为多云互联标配
- 实地一日游:刷新对房地产的认知,智慧人居成为现实
- Kotlin学习笔记(黑马2018教程)002--面向对象
热门文章
- java 实现橡皮擦_基于canvas剪辑区域功能实现橡皮擦效果
- jdk8 list 反转_三相异步电动机正反转故障排除在实训教学中的应用
- 为什么苹果允许用户安装未受信任的企业级开发者所开发的软件?
- 目标定位算法(四)之移动目标定位算法
- HTML基础常识问答(一)
- C2-关于VCF文件合并的几种方法
- Nginx 启动报 bind() to 0.0.0.0:XXXX failed (13: Permission denied)
- PHP 获取格式化的日期和时间
- TOGAF认证考试总结
- 浅学socket及iOS中的AsyncSocket框架