原文: 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. V-bind详细使用

    v-bind  主要用于属性绑定,Vue官方提供了一个简写方式 :bind,例如: <!-- 完整语法 --> <a v-bind:href="url">& ...

  2. .NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧

    一.前言 为什么要调试代码?通过调试可以让我们了解代码运行过程中的代码执行信息,比如变量的值等等.通常调试代码是为了方便我们发现代码中的bug.ken.io觉得熟练代码调试技巧是成为合格程序员的基本要 ...

  3. PHP 设计模式阅读清单

    社区文章推荐 S.O.L.I.D 面向对象设计和编程(OOD&OOP)笔记 浅谈 Laravel 设计模式 PHP 完整实战 23 种设计模式 Laravel Dependency Injec ...

  4. [poj1185]炮兵阵地_状压dp

    炮兵阵地 poj-1185 题目大意:给出n列m行,在其中添加炮兵,问最多能加的炮兵数. 注释:n<=100,m<=10.然后只能在平原的地方建立炮兵. 想法:第2到状压dp,++.这题显 ...

  5. vue Echarts 柱状图点击事件

    drawBar(){ let that = this; let chart = this.$echarts.init(document.getElementById('bar-graph')); le ...

  6. vue/axios请求拦截

    import axios from 'axios';import { Message } from 'element-ui';import Cookies from 'js-cookie';impor ...

  7. beta冲刺总结

    前言: 经过一周的努力,对alpha版本进行不断的更新,得到了beta版本. 主要成员介绍: 成员 性格 优点 缺点 主要工作 黄紫仪 努力奋斗型 努力奋斗,爱学习 爱吐槽 功能点修改和部分界面修改, ...

  8. 4c语言的第0次作业

    1.你认为大学的学习生活.同学关系.师生关系应该是怎样? 我认为大学的学习生活应该是充实有意义的,有对学习的激情又有与伙伴相知的愉悦. 我认为同学关系应该是互相尊重,互相学习,坦诚相待. 我认为师生关 ...

  9. 敏捷冲刺报告--Day5

    敏捷冲刺报告--Day5 情况简介 GUI框架重写, 添加功能 任务进度 赵坤: 后端爬虫bug修复 李世钰: GUI编写 黄亦薇:更新sprint backlog.编写每日报告 王成科:召集小组成员 ...

  10. 数据结构基础——指针及动态内存分配(malloc)

    一.指针 C语言中的指针是一种数据类型,比如说我们用int *a;就定义了一个指针a,它指向一个int类型的数.但是这个指针是未初始化的,所以,一般的,我们都在创建指针时初始化它,以免出错,在还不吃的 ...