【论文笔记】SphereFace: Deep Hypersphere Embedding for Face Recognition

2023-05-16

参考文献: Liu W, Wen Y, Yu Z, et al. SphereFace: Deep Hypersphere Embedding for Face Recognition[J]. arXiv preprint arXiv:1704.08063, 2017.

摘要

之前写过一篇large-marin softmax (L-Softmax) 的介绍,与Softmax Loss 相比,它能够学习区分度更高的特征。基于L-Softmax的改进,这篇paper提出Angular-Softmax(A-Softmax)去学习判别特征,它在超球面流形上强加了一个判别约束,而这个超球面流形本质上与人脸的先验知识位于同一个流形上。A-Softmax在人脸数据库LFW/YTF/MegaFace上的识别结果均优化其它loss函数。与L-Softmax类似,angular margin 同样可以由一个参数 m 来调整。

算法源码

算法介绍

1. Softmax Loss

在介绍A-Softmax之前,我们先来回顾softmax loss。当定义第 i 个输入特征 xi 以及它的标签 yi 时,softmax loss 记为:

L=1NiLi=1Nilog(efyijefj)

其中 fj 表示最终全连接层的类别输出向量 f 的第 j 个元素, N 为训练样本的个数。由于 f 是全连接层的激活函数 W 的输出,所以 fyi 可以表示为 fyi=WTyixi+byi , 最终的损失函数又可以写为:
Li=log(eWyixicos(θyi,i)+byijeWjxicos(θj,i)+bj)

其中 θ(j,i 0θj,iπ )是 Wj xi 之间的夹角。 当 Wj=1 bj=0 时,我们可以得到一个修改的softmax loss:
Lmodified=log(exicos(θyi,i)jexicos(θj,i))

PS: 与L-Softmax不同的是,作者除了假设 bj=0 ,还将 Wj 设为1。

2. 引入Angular margin

为了便于说明,作者以二分类作为示例。为了将属于类1特征 x 正确分类,修改后的softmax损失函数要求 cos(θ1)>cos(θ2) ,即 θ1<θ2 。本文在此基础上增加一个参数 m(m2) ,此时要正确分类,需使 cos(mθ1)>cos(θ2) ,即 θ1<θ2/m θ2<θ1/m 。这样就增强了判决的约束,使得学习出的特征的区分更强。根据这种思想修改的softmax loss函数为:

Lang=log(exicos(mθyi,i)exicos(mθyi,i)+jyiexicos(θj,i))

其中 0θyi,iπm 。与L-Softmax论文中相同,为了保证上式能在CNN中进行前/后向反馈,上式变换为:
Lang=log(exiψ(θyi,i)exiψ(θyi,i)+jyiexicos(θj,i))

在这里, ψ(θ) 可以表示为:
ψ(θ)=(1)kcos(mθ)2k,

其中 θ[kπm,(k+1)πm] k 是一个整数且 k[0,m1]

我们可以看出, m 的值越大,angular magin也就越大,那么m的最小值是多少呢?作者证明了,要使最小的类间距大于最大的类内距,对于二分类问题,需 m2+3 ,对于多分类问题, m3 。在实验中, m 通常设为4。

下表为不同的Loss函数的决策边界对比:

这里写图片描述

直观分析

为了分析A-Softmax Loss的有效性,作者将初始的Softmax,修改后的Softmax以及A-Softmax在二分类的结果首先用一个简单的二维空间几何表示:

这里写图片描述

可以看到,与前两者相比,A-Softmax在类别的角度维度上的分类更加分明,决策边界明显扩大。同时,从图中我们也可以看出,Softmax 在内在的角度分布特性,这也是作者提到基于Euclidean margin和Softmax融合不能取得较好效果的原因。

各个Loss函数在2D、3D超球面流形的表示如下图所示,对于更高维度的超球面,不好描述,但大家可以脑补下。
这里写图片描述

实验结果

为了证明A-Softmax的有效性, 作者构建了Sphere Face的网络,实验在人脸识别数据上进行。训练集采用CASIA-WebFace,测试集分别在LFW/YTF上进行。

m的影响

可以看出,随着 m 的增大,特征的类别的区分性也就越高。(普遍反应这个图画得非常好,值得学习)
这里写图片描述

人脸识别测试

在LFW/YTF上,A-Softmax均得了最好好的结果,只比FaceNet略差(采用了更多的训练集);在MegaFace的数据集上的1:1开集比对和开集1:N搜索,Sphere Face均取得了最佳的结果。
LFW/YTF测试结果

MegaFace测试结果

总结

本文通过增加angular margin的约束,在Softmax的基础上提出了A-Softmax,以此来学习区分力更强的人脸特征Sphereface,并且证明了增强参数m的下界。各个人脸识别测试集的实验证明了该方法的有效性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文笔记】SphereFace: Deep Hypersphere Embedding for Face Recognition 的相关文章

  • TypeError: unsupported operand type(s) for +: 'float' and 'decimal.Decimal'

    TypeError unsupported operand type s for 43 39 float 39 and 39 decimal Decimal 39 浮点型和双精度类型 相加报错 from decimal import Dec
  • ideaskin软件下载_Idea for android app

    App idea generator free app for inspiring and giving idea to make an app This app will show three random words on the sc
  • RS雷达转Velodyne雷达数据Failed to find match for field ‘intensity‘

    目录 xff1a 问题分析解决 问题 因为目前很多SLAM框架支持的激光雷达都是Velodyne型号的 xff0c 对于速腾RS雷达的使用者来说 xff0c 需要对数据进行转换 xff0c 其实现在速腾的雷达已经支持输出XYZI和XYZIR
  • ubuntu下安装Glog报错: error: ... recipe for target 'logging_unittest' failed

    在对glog进行make操作时报错如下 xff1a 解决办法 xff1a 重新安装gflags和glog xff0c 按如下方式进行安装 xff1a 1 xff09 安装gflags git clone https github com g
  • Access denied for user ''@'localhost' (using password: YES)错误解决方法

    远程登录被拒绝 xff0c 要改一个表数据的属性让他可以远程登录 解决方法如下 xff0c 执行命令 xff1a mysql gt use mysql mysql gt select host user from user 查看结果是不是r
  • twemproxy for redis使用说明及简单分析

    redis的数据量在内存高过50G时系统出现了明显的瓶颈 为了解决这个问题 xff0c 笔者找了些相关的资料 xff0c 发现了这个开源软件 功能很强大 xff0c 包含了last fm的ketama的一致性hash算法 xff0c 对于笔
  • VS Code For Web 深入浅出 -- 进程间通信篇

    在上一篇中 xff0c 我们一起分析了 VS Code 整体的代码架构 xff0c 了解了 VS Code 是由前后端分离的方式开发的 且无论前端是基于 electron 还是 web xff0c 后端是本地还是云端 xff0c 其调用方式
  • 释放webpack tree-shaking潜力之webpack-deep-scope-analysis-plugin

    在上周末广州举办的 feday 中 webpack 的核心开发者 Sean 在介绍 webpack 插件系统原理时 隆重介绍了一个中国学生于 Google 夏令营 在导师 Tobias 带领下写的一个 webpack 插件 https gi
  • MPLAB构建项目报错“recipe for target ‘.build-conf‘ failed”

    recipe for target build conf failed 刚入门单片机 xff0c 在写程序时 xff0c 当时写完 xff0c build成功 xff0c 但是第二天过来 xff0c 改写了部分代码 xff0c 然后去bui
  • v-if和v-for的优先级

    文章目录 vue2vue3 vue2 v for优先级比v if高v for与v if作用在不同标签时候 xff0c 是先进行判断 xff0c 再进行列表的渲染 注意事项 永远不要把 v if 和 v for 同时用在同一个元素上 xff0
  • 【转】embedding概念理解

    原文来自google developer的机器学习入门课程 主要觉得有几个点 很能说明embedding的本质 以及为什么要用embedding来做矢量化 以下我对原文做了我需要的信息的摘录 需要阅读原文的请自行去google develo
  • Keras—embedding嵌入层的使用

    最近在工作中进行了NLP的内容 使用的还是Keras中embedding的词嵌入来做的 Keras中embedding层做一下介绍 中文文档地址 https keras io zh layers embeddings 参数如下 其中参数重点
  • 样式设置 /deep/

    样式设置scoped属性带来的问题 通常我们在写样式的时候会在style标签中加上scoped属性 相信这个属性的作用大家都很清楚 Scoped CSS规范是Web组件产生不污染其他组件 也不被其他组件污染的CSS规范 但是这样有时候也会遇
  • 教妹学Java(十五):for循环详解

    你好呀 我是沉默王二 一枚颜值与才华俱在的程序员 本篇教程通过我和三妹对话的形式来谈一谈 for while do while 循环之间的差别 以及重点介绍一下 for 循环 while do while 会在接下来的教程中单独介绍 教妹学
  • 让 AI 真正读懂人类语言,5分钟搞懂 word embedding 技术

    大家好啊 我是董董灿 在学习自然语言处理 NLP Natural Language Processing 时 最先遇到的一个概念 可能就是词嵌入 word embedding 了 词嵌入 是让AI真正理解人类自然语言的技术 看完本文再回过头
  • torch rnn网络中,embedding.weight会反向更新吗?

    结论 在 PyTorch 中 如果在训练中使用了 embedding 层 那么 embedding weight 会被反向更新 这是因为在训练过程中 模型的参数会根据损失函数的反向传播进行更新 而 embedding 层的参数 embedd
  • 如何在 RNN 中嵌入句子序列?

    我正在尝试制作一个 RNN 模型 在 Pytorch 中 它需要几个句子 然后将其分类为Class 0 or Class 1 为了解决这个问题 我们假设句子的 max len 为 4 max amount of time steps 为 5
  • 小型 JavaScript 实现? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个极其微小的 Javascript 实现 也许是它的子集 代码大小和内存使用非常重要 速度不是问
  • android:使用ActivityGroup嵌入活动

    我正处于构建应用程序的概念化 设计阶段 但遇到了一些障碍 本质上 我正在寻找一种将一个活动嵌入到另一个活动的 UI 中的方法 类似于 TabHost TabActivity 的方式 屏幕顶部将有一个窗口 其中包含其他活动 其下方将是独立于上
  • 如何在张量流中使用非常大(>2M)的词嵌入?

    我正在运行一个具有非常大的词嵌入 gt 2M 词 的模型 当我使用 tf embedding lookup 时 它需要一个很大的矩阵 当我运行时 我随后出现了 GPU 内存错误 如果我减小嵌入的大小 一切都会正常 有没有办法处理更大的嵌入

随机推荐

  • 远程连接服务、SSH服务和密钥配置及VNC服务

    远程连接服务器是通过文字或图形接口的方式来远程登录系统 Centos7上独立服务管理命令 Systemctl start stop restart status reload enable disable 服务名 启动 停止 重启 状态 重
  • NVIDIA Jetson TX1(4)

    3 0 接口和信号描述 3 1 SD eMMC 控制器 标准 注释 SD 规范 Part A2 SD Host 控制器标准规范 V4 00 SD 规范 Part 1 物理层规范 V4 00 SD 规范 Part E1 SDIO 规范 V4
  • WinScp显示网络错误:软件造成的连接终止

    这时候 xff0c 我们应该检查两点 xff1a 1 Ubuntu端端口22有没有打开 重启sshd etc init d sshd start 打开端口22 cd etc ssh sudo vi ssh config 将里面的 PORT
  • linux之物理网卡配置桥接br0

    1 桥接 linux内核支持网口的桥接 xff08 目前只支持以太网接口 xff09 linux内核是通过一个虚拟的网桥设备来实现桥接的 这个虚拟设备可以绑定若干个以太网接口设备 xff0c 从而将它们桥接起来 真实主机中安装的虚拟主机 x
  • MacOS通过Time Machine恢复,迁移到新MacBook Pro后聚焦搜索与访达最近使用不正常的最终解决方法

    有一次老的MacBook Pro出了问题 xff0c 格式化后重装了系统通过Time Machine恢复后发现有部分软件不正常 xff0c 而且系统自带的聚焦搜索 xff0c 访达最近使用也都不显示东西了 xff0c 最近换了新款的MacB
  • C#中,FTP同步或异步读取大量文件

    一次快速读取上万个文件中的内容 在C 中 xff0c 可以使用FTP客户端类 xff08 如FtpWebRequest xff09 来连接FTP服务器并进行文件操作 一次快速读取上万个文件中的内容 xff0c 可以采用多线程的方式并发读取文
  • Ubuntu远程桌面链接树莓派

    树莓派安装远程桌面 前言树莓派安装real vnc serverubuntu安装vnc viewer 前言 网上的教程太杂乱 xff0c 就为这个事情找了不少资料 xff0c 最后终于自己摸清楚了 事情其实很简单 xff0c 就两部分 xf
  • 岁月不曾辜负谁--写于26岁生日前

    姑且当这是年终总结吧 xff0c 今天是平安夜也是我的25岁青春岁月的最后一天 回首2013 xff0c 3月份经朋友劝说和推荐来到了徐州继续我的挨踢生涯 xff0c 11月份与男友的恋情修的正果步入婚姻的殿堂 xff0c 这就是这一年里发
  • Nvidia JetsonTx2 使用中遇到的坑与填坑方法

    1 Tx2 买回来后最好刷机 xff0c 自带系统没有cuda等驱动 xff0c 重新刷JetPack包 Tx2刷JetPack 3 3方法 xff1a https blog csdn net long19960208 article de
  • Shell 的赋值命令

    首先 Shell赋值时 等号左右两边是不能有空格的 一般赋值 s 61 123 echo s 日期赋值 s 61 96 date 43 34 Y m d 34 96 注意 96 不是单引号 而是 下面的点 echo s 96 对字符串进行连
  • centos7开启telnet登陆

    centos7安装telnet xff0c 开启telnet登陆 xff1a xff08 1 xff09 安装命令 xff1a yum install telnet server yum install xinetd xff08 2 xff
  • 使用iptables命令配置防火墙重启失效的解决办法

    该命令列出当前的防火墙配置 iptables save保存配置 centos系统 保存配置到文件 service iptables save 开机自动启用 chkconfig iptables on 若不是centos系统 保存 iptab
  • MFC 中设置定时器Timer的方法

    在用settimer之前要知道 1 同1个 settimer xff08 xff09 在一个循环里设置一次就行了 xff0c 要是让其不断的set xff0c 是很可能执行不到ontimer xff08 xff09 消息处理函数的 xff0
  • 控制中的各种函数MATLAB仿真

    控制系统的MATLAB仿真 1 MATLAB简介 MATLAB是Mathworks公司开发的一种集数值计算 符号计算和图形可视化三大基本功能于一体的功能强大 操作简单的优秀工程计算应用软件 MATLAB不仅可以处理代数问题和数值分析问题 x
  • 使用VNC实现Windows7远程CentOS的桌面

    使用VNC实现Windows7远程CentOS的桌面 一 CentOS服务端配置 1 下载Putty远程登录软件 下载windows版本 输入CentOS计算机的ip xff0c 登录CentOS计算机的终端 xff08 下载Putty地址
  • iperf3使用方法(Windows与MacOS,iOS)

    Windows下载 https iperf fr iperf download php windows MacOS下载 brew install iperf3 iOS App Store搜索 iperf 61 61 61 61 61 在软路
  • 树莓派raspberry pi 安装远程工具teamviewer

    raspberry pi 安装远程工具teamviewer 1 下载Teamviewer wget http download teamviewer com download linux version 11x teamviewer hos
  • windows配置端口映射到其它电脑(转载)

    windows配置端口映射到其它电脑 转载 A 配置方法 假定需要通过192 168 1 8的14941端口连接192 168 1 118的1494端口 xff0c 则需要在192 168 1 8主机的命令行输入如下语句 netsh int
  • RFID ACCESS CONTROL门禁密码修改

    1 必须先进入编程方式 xff1a 按 xff3b xff3d xff0b xff3b 6位编程密码 如012345 xff0c 忘记编程密码参考第6步重置 xff0c 嘟嘟两声响 xff0c xff08 红灯闪烁 xff0c 绿灯长亮 出
  • 【论文笔记】SphereFace: Deep Hypersphere Embedding for Face Recognition

    参考文献 xff1a Liu W Wen Y Yu Z et al SphereFace Deep Hypersphere Embedding for Face Recognition J arXiv preprint arXiv 1704