原⽂转载链接:
写的很详细易懂。
⽬录冷却塔布水器>标定板
刘惠祥前⾔
近年来随着硬件计算能⼒的⼤爆发,在⾼性能计算的⽀持下深度学习有了⾰命性的进步,在互联⽹⼤数据的保证下深度学习有了源源不断的动⼒,优秀的⽹络结构被不断提出,深度学习技术已被推向 时代浪潮。在深度学习的分⽀领域,计算机视觉领域当中,⼈脸识别技术的发展依然是⼯业界、学术界重点关注的对象。在ResNet在2015年被提出后,越来越多优秀的⽹络基于ResNet进⾏优化更新也已取得卓越的成就,⽽在⽹络结构进⼀步升级优化有困难的情况下,研究者逐步将⽬光转向损失函数这⼀指挥棒上。 ⽂章[ArcFace:Additive Angular Margin Loss for Deep Face Recognition]的作者提出的Angular Margin Loss在继SoftmaxLoss、Center Loss、A-Softmax Loss、Cosine Margin Loss之后有更加卓越的表现,同时作者也对这⼀“卓越表现”予以了论证。
论⽂地址:
Code:
⼈脸识别流程
⼈脸识别分为四个过程:⼈脸检测、⼈脸对齐、特征提取、特征匹配。其中,特征提取作为⼈脸识别最关键的步骤,提取到的特征更偏向于该⼈脸“独有”的特征,对于特征匹配起到举⾜轻重的作⽤,⽽我们的⽹络和模型承担着提取特征的重任,优秀的⽹络和训练策略使得模型更加健壮。
但在Resnet⽹络表现⼒⼗分优秀的情况下,要提⾼⼈脸识别模型的性能,除了优化⽹络结构,修改损失函数是另⼀种选择,优化损失函数可以使模型从现有数据中学习到更多有价值的信息。
⽽在我们以往接触的分类问题有很⼤⼀部分使⽤了Softmax loss来作为⽹络的损失层,实验表明Softmax loss考虑到样本是否能正确分类,⽽在扩⼤异类样本间的类间距离和缩⼩同类样本间的类内距离的问题上有很⼤的优化空间,因⽽作者在Arcface⽂章中讨论了Softmax 到Arcface的变化过程,同时作者还指出了数据清洗的重要性,改善了Resnet⽹络结构使其“更适合”学习⼈脸的特征。
冬瓜去皮机
如下是ArcFace的输⼊到输出流程:
上图的处理流程是这样⼦的,这⾥假设我们的样本类别数为nn,我们的输⼊数据x的维度为dd,模型权重ww的维度为d⋅nd⋅n,我们⾸先对我们的样本xx和权重ww进⾏归⼀化,归⼀化之后样本经过⽹络最后得到1⋅n1⋅n维的全连接输出,输出后计算得到Target Logit再乘以归⼀化参数ss再经过Softmax计算得到Prob。
数据
在训练过程中,神经⽹络都是基于我们的训练数据学习特征的,既然是从训练数据学习特征,最终的⽅向⾃然是逼近最终数据的最真实的特征,也就是说,我们数据最原始是什么样⼦,我们的⽹络的极限就是什么样⼦,它不能超越数据本⾝,⽽研究者在做的事情,也就是使得⽹络最后能更加逼近“极限”。所以数据在深度学习中扮演着极其重要的⾓⾊,所以⽂章中强调了⼲净的数据(数据清洗)的重要性。
这⾥列举⼀些⽂章中提到的开源数据集:
VGG2
VGG2Face⼈脸数据集包含有训练集8631个⼈的脸(总量有3141890张⼈脸),测试集包含有500个⼈的脸(总量有169396张⼈脸),属于⾼质量数据集。
MS-Celeb-1M
MS1M数据集包含有⼤约10万个⼈的脸(⼤约有1千万张⼈脸),但是数据集中包含有很多的“噪声”,所以作者对MS1M做了数据清洗,最终作者清洗得到的⼲净的数据包含有8.5万个⼈的脸(包含有380万张⼈脸)。
MegaFace
MegaFace数据集包含有69万个⼈的脸(包含⼤约有100万张⼈脸),所有数据由华盛顿⼤学从Flickr上组织收集。MegaFace是第⼀个在百万规模级别的⾯部识别算法的测试基准,这个项⽬旨在研究当数据库规模提升数个量级时,现有的脸部识别系统能否维持可靠的准确率。MegaFace是⽬前最为权威、最热门的评价⼈脸识别性能,特别是海量⼈脸识别检索性能的基准参照之⼀。
LFW
led节能灯制作LFW(Labeled Faces in the Wild)数据集包含了从⽹络收集的13000张⼈脸图像,每张图像都以被拍摄的⼈名命名。其中,有1680个⼈有两个或两个以上不同的照⽚。LFW主要侧重于对⽐两张⼈脸照⽚是否具有相同⾝份不同。
CPF
CFP(Celebrities in Frontal Profile )数据集是美国名⼈的⼈脸数据集,其中包含有500个⼈物对象,
有他们的10张正⾯照以及4张形象照,因此在作为⼈物⽐对验证的时候,作者选⽤了最有挑战的正⾯照与形象照作为验证集(CFP,Frontal-Profile,CFP-FP )。
AgeDB
AgeDB(Age Database )数据集包含有440个⼈的脸(包含有12240张⼈脸),但其中包含有不同⼈的不同年龄阶段的照⽚,最⼩从3岁到最⼤101岁时期的照⽚,每个对象的平均年龄范围为49年。作者采⽤和LFW⼀样的对⽐验证⽅式。
最后,作者在⽹络训练过程中采⽤了VGG2以及MS1M作为训练集,选⽤了LFW、CPF以及AgeDB作为验证集,最终使⽤MegaFace作为评测标准。
损失层
关于Loss对于⽹络的影响,最直观的就是通过计算Loss反传梯度来实现对模型参数的更新,不同的Loss可以使模型更加侧重于学习到数据某⼀⽅⾯的特性,并在之后能够更好地提取到这⼀“独有”的特征,因此Loss对于⽹络优化有导向性的作⽤。
⽽在近年来⼈脸识别领域,优化Loss对于最终结果的提⾼有很⼤的帮助,从Center Loss的提出,到
SphereFace,CosineFace,InsightFace等都有在损失函数这⼀环节提出新的解决⽅案,它们的出现对于⼈脸识别的发展做出了不可磨灭的贡献。
⽆论是SphereFace、CosineFace还是ArcFace的损失函数,都是基于传统的softmax loss进⾏修改得到的,所以想要理解ArcFace,需要对之前的损失函数有⼀定理解。
具体信息:查看