原文: A Discriminative Feature Learning Approach for Deep Face Recognition

  用于人脸识别的center loss。

1)同时学习每个类的深度特征的中心点

2)对深度特征和其对应的类中心的距离有一定的惩罚

  提出的center loss函数在CNN中可以训练并且很容易优化。

  联合softmax loss和center loss,可以同时增加类间分散程度(inter-class dispension)与类内紧凑程度(intra-class compactness)。

对于普通的分类任务,网络最后一层全连接层输出的特征只有可分就行,但对于人脸识别任务,深度网络学到的特征不仅要可分,而且区分度要更大。

Softmax loss只有特征可分的效果,这对人脸识别是不够的。之前提出过contrastive loss和triplet loss,但是这两者需要仔细挑选训练样本,否则的话,具有不稳定行,也很难收敛。

为了增强神经网络学到的深度特征的辨别力,我们提出center loss。我们学习每个类的深度特征的一个中心(与特征具有相同维度的一个向量);在训练的时候,我们同时更新中心和最小化特征与其对应的类中心的距离。CNN在softmax loss和center loss联合下进行训练,其中有一个超参数控制。可以看出,softmax loss迫使不同类的深度特征保持分离,center loss使得属于同一个类的特征更加靠近中心;因此,在这两者联合之下,类间的特征差距不仅被加大,类内的特征变化程度也减小了。

本文的贡献:

1)提出一个新的loss function,称为center loss。可以用来最小化深度特征的类内距离,使得人脸识别更加鲁棒。

2)提出的center loss在CNN中很容易实现;模型可以训练,并且可以直接用SGD优化。

3)做了大量实验,在各种数据集上取得很好的结果。

3 The Proposed Approach

首先用一个小例子来讲解为什么提出这个center loss。以MNIST数据集为例,使用的网络称为LeNet++,与LeNet网络的区别是,加宽和加深了LeNet网络,并将最后一层隐含层输出改为2。具体区别如下:

Softmax损失函数如下:

其中,表示第i个深度特征,属于第yi类;d表示特征维度;m表示mini-batch的大小,n表示类的数量;

训练后二维的深度特征如下图,从图中可以看出,1)在使用softmax loss时,最后学习到的特征是可分的;2)深度特征并没有足够的可区别性,类内变化很大;因此这个不适合用于人脸识别。

3.2 The center loss

因此,如何设计一个有效的loss function,使得学习到的深度特征具有比较强的可区分性?直觉上,我们应该最小化类内的变化程度,同时保持类间的可区分性。最后,提出了center loss function,公式如下:

表示深度特征的第个类中心。当深度特征改变的时候,应该被更新。换句话说,我们应该把整个训练数据集考虑在内,并且在每个迭代之后计算每个类的平均特征。因此,center loss不能直接使用。

为了解决这个问题,我们做了两个必要的修改。首先,我们在每个mini-batch上更新中心点,而不是在整个训练集上。在每个迭代中,中心点通过计算每个类对应的特征的平均值得到(这种情况下,有些中心点可能不会更新);其次,为了避免被某些人为的错误标签干扰,我们使用一个尺度α来控制中心点的学习率。关于xi的Lc梯度更新公式和更新公式如下:

其中δ(condition) = 1表示满足condition。α取值范围为[0,1];

我们使用softmax loss和center loss联合训练CNN,公式如下:

从公式中可以看出来,上面的loss可以通过标准的SGD最小化。λ用于平衡两个损失函数。具体训练算法如下:

最后实验结果如下:

[论文阅读] A Discriminative Feature Learning Approach for Deep Face Recognition (Center Loss)的更多相关文章

  1. Center Loss - A Discriminative Feature Learning Approach for Deep Face Recognition

    URL:http://ydwen.github.io/papers/WenECCV16.pdf这篇论文主要的贡献就是提出了Center Loss的损失函数,利用Softmax Loss和Center ...

  2. A Discriminative Feature Learning Approach for Deep Face Recognition

    url: https://kpzhang93.github.io/papers/eccv2016.pdf year: ECCV2016 abstract 对于人脸识别任务来说, 网络学习到的特征具有判 ...

  3. 【论文阅读】Batch Feature Erasing for Person Re-identification and Beyond

    转载请注明出处:https://www.cnblogs.com/White-xzx/ 原文地址:https://arxiv.org/abs/1811.07130 如有不准确或错误的地方,欢迎交流~ [ ...

  4. 论文阅读 | Recurrent Attentional Reinforcement Learning for Multi-label Image Recognition

    源地址 arXiv:1712.07465: Recurrent Attentional Reinforcement Learning for Multi-label Image Recognition ...

  5. 论文阅读 | FPN:Feature Pyramid Networks for Object Detection

    论文地址:https://arxiv.org/pdf/1612.03144v2.pdf 代码地址:https://github.com/unsky/FPN 概述 FPN是FAIR发表在CVPR 201 ...

  6. 论文阅读 Dynamic Graph Representation Learning Via Self-Attention Networks

    4 Dynamic Graph Representation Learning Via Self-Attention Networks link:https://arxiv.org/abs/1812. ...

  7. 论文阅读 | A Curriculum Domain Adaptation Approach to the Semantic Segmentation of Urban Scenes

    paper链接:https://arxiv.org/pdf/1812.09953.pdf code链接:https://github.com/YangZhang4065/AdaptationSeg 摘 ...

  8. DWA局部路径规划算法论文阅读:The Dynamic Window Approach to Collision Avoidance。

    DWA(动态窗口)算法是用于局部路径规划的算法,已经在ROS中实现,在move_base堆栈中:http://wiki.ros.org/dwa_local_planner DWA算法第一次提出应该是1 ...

  9. 【论文阅读】Socially aware motion planning with deep reinforcement learning-annotated

    目录 摘要部分: I. Introduction 介绍 II. Background 背景 A. Collision Avoidance with DRL B. Characterization of ...

随机推荐

  1. 原生js+canvas实现滑动拼图验证码

    上图为网易云盾的滑动拼图验证码,其应该有一个专门的图片库,裁剪的位置是固定的.我的想法是,随机生成图片,随机生成位置,再用canvas裁剪出滑块和背景图.下面介绍具体步骤. 首先随便找一张图片渲染到c ...

  2. 第一周CoreIDRAW课总结

      一. 问:这节课学到了什么知识? 答:这节课我学到了很多知识,作为初学者的我,老师给我讲了CorelDEAW的启动,安装,基础知识和应用与用途. 基础知识 位图:是由无数个像素点构成的图像,又叫点 ...

  3. 总结的Javascript插件

    1.很好用的弹窗 https://limonte.github.io/sweetalert2/ https://github.com/limonte/sweetalert2 import './unt ...

  4. 排序算法Java实现(冒泡排序)

    算法描述:对于给定的n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行一轮比较和交换后,n个记录中的最大记录将位于第n位:然后对前(n-1)个记录进行 ...

  5. 【Python】 Web开发框架的基本概念与开发的准备工作

    Web框架基本概念 现在再来写这篇文章显然有些马后炮的意思.不过正是因为已经学习了Flask框架, 并且未来计划学习更加体系化的Django框架,在学习过程中碰到的很多术语等等,非常有必要通过这样一篇 ...

  6. mariadb插入中文数据乱码解决过程

    基本情况: 系统:centos 7 mariadb安装方式:yum 乱码解决过程: 查看当前数据库编码(登录数据库后) # show variables like 'character%'; (上图为 ...

  7. CSS2Properties doesn't have an indexed property setter for '0'

    使用React时,发现chrome浏览器没事,firefox火狐浏览器报了一个CSS2Properties doesn't have an indexed property setter for '0 ...

  8. fetch()函数使用的一些技巧

    最近项目用到了一些es6的知识,其中大篇幅在vue框架中使用了fetch()函数,总结了一些使用的技巧: 一, 1,POST带参数)fetch提交json格式的数据到服务器: //fetch替换vue ...

  9. QT5.8 for embedded

    http://doc.qt.io/qt-5/embedded-linux.html 先占座~

  10. 关于python中argsort()函数的使用

    在实现<机器学习实战>中kNN代码时遇到需要将计算好的距离进行排序,即可使用argsort()函数,在此依据个人理解对该函数进行简单的介绍. 总的来说,argsort()函数是对数组中的元 ...