A-Softmax(SphereFace)

2023-05-16

论文:SphereFace:https://arxiv.org/abs/1704.08063

SphereFace在MegaFace数据集上识别率在2017年排名第一,用的A-Softmax Loss有着清晰的几何定义,能在比较小的数据集上达到不错的效果。

首先,需要先科普一下在训练和测试人脸识别分类器的时候经常被提到的Open-set 和Close-set。Figure 1是一个直观的展示。

close-set,就是所有的测试集都在训练集中出现过。所以预测结果是图片的ID,如果想要测试两张图片是否是同一个,那么就看这两张图片的预测ID是否一样即可。

open-set,就是测试的图片并没有在训练集中出现过,那么每张测试图片的预测结果是特征向量,如果想要比较两张图片的人脸是否属于同一个人,需要测试图像特征向量的距离。

然而softmax loss仅仅能够使得特征可分,还不能够使得特征具有可判别性。尽管有一些方法通过结合softmax loss和 contrastive loss,center loss去提高特征的可判别性,但是contrastive loss和center loss需要精心地构建图像对和三元组,不仅耗时而且构建的训练对会对识别性能影响很大。因此,在这篇论文中,作者提出了angular softmax(A-Softmax)loss。

一步一步推导A-Softmax

modified Softmax

为了让特征学习到更可分的角度特性,作者首先对Softmax进行了一些改进:

为了简单起见,先假设是一个二分类问题,

在这里插入图片描述
softmax的决策边界是:

如果我们通过W的归一化来添加约束条件:
在这里插入图片描述
在这里插入图片描述
那么我们可以得到决策边界:

在这里插入图片描述
这样的损失函数称为改进了的Softmax(modified Softmax),通过这样的损失函数学习,可以使得学习到的特征具有更明显的角分布,因为决策边界只与角有关。

假设对于输入特征Xi,它的标签是Yi,用f(Yi)表示WiXi即Softmax对应Yi那一位的输出

Softmax的损失函数:

在这里插入图片描述
modified Softmax的损失函数:
在这里插入图片描述

A-Softmax

还可以进一步修改

在这里插入图片描述
通过添加系数m,对θ1有了更强的约束,因为cos(mθ1)比cosθ1要小。此时损失函数变为:
在这里插入图片描述
由于cosθ在[0,pi]上单调递减,因此θ有上界:
在这里插入图片描述
我们为了使得这个函数随角度单调递减,构造一个函数去代替cos:

A-Softmax的性质

**性质:**在二分类问题中,对于一个训练好的A-Softmax层,两个类的类内角度特征距离为m−1m+1θ
其中θ表示两个类的权值W1,W2之间的夹角。证明:

性质一:
A-Softmax Loss定义了一个大角度间隔的学习方法,m越大这个间隔的角度也就越大,相应区域流形的大小就越小,这就导致了训练的任务也越困难。

定义:定义mmin为当m>mmin时,类内的最大角度特征距离小于类间的最小角度特征距离。

性质二:
在这里插入图片描述

加粗样式

几种损失函数

softmax损失仅仅能够学到分辨性不够强的特征,除此之外,还有contrastive loss,center loss,triplet loss。

但是它们都在一定程度上存在弊端:

center loss仅能使得类内紧凑,无法使得类间可分。

contrastive loss和triplet loss需要pair/triplet 挖掘过程,增加时间的损耗。

除此之外,还有一个更关键之处:以上的损失函数都使用了欧式距离,而softmax损失学习到的特征有角度上的分布特性。

2. A-Softmax Loss的性质

性质1:
A-Softmax Loss定义了一个大角度间隔的学习方法,m越大这个间隔的角度也就越大,相应区域流形的大小就越小,这就导致了训练的任务也越困难。
这个性质是相当容易理解的,如图1所示:这个间隔的角度为(m−1)θ1,所以m越大,则间隔的角度就越小;同时mθ1<π,当所以m越大,则相应的区域流形θ1就越小。
在这里插入图片描述
定义1:mmin被定义为当m>mmin时有类内间的最大角度特征距离小于类间的最小角度特征距离。

实验及结果

训练集:CASIA-webface

batchsize: 128

28K次迭代收敛

测试时的算法:连接一张图以及其水平翻转的图的FC1输出,PCA降维后计算余弦距离

不同m对准确率的影响:
在这里插入图片描述
LFW得分:

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

A-Softmax(SphereFace) 的相关文章

随机推荐

  • UART协议及串口回环

    UART协议及串口回环 一 异步通信的分类1 UART xff08 通用异步收发器 xff09 2 RS4223 RS4854 Modbus5 接口标准 二 UART协议要求1 空闲状态2 起始位3 数据位4 校验位5 停止位6 波特率7
  • 使用MapReduce实现遗传算法

    摘要 xff1a 遗传算法在大规模问题的求解中得到越来越多的应用 传统的基于MPI的并行遗传算法需要知道机器架构的细节 另一方面 xff0c 由Google提出的MapReduce可用于开发具有扩展性和容错能力的应用 xff0c 是一个强大
  • 2021-03-08

    解决大疆无人机电池电压不平衡出现电池错误提示无法起飞 一个简单的笨办法 xff0c 处理某块电芯偏低 xff0c 而另一块明显偏高 xff0c 经平衡和数据修正后 xff0c 在使用中反复 xff0c 说明各电芯之间容量发生物理不可逆的容量
  • 如何学习编程语言-API学习

    作为一个本科非计算机科班出身编程水平又很菜的我来说 xff0c 很多学习方法都需要我自己去总结摸索 xff0c 我的老师朋友可以帮我解决具体的问题 xff0c 给我提供足够的资源 xff0c 但是最关键的细节把握和吸收消化还是需要我自己去完
  • 49天精通Java,第9天,java final关键字

    nbsp 目录 一 final nbsp 1 修饰引用 nbsp 2 修饰方法 3 修饰类 二 Java中的对象析构与finalize方法
  • 正点原子----Linux设备树详解

    linux设备树 1 什么是设备树2 DTS DTB DTC的关系3 如何编译设备树4 DTS基本结构4 1 语法4 2 设备树在系统中的体现4 3 尝试自己添加节点4 4 尝试对根节点追加信息 5 设备树特殊节点5 1 chosen子节点
  • 《嵌入式实时操作系统µC/OS-II》学习笔记(二)

    第三章 xff1a 内核结构 临界段 xff1a 也就是需要保证原子操作的代码段 由这里的说法 xff0c 绝大多数或者说所有的 xff08 xff09 内核都是都是使用开关中断的方式来处理 在 uC OS II 中 xff0c 使用 OS
  • SHELL-----脚本执行 、定义变量、特殊变量、read的用法、命令结果赋值给变量

    一 三种脚本执行方法 1 sh script sh bash script sh 没有执行权限时 2 path script sh script sh 绝对路径 xff0c 当前目录下 3 source script sh script s
  • Mybatis-查询数据传入传出和CRUD

    Mybatis 查询语句的入参类型 基本类型 javabean类型 xff1a 使用时要与 属性名对应 根据对象的属性名获取属性值 map类型 xff1a 匹配參數集合map中key的名字 数组 list类型 xff1a foreach遍历
  • Ubuntu18.04上编译并跑通VINS-Fusion

    VINS Fusion github 地址 xff1a GitHub HKUST Aerial Robotics VINS Fusion An optimization based multi sensor state estimator
  • 北邮人论坛求职版面:各种经验总结

    http bbs byr cn article WorkLife 886969 p 61 2 我觉得技术工作优先级是 0 xff09 业务前途 xff0c 决定你的上升空间 1 xff09 技术方向 xff0c 决定你在人力市场上的价格 2
  • Centos7防火墙常用命令

    一 系统防火墙 1 启动防火墙 systemctl start firewalld 2 关闭防火墙 systemctl stop firewalld 3 查看状态 systemctl status firewalld 4 开机启用防火墙 s
  • java操作hbase

    java 对 Hbase 的操作 一 引入pom span class token comment lt https mvnrepository com artifact org apache hbase hbase client gt s
  • 怎么用vnc访问自己电脑,并且同时又是同一个会话?

    1 运行 vncserver alwaysshared 网友也用这样的 xff1a vncserver alwaysshared 1 geometry 1440 900 2 在ubuntu的系统工具中有个 xff1a 桌面共享 最上面的两个
  • VMware Workstation+Ubuntu20.04LTS虚拟机+VMware Tools安装的那些事(有手就会)

    VMware Workstation 16 43 Ubuntu20 04虚拟机 43 VMware Tools安装的那些事 安装系统的选项 xff1a 1 实体机 xff1a 可能会出现硬件不支持 所以说不推荐 2 双系统 每次开机登录需要
  • 一篇文章带你彻底吃透Java NIO

    目录 一 I O模型 二 BIO NIO AIO应用场景 三 BIO编程简单流程 四 NIO核心 五 BIO与NIO比较 六 NIO 三大核心原理示意图 七 缓冲区 buffer 1 常用Buffer子类一览 2 buffer四大属性 3
  • 图像物体分类与检测算法综述

    图像物体分类与检测算法综述 转自 计算机学报 目录 图像物体分类与检测算法综述 目录图像物体分类与检测概述物体分类与检测的难点与挑战物体分类与检测数据库物体分类与检测发展历程 图像物体分类与检测是计算机视觉研究中的两个重要的基本问题 xff
  • 海康威视网络摄像头SDK二次开发(QT版本)

    暂时使用到的主要功能有四个 xff1a 1 连接相机 xff0c 2 实时显示 xff0c 3 取图 xff08 bmp格式 xff09 xff0c 4 关闭相机 在官网下载对应的win64的SDK xff0c 在库文件中运行demo ex
  • Android7.0成长之路---新特性Jack server

    准备 今天正式担任Android7 0 N 项目模块的开发和维护工作 xff0c 借此机会git和make了一套系统代码用来研究 在编译的过程中 xff0c 与以往系统不同的是Android7 0系统编译工具链使用了全新的Jack serv
  • A-Softmax(SphereFace)

    论文 xff1a SphereFace xff1a https arxiv org abs 1704 08063 SphereFace在MegaFace数据集上识别率在2017年排名第一 xff0c 用的A Softmax Loss有着清晰