转载请注明出处:

http://www.cnblogs.com/darkknightzh/p/8858998.html

论文:

Ring loss: Convex Feature Normalization for Face Recognition

https://arxiv.org/abs/1803.00130v1

理解的不对的地方请见谅

Ring loss将特征限制到缩放后的单位圆上,同时能保持凸性,来得到更稳健的特征。

该损失函数作为辅助的损失,结合Softmax或者A-softmax等损失函数,来学习到特征的模,因而唯一的超参数就是ring loss的权重。论文中在权重为0.01时效果最好。

论文中指出,arcface,cosface等在训练时,损失函数之前将特征进行了归一化,但网络实际上并未学习到归一化的特征。如下图所示,a为训练样本的特征分布,b为测试样本的特征分布,训练样本特征均集中在一定的夹角范围内。但是对于测试样本中模比较小的,其变化范围比较大。

令F为深度模型,x为输入图像,则F(x)为特征。可优化下面的损失函数:

$\min {{L}_{s}}(F(x))\text{  s}\text{.t}\text{. }{{\left\| F(x) \right\|}_{2}}=R$

R为归一化后特征的模。由于模的等式限制,导致实际上该损失函数是非凸的(这句话不太确定怎么翻译,反正是非凸)。

因而Ring loss定义如下:

${{L}_{R}}=\frac{\lambda }{2m}\sum\limits_{i=1}^{m}{{{({{\left\| F({{x}_{i}}) \right\|}_{2}}-R)}^{2}}}$

相应的梯度计算如下:

$\frac{\partial {{L}_{R}}}{\partial R}=-\frac{\lambda }{m}\sum\limits_{i=1}^{m}{({{\left\| F({{x}_{i}}) \right\|}_{2}}-R)}$

$\frac{\partial {{L}_{R}}}{\partial F({{x}_{i}})}=\frac{\lambda }{m}(1-\frac{R}{{{\left\| F({{x}_{i}}) \right\|}_{2}}})F({{x}_{i}})$

上式中R为特征模的长度,类似于cosface及arcface中使用到的s,只不过s是提前设定的(将特征的模归一化,并放大到该值),如30,而此处的R是通过训练学到的。m为batchsize, 为Ring loss的权重。实际使用时,可以结合softmax loss/A-softmax loss。Softmax/A-softmax loss为主损失函数,Ring loss为辅助损失函数。论文中 为0.01时,训练效果最好。

下图是一个简单的例子,其中绿色点为初始化的点,蓝色的为目标类别,红色的为经过20次训练后,特征的分布。a为使用softmax的结果;b为使用ring loss,权重为1;c为使用ring loss,权重为10。可见,使用softmax后,特征收敛到比较大的范围。由于使用ring loss时,设置的特征模长为1,因而b能收敛到比较合理的位置(特征较集中)。当权重太大时,softmax起的作用很小,导致特征收敛到单位圆上,如c所示。因而需要合理的权重来平衡辅助损失函数ring loss和主损失函数。

论文中在MsCeleb1M(31000人,3.5M图像)上训练64层的resnet网络,性能比较好。

我这边在pytorch中进行了实现,初始化时R为0-30之间的随机数,在casia上训练resnet20的网络,效果稍微好于直接使用softmax训练后的模型(softmax的dir78%,ring loss的dir:不到80%。这两个模型均使用了batchnorm,否则dir没有这么高。。。)。

(原)Ring loss Convex Feature Normalization for Face Recognition的更多相关文章

  1. 深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用

    深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用 周翼南 北京大学 工学硕士 373 人赞同了该文章 基于深 ...

  2. A Theoretical Analysis of Feature Pooling in Visual Recognition

    这篇是10年ICML的论文,但是它是从原理上来分析池化的原因,因为池化的好坏的确会影响到结果,比如有除了最大池化和均值池化,还有随机池化等等,在eccv14中海油在顶层加个空间金字塔池化的方法.可谓多 ...

  3. 【CV论文阅读】+【搬运工】LocNet: Improving Localization Accuracy for Object Detection + A Theoretical analysis of feature pooling in Visual Recognition

    论文的关注点在于如何提高bounding box的定位,使用的是概率的预测形式,模型的基础是region proposal.论文提出一个locNet的深度网络,不在依赖于回归方程.论文中提到locne ...

  4. Paper reading: High-Fidelity Pose and Expression Normalization for Face Recognition in the Wild(HPEN)

    1. Introduction 人脸识别受到各种因素影响,其中最重要的两个影响是 pose 和 expression, 这两个因素会对 intra-person 变化产生极大的影响, 有时候甚至会超过 ...

  5. Large Margin Softmax Loss for Speaker Verification

    [INTERSPEECH 2019接收] 链接:https://arxiv.org/pdf/1904.03479.pdf 这篇文章在会议的speaker session中.本文主要讨论了说话人验证中的 ...

  6. (转载)人脸识别中Softmax-based Loss的演化史

    人脸识别中Softmax-based Loss的演化史  旷视科技 近期,人脸识别研究领域的主要进展之一集中在了 Softmax Loss 的改进之上:在本文中,旷视研究院(上海)(MEGVII Re ...

  7. 人脸识别的LOSS(上)

    超多分类的Softmax 2014年CVPR两篇超多分类的人脸识别论文:DeepFace和DeepID Taigman Y, Yang M, Ranzato M A, et al. Deepface: ...

  8. 【原】Coursera—Andrew Ng机器学习—编程作业 Programming Exercise 1 线性回归

    作业说明 Exercise 1,Week 2,使用Octave实现线性回归模型.数据集  ex1data1.txt ,ex1data2.txt 单变量线性回归必须实现,实现代价函数计算Computin ...

  9. [论文理解]Focal Loss for Dense Object Detection(Retina Net)

    Focal Loss for Dense Object Detection Intro 这又是一篇与何凯明大神有关的作品,文章主要解决了one-stage网络识别率普遍低于two-stage网络的问题 ...

随机推荐

  1. 【图的遍历】广度优先遍历(DFS)、深度优先遍历(BFS)及其应用

    无向图满足约束条件的路径 •[目的]:掌握深度优先遍历算法在求解图路径搜索问题的应用 [内容]:编写一个程序,设计相关算法,从无向图G中找出满足如下条件的所有路径:  (1)给定起点u和终点v.  ( ...

  2. java12小时制的时间转换为24小时制

    Java中将12小时制的时间转换为24小时制的方式如下: import java.text.SimpleDateFormat; import java.util.Date; public class ...

  3. BZOJ1898 [Zjoi2005]Swamp 沼泽鳄鱼 矩阵

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1898 题意概括 有一个无向图. 其中,有许多条鱼在以循环的规律出现,比如循环在1,2,3这些点出现 ...

  4. python tkinter-单选、多选

      单选按钮 tkinter.Radiobutton(root,text='a').pack() tkinter.Radiobutton(root,text='b').pack() tkinter.R ...

  5. 程序猿(媛)的葵花宝典-- 必备idea 插件plugins 提高编码效率

    最近发现了几个非常好用   提高编码效率 的idea 插件 跟大家分享一下,,,不用谢我!!!!!!!!!!!!! 因为idea自带的插件下载可能连接不上服务器而导致插件下载失败,所以这里推荐使用引入 ...

  6. codeforces895E. Eyes Closed

    题目链接 codeforces895E. Eyes Closed 题解 线段树维护期望和 写出修改两区间的相互影响 就是一个区间修改 emmm考试的代码过不去,这么松的spj都过不去Orz,每次和答案 ...

  7. rabbitmq使用方法(二)

    Work Queues In the first tutorial we wrote programs to send and receive messages from a named queue. ...

  8. Unity3D引擎中特殊的文件夹

    Editor Editor文件夹可以在根目录下,可以在子目录里,只要名是Editor就可以./xxx/xxx/Editor  和 /Editor 是一样的,多少个叫Editor的文件夹都可以.Edit ...

  9. [原创]H5前端性能测试工具介绍

    [原创H5前端性能测试工具介绍 一 网络抓包工具 网络抓包工具选择原则,可以捕获网络请求,抓取具体请求信息流,同时可以针对网络请包进行修改或拦截: 1.Fiddler(推荐) 2.Charles(推荐 ...

  10. linux 启动 Oracle 实例

    启动数据库实例,分为两步:第一步,启动监听:第二步,启动数据库实例. 一.如何启动数据库实例 1.进入到sqlplus启动实例 --“切换到oracle用户” su - oracle --“打开监听” ...