SphereFace的翻译,解读以及训练
来源:互联网 发布:日本高考数学知乎 编辑:程序博客网 时间:2024/06/05 19:33
前段时间,由于工作需要,学习了一下论文《SphereFace: Deep Hypersphere Embedding for Face Recognition》,收获挺大的,这几天刚好有空,就整理了一下。博客分为三大部分,包括SphereFace的翻译,论文解读,以及模型的训练和测试。
论文翻译
这里只翻译论文中最核心的第3章中的3.1,3.2和3.3
3.1 回顾Softmax loss
我们回顾一下softmax loss的决策准则。在二分类的情况下,softmax loss的后验概率为:
公式中
成:
这里
这里
虽然我们可以通过改进后基于角度的softmax loss学习特征,但是这些特征不一定就是可区分的。由于我们使用角度作为距离的矩阵,那么很自然的就可以将角度距离融合到学习到的特征来加强特征的可区分能力。本节最后,我们提出了一个新的方法来结合角度距离。
3.2 softmax loss中引进角度距离
我们没有设计一种新的loss函数,也没有构造一个softmax loss的加权组合(类似于对比loss),我们提出了一种更加自然的方法学习角度距离。从之前对softmax loss的分析来看,我们知道决策函数对特征分布的影响很大,所以我们的基本思想就是控制决策函数生成角度距离。我们首先使用二分类来解释一下我们的思路。
假设x是从类别1中学习到的特征,
其中
其中我们定义:
表1。 二分类中决策函数的比较。注意
从原始的softmax loss到改进的softmax loss,从优化内积到优化角度。从改进的softmax loss到A-softmax loss,让决策函数更加严格并且更加具有可区分性。当m增大,角度距离也会增加,当m=1的时候,角度距离为0。
通过A-softmax loss的监督,CNN学习到基于几何的角度距离的脸部特征。因为A-softmax loss需要
3.3 A-softmax loss的超球体解释
当m>=2的时候,对于正确分类来说A-softmax loss有更强的需求,这在不同类的特征之间产生了角度分类距离。A-softmax loss不仅使得学习到的特征更加可分,同样还具有更好的超球体解释。如图3所示
图3:欧式距离,改进的softmax loss和A-softmax loss的几何解释.第一行是2D特征约束,第二行是3D特征约束。橘黄色区域表示类别1的限制区间,绿色的表示类别2的限制区间。
A-softmax loss等价于在超球体空间学习特征,而欧式距离loss在欧式空间学习特征。简单起见,我们使用二分类来分析超球体解释。假设类别1的一个样本
中,
论文解读
关于softmax loss的理解
阅读完这篇论文后,我对softmax loss有了更深的理解。
Softmax loss中的概率计算公式:
公式中
关于这个公式,借助CNN来理解一下。
以人脸识别经典的DeepID[1]模型为例,DeepID结构图:
论文见参考文献[1]
我们可以看出,全连接层fc1层就是对应DeepID结构图中的160维的DeepID特征,也就是我们要学习的特征,也就是softmax loss 概率公式中的
由softmax loss概率公式我们可以知道,每一类概率对应一个
论文思想
我们知道人脸识别最理想的特征是最大类内距小于最小类间距。在SphereFace之前的triplet loss,center loss也是为了达到这个目的。论文中的A-softmax loss并不是新的loss,其实还是原始的softmax loss,只是对原始的softmax loss公式做了变换,导致softmax loss层的输入发生了变化,也就是最后一层全连接层fc2的输出发生了变化。
原始softmax loss层中最后一个全连接层的输出是
实验
训练样本
本文实验中的训练样本采用了CASIA,对人脸进行了对齐(使用参考文献[2]中的算法),并做了crop。crop后的部分训练样本如下:
训练及测试
训练用的网络结构和训练参数直接使用了作者提供的,收敛速度较慢,最终softmax_loss降到2.0左右。在LFW上测试,对于每个pair,计算两个人脸提取出来的fc5层特征的cosine距离,并根据距离画ROC曲线
由ROC曲线可以看出,SphereFace的效果还是不错的。
2017-10-19 19:56:59
参考文献
[1] [2014 CVPR] Deep Learning Face Representation from Predicting 10,000 Classes
[2] [2014 CVPR] One Millisecond Face Alignment with an Ensemble of Regression Trees
非常感谢您的阅读,如果您觉得这篇文章对您有帮助,欢迎扫码进行赞赏。
- SphereFace的翻译,解读以及训练
- sphereface 训练出现的问题
- Caffe中Mnist的训练日志解读
- Caffe中Mnist的训练日志解读
- sphereface result
- sphereface v2
- sphereface conv64
- 【dlib代码解读】人脸检测器的训练
- 【dlib代码解读】人脸关键点检测器的训练
- Caffe源码解读(八):使用训练好的模型
- 【dlib代码解读】人脸检测器的训练
- 【dlib代码解读】人脸关键点检测器的训练
- 深度学习笔记——Word2vec和Doc2vec训练实例以及参数解读
- UML基础以及关系的形象解读
- json解读以及Gson的使用
- AsycTask源码解读以及遇到的问题
- MOSES翻译系统的训练,调优和使用
- 管理者的习惯以及基本功底训练
- LeetCode#455 Assign Cookies题解(C++版)
- Mat类型遍历图像的三种方法
- 索引优化策略(1)
- 作业:找出“你、我、他”在Unicode表中的位置
- Linux 基础学习篇11(管理网络)
- SphereFace的翻译,解读以及训练
- 网络管理
- 51nod 1057 N的阶乘 (水题ing……)
- c#暂停n秒
- 关于几种排序的时间复杂度和空间复杂度
- Hexo个人博客从零开始到搭建完整
- mysql 数据类型及占用字节数
- c#实现文件加密、解密及文件拖拽至程序图标直接打开
- uGUI