【论文理解】ArcFace: Additive Angular Margin Loss for Deep Face Recognition(InsightFace)

人脸识别 损失函数 centerloss arcfaceloss pytorch实现 Softmax loss 阅读详情

【论文理解】ArcFace: Additive Angular Margin Loss for Deep Face Recognition(InsightFace)

论文地址:https://arxiv.org/abs/1801.07698

github:https://github.com/deepinsight/insightface

这篇论文基本介绍了近期较为流行的人脸识别模型,loss变化从softmax一路捋到CosFace,然后提出ArcFace,可以说起到很好的综述作用。论文评价对比方面也做了非常详细的对比策略方案分析。数据清洗工作也对后续研究应用有较大意义。数据和代码都开源,相当良心。

本文主要工作概述:

在三个影响人脸识别模型精度的主要因素上都做了相关工作

(1)       数据

对MS-Celeb-1M,MegaFace FaceScrub做了清洗。清洗后的数据公开。

(2)       网络

详细对比了不同的主流网络结构的性能,提出了能够在较大姿态和时间跨度上表现较好的网络block形式。

(3)       Loss

详细分析了L-softmax,Sphereface,ConsineFace等loss,提出ArcFace,在MegaFace上获得了state-of-the-art精度。

 

loss的演变历程:

2. 从Softmax到ArcFace

2.1 Softmax:

Softmax并没有明确的将特征优化成正样本能够有更高的相似度,负样本能够有更低的相似度,也就是说并没有扩大决策边界。

 

2.2 WeightsNormalisation

权重归一化之后,loss也就只跟特征向量和权重之间的角度有关了

在Sphereface论文中表明,权值归一化至提高了一点点效果。

 

2.3 MultiplicativeAngular Margin

Sphereface中,角度扩大m倍

由于cosine不是单调的,所以用了个策略给转成单调的

训练的时候加入了softmax帮助收敛,引入了一个参数lamda实际上

可是这个参数的引入让训练变的复杂微妙起来。

 

2.4 FeatureNormalisation
特征和权重正则化消除了径向变化并且让每个特征都分布在超球面上,本文将特征超球面半径设为s=64,正则化为64,sphereface的loss变为:

 

2.5 Additive Cosine Margin

本文把m设为0.35. 与sphereface相比,cosine-face有三个好处:(1)没有超参数简单易实现,(2)清晰且不用softmax监督也能收敛,(3)性能明显提升

 

2.6 Additive AngularMargin

Cos(theta + m)

这下margin随着theta的变化也是动态变化的。

 

2.7 Comparison underBinary Case

 

 

2.8 Target Logit Analysis

 

这里对Sphereface,consineFace和arcFace为何能提升性能进行分析。使用LResNet34E-IR模型和MS1M dataset进行分析。

先看a图

稍微降低softmax的Target Logit够提升性能同时也提高了训练难度,不过降低太多会导致训练发散。也就是为什么sphereface 在m =2 和lambda =0的情况下训练发散。

再看c图

theta的变化时从训练开始的90度左右最终慢慢变为三四十度。对照图a,在30~90度之间,ArcFace曲线更低,也就是说在这个区间,ArcFace对margin的惩罚比consineFace更大。所以到最后ArcFace收敛的角度区间位置比ConsineFace更小,也就是说收敛的更好一些(图c),从b也能看出训练之初,arcFace惩罚更大,训练后期ArcFace惩罚又比consineFace更小,也就是说收敛的更好。

在图c可以看出收敛后,theta基本都小于60度,超出60度的基本都是困难样本或者噪声样本。虽然从a中看在theta<30度时,consineFace惩罚力度更大,但是直到训练后期这部分也很少,所以也没什么用。

所以从曲线上来说,在30~60度区间上,增加惩罚边界能够提升精度,因为这部分与最有效的一般困难的样本有关,多惩罚一下这种的,有助于提升精度,但惩罚太多会导致发散。这也就是为什么性能从Softmax, SphereFace, CosineFace 到 ArcFace逐步提升。

 

3. 实验

3.1.1 训练数据

VGG2: 训练集--8631人314 1890张图片;测试集—500人16 9396张图片,姿态,年龄,光照,种族,职业跨度大。质量较高的数据集。直接使用。

MS-Celeb-1M: 原始包含10万人1000万图片。

清洗方式:获取每个人的身份质心,将每个人的图片按照距离质心的距离进行排序。距离质心过远的图片自动移除。然后人工确认在距离阈值边缘的图片,最终剩下的数据集包含85000人的380万图片。清晰数据结果公开。

 

3.1.2 验证数据

LFW:包含5749人的13233张图片,姿态表情和光照变化较大,6000face pairs上验证

CFP:500人,每人10张正面和4张侧面图片。测试包含正面-正面和正面-侧面验证,10个文件夹包含350人same personpairs和350different person pairs。本文只使用了较有挑战性的CFP-FP验证组。

AgeDB:这是自然环境下具有较大姿态,表情,光照和年龄变化的数据集。440人12240张图片,年龄范围3到101岁,标注有身份性别和年龄。本文使用的是AgeDB-30.包含300正样本对和300负样本对。

 

3.1.3 测试数据

MegaFace: 开源的最大测试基准,百万级别的测试分布。

Gallery set:69万人超过100万张图片,有噪声

Probe set:FaceScrub和FGNet

FaceScrub包含530人的10万张图片,其中55742张男性图片,52076张女性图片。有噪声

FGNet是年龄数据及,有82人的1002张图片。每人都有跨越年龄的多张人脸。

 

清洗FaceScrub:

获取每个人的身份质心,将每个人的图片按照距离质心的距离进行排序。然后人工排查,共找出605张噪声图片。测试阶段,将噪声图片进行了替换,识别精度提升了1%。

 

清洗MegaFace

人工清洗,找到707张噪声图片片,测试阶段,增加了一个额外的特征维度来区分这些噪声脸,识别精度提高15%。

 

清洗结果公开

 

3.2 网络设置

使用MxNet架构。

首先使用VGG2作为训练数据softmax作为损失函数验证了各种不同的网络设定。

Batch size 512

4or8块NVIDIA tesla P40(24G)GPU

学习率起始0.1,在100k, 140k和160k时分别缩小10倍

总iters 200K

Momentum0.9

Weight decay 5e-4

 

3.2.1 输入设定

采用5个关键点校准人脸并resize到112*112 RGB,归一化到-1~1

因为很多卷积网络都是为ImageNet分类任务设定的,那个输入是224*224,而本文的输入是112*112,所以为了保证特征图的分辨率,本文将conv7*7stride2替换为conv3*3 stride1.

这样最后卷积的输出是7*7

 

3.2.2 输出设定

在最后的几层,使用不同的策略来调查特征嵌入设定如何影响模型的表现。

Option-A:使用Global pooling(GP)

Option-B:在GP后使用一个全连接

Option-C:在GP后使用FC+batch normalization

Option-D:使用在GP后使用FC-BN-PRELU

Option-E: 最后一个卷积层后+BN-Dropout-FC-BN

除A外,其余特征维度都是512,A的维度由卷积层输出size决定。

 

3.2.3 Block setting

使用了改进的残差网络结构。

 

3.2.4 Backbones

网络主干使用了当前较为流行的一些模型

MobileNet

Inception-Resnet-V2

DenseNet

SEnet

DPN

比较了这些网络在精度速度和模型size上的区别。

3.2.5 网络设定总结

Input selects L.

第一层convLayer 卷积核为3*3stride1时,网络输出7*7;卷积核为7*7stride2时,网络输出3*3

通过比较发现,输出特征图维度大的性能更好一些,所以还是选择卷积核为3*3stride1。

 

Output selects E.

通过对比发现Option-E的输出方案能够获得最好的效果。Dropout参数设定为0.4,有效避免过拟合并且获得较好的泛化能力。

 

Block selects IR.

BN-Conv(stride=1)-BN-PReLu-Conv(stride=2)-BN这个结构能够获得更高的精度。

 

Backbones Comparisons

速度在P40 GPU上测的,

Inception-Resnet-V2 network obtains the best performance with long runningtime (53:6ms) and largest model size (642MB).

MobileNet can finish face feature embedding within 4:2ms with a model of 112MB, and the performance only dropsslightly.

综合考虑速度和精度,LResNet100E-IR较为理想。本文就是用这个在MegaFace上测试的。

 

3.3 LOSS setting

由于参数m对决策边界有重要影响,因此先分析找出最佳m

使用LMobileNetE+arcFace loss在refined MS1M数据集上训练,m从0.2到0.8变化。0.5最优,选择0.5.

 

基于LResNet100E-IR和refined MS1M数据集,比较了不同的loss函数对精度的影响。

结论(1)与Softmax和Sphereface相比,cosine face和ArcFace在较大的姿态和年龄变化时,精度明显提升。(2)CosineFace和ArcFace比SphereFace更易实现,不需要softmax的辅助就能很容易的收敛,而对于sphereface,softmax的辅助是必不可少的。(3) ArcFace比consineFace略微好一丁点,不过ArcFace更为直观并且在超球面维度上有更清晰的解释。

 

3.4. MegaFace Challenge1 on FaceScrub

LResNet100E-IR network and the refined MS1M dataset

MS1M和FaceScrub重复的人剔除,分别计算两个库中每个人的特征质心,578个中心距离小于0.45的人,然后将这578人再MS1M中移除。重新比对结果

 

3.5 Further Improvement by Triplet Loss

受限于GPU内存,基于softmax的方法训练困难。一个较为实用的解决方案是使用度量学习的方法,较为常用的是triplet loss,不过triplet loss的收敛速度比较慢,所以本文使用triplet loss微调现有的人脸识别模型。

Finetuning时,本文使用LResNet100EIR模型,lr设为0.005, momentum为0, weight decay 5e-4.

用AgeDB-30验证,发现(1)用较少人数训练的Softmax然后用较多人数的数据集通过triple loss finetuning后精度明显提升,同时也说明了2步训练机制的有效性,训练速度比直接训练tripletloss快很多;(2)通过在同样的数据集上triplet finetuning也能提升精度,说明局部的提升有助于全局模型的提升;(3)局部度量学习的方法可以补充全局超球面度量学习的方法。

由于tripletloss 的margin是欧氏距离,之后作者会继续研究基于角度margin的triplet loss。

论文分享:ArcFace: Additive Angular Margin Loss for Deep Face Recognition ArcFace 阅读详情

相关推荐

【人脸识别经典损失函数arface loss原理和代码解读】

人脸识别经典损失函数arface loss原理和代码解读

Kane_new的博客 1511

ArcFace: Additive Angular Margin Loss for Deep Face Recognition - 人脸识别

Paper name ArcFace: Additive Angular Margin Loss for Deep Face Recognition Paper Reading Note URL: https://arxiv.org/pdf/1801.07698.pdf TL;DR 该篇文章出自CVPR2019,在SphereFace与CosFace的基础上提出Additive Angular M...

kebijuelun的博客 2219

ArcFace: Additive Angular Margin Loss for Deep Face Recognition

One of the main challenges in feature learning using Deep Convolutional Neural Networks (DCNNs) for large- scale face recognition is the design of appropriate loss func- tions that enhance discriminative power. Centre loss pe- nalises the distance between the deep features and their cor- responding class centres in the Euclidean space to achieve intra-class compactness. SphereFace assumes that the lin- ear transformation matrix in the last fully connected layer can be used as a representation of the class centres in an angular space and penalises the angles between the deep features and their corresponding weights in a multiplicative way.

【人脸识别】ArcFace: Additive Angular Margin Loss for Deep Face Recognition

利用深度卷积神经网络(DCNNs)进行大规模人脸识别的特征学习的主要挑战之一是设计适当的损失函数来增强识别能力。Centre loss 惩罚 深度特征与其对应的类中心在欧氏空间的距离,以实现类内紧致。SphereFace 假设最后一个全连接层中的线性变换矩阵可以用作角空间中的类中心的表示,并以乘法的方式惩罚深度特征与其相应权值之间的角度。 最近,一个流行的研究方向是,将 margins 纳入成熟的损失函数,以最大限度地提高类别可分离性。本文提出了一种基于Additive Angular ......

博观约取,厚积薄发 1910

保姆级教程:用Docker一键部署vLLM大模型推理服务(附常见报错解决方案)

本文提供了一份详细的Docker化vLLM大模型推理服务部署指南,涵盖从环境准备到性能调优的全流程。通过容器化技术解决大语言模型部署中的显存利用率、吞吐量等核心问题,并附常见报错解决方案,帮助开发者快速构建高效、可扩展的AI推理服务。

weixin_29248313的博客 494

对称加密和非对称加密、公钥和私钥、单向认证和双向认证、数字签名、数字证书、根证书

文章目录1. 什么是公钥和私钥?2. 加密算法2.1 对称加密2.2 非对称加密2.2.1 非对称加密的重要性质2.2.2 非对称加密算法应用2.2.2.1 应用1 加密通信2.2.2.1.1 单向认证和双向认证2.2.2.1 应用2 数字签名3. 数字签名3.1 数字签名用法演示3.2 数字签名存在问题4. 数字证书(Digital Certificate)4.1 创建数字证书4.1.1 举例,CA如何给我们签发一个有效证书: 1. 什么是公钥和私钥? 摘自《什么是公钥和私钥?》 公钥(Public Ke

m0_45406092的博客 1万+

人脸识别--ArcFace/InsightFace:additive angular margin loss for deep face recognition

1. softmax其中x_i表示第i个样本的深度特征,属于第y_i类。特征的维数d设置为512维。w_j表示最后全连接层的权值W的第j列,b是偏置项。batchsize和类别数分别为m和n。2. weights normalisation...

qq_33783896的博客 4226

车载机器人终极解决方案:从功能叠加到生态融合的颠覆性变革

本文提出一种融合智能汽车与家居技术的车载机器人架构。其创新点包括:1)基于多模态传感器的拟人化硬件设计,实现声源定位误差<5°、体温检测精度±0.3℃;2)跨模态情感计算引擎,综合面部表情、心率等数据构建三维情绪模型;3)协议自适应中间件,支持小米、华为等多品牌智能家居设备即插即用;4)环境自适应舵机控制,-30℃环境下扭矩保持率达92.5%。测试数据显示,该方案使交互步骤减少60%,用户满意度提升58%,日均使用时长增加2.3倍,为"人-车-家"生态融合提供了可行技术路径。

qq_42671193的博客 1129

人脸识别损失函数之ArcfaceLoss

在人脸识别过程中,我们一般使用RCNN、YOLO、MTCNN等网络模型进行人脸侦测,而在特征提取和识别阶段,我们需要设计使用特殊的损失函数,来解决识别过程中区分人脸相似度很高,分类界限不明显等问题。这里讲一下Arcface Loss。

Toocy7的博客 9786

【TI毫米波雷达】IWR6843AOPEVM-G与DCA1000EVM实战:从硬件连接到数据流解析

本文详细解析了TI毫米波雷达开发套件IWR6843AOPEVM-G与DCA1000EVM的硬件连接、模式配置及数据流处理全流程。针对官方手册中的常见配置错误,提供了避坑指南和实测验证的正确设置方法,包括开关配置、网络参数等关键步骤。通过mmWave Studio软件配置雷达参数,并深入解析数据采集与处理流程,帮助开发者高效实现毫米波雷达应用开发。

weixin_30653023的博客 368

LSF调度实战:如何用bsub命令实现多队列资源抢占与公平调度

本文深入探讨了LSF作业调度系统的高级实战技巧,重点解析如何通过配置`lsb.queues`文件与灵活运用`bsub -R`命令,构建一套兼顾效率与公平的多队列资源抢占与调度体系。文章详细介绍了队列优先级设计、公平共享机制、资源感知调度以及抢占策略的实施,帮助集群管理员解决高优先级任务等待、资源分配不均等常见问题,实现计算资源的精细化管理和高效利用。

vvv99的博客 218

ArcFace: AdditiveAngularMarginLossforDeepFaceRecognition

论文地址:https://arxiv.org/abs/1801.07698 github:https://github.com/deepinsight/insightface 摘要   使用深度卷积神经网络(DCNNs)进行大规模人脸识别的特征学习面临的主要挑战之一是其设计适当的损失函数以增强识别能力。Centre loss 惩罚是指欧氏空间中深度特征与其对应的类中心之间的距离,以实现类内紧致。SphereFace假设最后一个全连接层中的线性变换矩阵可以用来表示角空间中的类中心,并对深度特征与其对应权重之间

chenaxin的博客 591

ai获客系统功能代码

AI 获客系统是一个复杂的体系,以下为你提供一个简化的 Python 示例,聚焦于客户行为分析与销售线索筛选功能,模拟实现从多渠道收集数据后的初步处理流程。假设已有从官网、线上商城等渠道收集到的客户数据,以字典列表形式存储,每个字典包含客户基本信息及购买行为数据。通过分析客户购买频率与金额,筛选出高价值销售线索。python上述代码仅为基础示例,实际 AI 获客系统还涉及更复杂的数据采集、清洗、存储,以及运用机器学习算法进行深度客户洞察等功能。

weixin_ggwwsscc的博客 894

TripletMarginLoss原理和源码实现

TripletMarginLoss最早是在 FaceNet 提出的,它是用于衡量不同人脸特征之间的距离,进而实现人脸识别和聚类 现在被广泛应用于自然语言处理中,比如推荐场景和搜索场景下的向量召回模型。TripletMarginLoss的公司如下:L(a,p,n)=max{d(a,p)−d(a,n)+marge,0}L(a,p,n)=max\{d(a,p)-d(a,n)+marge,0\}L(a,p,n)=max{d(a,p)−d(a,n)+marge,0},其中d默认表示欧氏距离。 该Loss针对不同样本

qq_40176087的博客 3371

【学习系列】SAP RAP 20:Unmanaged场景开发示例-调用BAPI、BAPI包装类、BO接口创建标准采购订单

本文介绍了在SAP RAP(Restful ABAP Programming)框架下,通过三种方式实现采购订单创建的方案。首先分析了RAP框架对传统BAPI调用的限制,特别是禁止显式COMMIT语句的要求。随后详细阐述了三种实现方式:1)直接调用传统BAPI(仅支持OP环境);2)使用BAPI包装类(仅支持OP环境);3)调用标准业务对象接口(支持所有环境)。 文章重点说明了在unmanaged场景下的技术实现细节,包括字段控制、缓冲区管理、测试运行与实际调用的分离处理等。针对每种方式都提供了完整的实施步骤

DeveloperMrMeng的博客 600

【CT/电镜 重建教程 1.1】层析成像的精确实空间迭代重建算法(RESIRE)

在此,我们报告了RESIRE算法的发展用于准确的断层重建。与实空间迭代算法相比,RESIRE使用傅里叶切片定理或Radon变换作为正向投影,使用线性变换作为反向投影,两者都具有高精度。与EST和GENFIRE相比,RESIRE是一种实空间迭代算法,可以在并行计算中实现快速运行时间。

2401_87064292的博客 1062

insightFaceV1论文详解

insightFace 本文主要引用于:人脸识别:《Arcface》论文详解 且只做学习记录使用,若侵权,留言删除 论文地址:ArcFace: Additive Angular Margin Loss for Deep Face Recognition 内容理解来自于:人脸识别的LOSS 该篇论文详细的介绍了数据,网络,损失函数的三个改进。 1、首先利用VGG2数据集和MS-Celeb-1M数据集(有对数据集进行清洗),作为训练数据集。LFW、CFP、AgeDB数据集作为验证数据集,MegaFace数据集作

weixin_42063746的博客 1494

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[论文]ArcFace Additive Angular Margin Loss for Deep Face Recognition

论文题目:《ArcFace Additive Angular Margin Loss for Deep Face Recognition 》论文地址:https://arxiv.org/pdf/1801.07698.pdf1. 前言这篇文章提出一种新的用于人脸识别的损失函数,基于该损失函数训练得到人脸识别算法ArcFace(开源代码中为该算法取名为,二者意思一样,接下来都用ArcFace代替)。

具身机器人和通用AI 1662

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

insightface论文小结

使用DCNNs嵌入来表示人脸是人脸识别的首选方法。DCNNs将人脸图像映射到具有较小类内距离和较大类间距离的特征空间中。 训练用于人脸识别的DCNNs有两个主要的研究方向。训练一个多类别分类器,它可以在训练集中分离不同的身份,例如使用一个softmax分类器,还有直接学习嵌入特征,例如triplet loss。基于大规模训练数据集和复杂DCNN结构,基于softmax loss的方法和triplet loss的方法都可以获得良好的人脸识别性能。然而两者都有一定的缺点。 对于softmax loss: (1)

Json111的博客 474

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

论文阅读笔记:ArcFace: Additive Angular Margin Loss for Deep Face Recognition

论文阅读笔记:ArcFace: Additive Angular Margin Loss for Deep Face Recognition

HollowKnightz的博客 1716

【百度论文复现赛】ArcFace: Additive Angular Margin Loss for Deep Face Recognition

文章目录摘要IntroductionProposed ApproachArcFaceSphereFace与CosFace的比较与其它损失函数比较 ArcFace: Additive Angular Margin Loss for Deep Face Recognition 摘要 使用Deep Convolutional Neural Networks进行大规模人脸识别的特征学习的主要挑战之一是设计适当的损失函数来增强鉴别能力。Centre loss通过惩罚深层特征和它们对应类中心之间的欧氏距离,以实现类内紧

DeepHao'Blog 3095

ArcFace

论文:ArcFace: Additive Angular Margin Loss for Deep Face Recognition 代码:https://github.com/deepinsight/insightface 0 摘要 本文提出了新的监督值:cos⁡(θ+m)\cos(\theta + m)cos(θ+m),在进行权重和特征归一化的基础上最大化角度空间的决策边界。 还强调了使用深度...

cdknight_happy的专栏 2320

ArcFace(insightface)论文翻译——中英文对照+标注总结

ArcFace: Additive Angular Margin Loss for Deep Face Recognition 文章目录ArcFace: Additive Angular Margin Loss for Deep Face RecognitionAbstract1. Introduction Abstract One of the main challenges in featur...

小鸡啄米 1万+
上一篇: 详细解释CNN卷积神经网络各层的参数和链接个数的计算
下一篇: AMSoftmax
LittleStudent12
博客等级 码龄8年 32粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值