人脸识别系列(十六):AMSoftmax

2023-05-16

论文链接:Additive Margin Softmax for Face Verification
-------------------------------------------------------------------
2019.1.24:注:腾讯AI Lab的 CosFace: Large Margin Cosine Loss for Deep Face Recognition和本文算法基本一致,工作也几乎是同时完成,两篇论文也都各自中了不同的会议。
-------------------------------------------------------------------

AMSoftmax

Softmax

这里写图片描述

ASoftmax

这里写图片描述
这是在SphereFace中提出来的损失函数
这里写图片描述

AMSoftmax
这就是本文新提出的损失函数了。其变化就在于修改了Cos(mθ)为一个新函数:
这里写图片描述
与ASoftmax中定的的类似,可以达到减小对应标签项的概率,增大损失的效果,因此对同一类的聚合更有帮助

然后根据Normface,对f进行归一化,乘上缩放系数s,最终的损失函数变为:

这里写图片描述

这样做的好处在于ASoftmax的倍角计算是要通过倍角公式,反向传播时不方便求导,而只减m反向传播时导数不用变化

角度距离与余弦距离

作者认为,Asoftmax是用m乘以θ,而AMSoftmax是用cosθ减去m,这是两者的最大不同之处:一个是角度距离,一个是余弦距离

使用传统的Softmax的时候,角度距离和余弦距离是等价的,即

这里写图片描述

但是当我们试图要推动决策边界的时候,角度距离和余弦距离就有所不同了。

最终的决策边界是和余弦相关的,根据cos的性质,优化角度距离比优化余弦距离更有效果,因为余弦距离相对更密集

之所以选择cosθ-m而不是cos(θ-m),这是因为我们从网络中得到的是W和f的内积,如果要优化cos(θ-m)那么会涉及到arccos操作,计算量过大。

特征归一化

这里提到了一个归一化特征的重要目的:

高质量的图片提取出来的特征范数大,低质量的图片提取出来的特征范数小,如图:
这里写图片描述
这是因为Softmax的目标是尽可能最大化正确分类的概率,它会忽略掉一些比较难分辨的图片:也就是低质量的图片,而优先拟合高质量的图片
因此把特征强行归一化会使得低范数的图片变得高范数,也会获得更多的网络的注意力。

(这和tripletloss刻意去挖掘难以识别的图片的最终结果是一样的,方法不一样而已)

这里写图片描述
这张图说明的是特征归一化之后,原来范数比较小的特征会获得更大的梯度,对应于normface中的求导式:
这里写图片描述

实验

网络

20层Resnet

参数

We set the weight decay parameter to be 5e.4. The batch size is 256
and the learning rate begins with 0.1 and is divided by 10 at the 16K, 24K and 28K iterations

训练集

CASIA-Webface

验证方式

图片与其镜像图片提取出来的特征对应相加,比较余弦距离

结果

这里写图片描述

不使用特征归一化,在高质量图片集(LFW)上结果更好

使用特征归一化,在具有很多低质量的图片集(MegaFace)上结果更好。

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

人脸识别系列(十六):AMSoftmax 的相关文章

  • 使用VsCode管理Gitee仓库中的项目

    使用VsCode管理Gitee仓库中的项目的大致流程如下 1 首先得下载安装 git xff0c 详见 Git 详细安装教程详解 Git 安装过程的每一个步骤 mukes的博文 xff09 2 为 git 配置 username和email
  • Linux嵌入式开发之内存占用

    一 引言 内存是嵌入式系统中的关键资源 xff0c 内存占用主要是指软件系统的内存使用情况 本篇博客将介绍如何分析内存使用以便进行进一步优化内存占用相关的基础概念和相关工具 二 内存占用 内存占用是应用程序运行时内存的使用或引用数量 对于开
  • 手眼标定——使用 easy_handeye 和 aruco

    整个过程分为以下三步 aruco ros 的配置使用easy handeye 的配置使用标定过程 aruco 的配置使用 clone aruco 项目 到 ros 工作空间 前往 aruco marker 生成网站 打印 marker xf
  • CentOS7.6 Docker 操作(一)

    CentOS7 6 Docker 操作 xff08 一 xff09 CentOS 7 6镜像地址 网易镜像 xff08 可直接复制地址到迅雷 xff0c 下载会快一些 xff09 http mirrors 163 com centos 7
  • 读取excel 表格控件

    直接在实时编辑器里 xff1a T 61 xlsread 39 C Users 86173 Desktop DESKETOP 111 xlsx 39 t 61 textread 39 C Users 86173 Desktop DESKET
  • Eureka注册中心

    3 Eureka注册中心 假如我们的服务提供者user service部署了多个实例 xff0c 如图 xff1a 大家思考几个问题 xff1a order service在发起远程调用的时候 xff0c 该如何得知user service
  • 从docker 拉去指定版本的镜像

    从docker 拉去指定版本的镜像 1 上https hub docker com 网站 xff0c 查询 点击tags查看 2 拉取 docker pull images tags
  • SpringBoot整合mybatis-plus

    导入依赖 在项目pom文件导入依赖 在项目pom文件导入依赖 span class token tag span class token tag span class token punctuation lt span dependency
  • idea mybatisplus 插件使用

    在plugin中安装mybatisplus 插件 使用 配置数据库 生成代码 表新增字段 xff0c 重新生成实体类覆盖 因业务需求 xff0c 表中可能会时不时增加一些字段 xff0c 大多情况下实体类中不会添加表中没有的字段 xff0c
  • axios请求

    可传参数 span class token function axios span span class token punctuation span span class token punctuation span span class
  • kubesphere

    文章目录 KubeSphere简介安装多租户管理WordPressDevOps 作者声明 KubeSphere 默认的 dashboard 没啥用 xff0c 我们用 kubesphere 可以打通全部的 devops 链路 Kubesph
  • 粒子群算法 PSO

    粒子群算法 粒子群算法 PSO 在PSO中 每个优化问题的潜在解都是搜索空间的一只鸟 xff0c 被称为粒子 xff0c 所有的粒子都有一个由适应度函数决定的适值 xff0c 每个粒子还有一个速度决定它们 飞行 的方向和距离 xff0c 然
  • SEATAdocker-compose部署

    docker compose 文件 span class token key atrule version span span class token punctuation span span class token string 39
  • docker-compose 部署ELK

    目录结构 docker compose 文件 span class token key atrule version span span class token punctuation span span class token strin
  • sleuth-zipkin springcloud

    docker compose文件 span class token key atrule zipkin span span class token punctuation span span class token key atrule i
  • 登录session_id用法以及如何验证账号和密码

    登录的时候 xff0c session start session id 61 session id 把 session id储存在本地 xff08 app储存在app xff0c 电脑用cookie储存 xff09 xff0c 再次请求的
  • 正点原子MiniFly Firmware V1.5开源四轴代码硬件部分分析2:motor.c。

    一些参考 xff1a 电机控制基础 定时器基础知识与PWM输出原理 知乎 zhihu com include 34 sys h 34 include 34 delay h 34 include 34 motors h 34 include
  • 使用百度地图POI爬取需要的数据

    目标 xff1a 爬取阿克苏地区内的所有医院数据 一 百度地图开放平台注册 xff0c 获取到AK xff08 1 xff09 在百度地图开放平台完成注册 这个平台是百度地图为开发者提供接口用的 xff0c 有很多其他的功能 xff0c 这

随机推荐

  • RT-Thread 笔记整理

    1 AI xff1a 从前例中学习 xff1b 传统 xff1a 基于经验 2 IOT xff08 internet of things xff09 设备 xff08 传感器将原始数据上传 xff09 gt Gateway网关 gt clo
  • Realsense

    使用说明 xff1a 1 组装拍摄三脚架与滑动条轨 xff0c 将RealSense相机与手机一同装置在三脚架的滑动条轨上 2 连接RealSense到笔记本电脑 xff0c 不需任何配置即可直接适配设备 3 打开PC端软件 xff0c 调
  • 变频器基础:变频器工作原理与常用功能

    参考文献 1 向晓汉 宋昕 变频器与步进 伺服驱动技术完全精通教程 M 第1版 北京 化学工业出版社 2015 2 王永华 现代电气控制及PLC应用技术 M 第5版 北京 北京航空航天大学出版社 2018 3 王兆安 刘进军 电力电子技术
  • 线性系统的矫正方法——PID控制理论学习笔记

    主要谈及直流电机的速度PID控制 xff0c 在智能车中还有方向PID控制 xff08 舵机调整方向 xff09 参考文献 1 胡寿松 自动控制原理 M 第六版 北京 科学出版社 2015 2 陈伯时 电力拖动自动控制系统 运动控制系统 M
  • Linux驱动的软件架构(一):驱动的软件设计模式理念

    这个内容是我观看 Linux设备驱动开发详解 的学习笔记 xff0c 其实书里面是先讲了关于驱动的很多的基础知识 xff0c 然后再讲驱动的软件架构 但是我最近深深地沉迷于自顶向下的学习逻辑 xff0c 所以打算先对整个驱动有了框架之后 x
  • java.lang.NoClassDefFoundError: com/jspsmart/upload/SmartUploadException

    问题描述 我在使用Smartupload上传图片的时候 xff0c 代码没问题 xff0c 编译也没有报错 xff0c 但是启动服务器 xff0c 便出现了java lang NoClassDefFoundError com jspsmar
  • datetime-local数据类型和Date数据类型转化(前端到后端,后端到前端)

    前端的datetime local传递到后端为Date类型 前端的input输入框 span class token tag span class token tag span class token punctuation lt span
  • Ubuntu18.04中LXC安装配置以及简单使用

    LXC安装配置 安装LXC sudo apt install lxc y 安装完毕之后 xff0c 默认的文件路径为 etc lxc 查看LXC版本 sudo lxc version 然后创建Ubuntu的LXC容器 t 指定模板 xff0
  • STM32 串口详解

    目录 01 USART的特点 02 USART简介 2 1 数据传输模型 2 2 帧结构 2 3 波特率 03 STM32的USART 04 代码配置 01 USART的特点 USART是通用异步收发传输器 xff08 UniversalA
  • Ubuntu18.04安装配置FRR

    FRR 文章描述了如何在Ubuntu18 04的环境下安装配置frr 0 更新安装源 vi etc apt sources list 更改文件内容 deb http mirrors aliyun com ubuntu bionic main
  • Ubuntu中安装配置JDK1.8

    JDK1 8安装配置 下载JDK 点击下载jdk 解压 将下载的压缩包解压到 opt目录下 span class token function tar span zxvf 下载的jdk压缩包名字 C opt 设置软链接 切换到 opt目录下
  • 使用Systemback制作Ubuntu20.04自定义系统镜像和系统备份

    为了方便我们自定义系统的镜像文件和系统下载的软件 xff0c 减轻再次部署的麻烦 xff0c 我们会制作镜像文件 本文就是利用Systemback来制作Ubuntu20 04自定义系统镜像和系统备份 查看网上的Systemback安装教程很
  • Key exchange was not finished, connection is closed.解决办法

    错误 利用java连接Linux服务器中碰到错误 xff1a Key exchange was not finished connection is closed xff0c 导致服务器的连接失败 xff0c 报错如下 原因 是ssh中的k
  • JAVA数据结构之顺序表、单向链表及双向链表的设计和API实现

    一 顺序表 顺序表在内存中是数组的形式存储 类名SequenceList构造方法SequenceList int capacity xff1a 创建容量为capacity的SequenceList对象成员方法1 public void cl
  • 单向链表快慢指针实际应用问题

    快慢指针 所谓快慢指针 xff1a 就是利用两个指针移动速度的不同来实现需求 xff0c 一般设置两个指针 xff0c 慢指针每次移动一格 xff0c 快指针每次移动两格 下面分享利用快慢指针解决中间值 链表环路以及环路入口的问题 中间值问
  • Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax 解决方法

    问题描述 Caused by java sql SQLSyntaxErrorException You have an error in your SQL syntax xff1b check the manual that corresp
  • 数组和JSON之间的格式转换

    数组和JSON之间的格式转换 主要代码 xff1a span class token keyword const span a span class token operator 61 span span class token const
  • Linux vncpasswd and passwd

    1 vncpasswd 功能 xff1a 使用vncpasswd命令可以创建或更改一个VNC的登录密码 xff0c 这将同时在用户的主目录下创建一个隐藏的目录 vnc xff0c 该目录内有一个文件passwd保存着VNC登录密码 语法 v
  • 修改运行中的docker容器的端口映射(简单、高效)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言查看已经存在容器id关闭docker服务 xff0c 修改配置文件结束 xff0c 启动容器 前言 在docker run创
  • 人脸识别系列(十六):AMSoftmax

    论文链接 xff1a Additive Margin Softmax for Face Verification 2019 1 24 xff1a 注 xff1a 腾讯AI Lab的 CosFace Large Margin Cosine L