《SeetaFace开源人脸识别引擎介绍》读书笔记

SeetaFace Detection

漏斗型级联结构

结合经典级联结构和多层神经网络的人脸检测方法,采用的是漏斗型级联结构(Funnel-Structured Cascade,FuSt)专门针对多姿态人脸检测设计,引入由粗到细的设计理念,兼顾了速度与精度的平衡。如下图所示,FuSt级联结构在顶部由多个针对不同姿态的快速LAB级联分类器构成,紧接着是若干个基于SURF特征的多层感知机(MLP),最后由一个统一的MLP级联结构(同样基于SURF特征)来处理所有姿态的候选窗口,整体上呈现出上宽下窄的漏斗形状。从上往下,各个层次上的分类器及其所采用的特征逐步变得复杂,从而可以保留人脸窗口并排除越来越难与人脸区分的非人脸候选窗口。
级联结构和多层神经网络

训练样本

使用了月20万人脸图像训练,可实现准确正面人脸的准确检测(旋转角度约45度以内,但对于姿态偏转较大的人脸也具备一定的检测能力)。

耗时

可在单个i7 CPU上实时处理VGA分辨率的图像。对于640x480大小的VGA图像,检测速度的对比情况如下表所示。其中,SeetaFace的速度在单个3.40GHz的i7-3770 CPU上测得,Cascade CNN在CPU上的速度在2.0GHz的CPU上测得。而各方法在GPU上的速度在NVIDA Titan Black GPU上测得。
检测速度比对

效果

FDDB上,在输出100个误检时(FPPI=0.035)召回率达到了84.4%,输出1000个误检时召回率达到88.0% 。

SeetaFace Alignment

由粗到细的自编码器网络

采用一种由粗到精的自编码器网络(Coarse-to-Fine Auto-encoder Networks,CFAN)求解从人脸表观到人脸形状的复杂非线性映射过程。如图下图所示,CFAN级联了多级栈式自编码器网络,其中的每一级都刻画从人脸到人脸形状的部分非线性映射。输入一个人脸区域(由人脸检测模块得到),第一级自编码器网络直接从该人脸的低分辨率版本中快速估计大致的人脸形状S0。然后,提高输入人脸图像的分辨率,并抽取当前人脸形状S0(相应提升分辨率)各特征点位置的局部特征,输入到下一级自编码器网络来进一步优化人脸对齐结果。以此类推,通过级联多个栈式自编码器网络,在越来越高清分辨率的人脸图像上逐步优化人脸对齐结果。
CFAN

训练样本

训练集包括23000余幅人脸图像(标注了5个点)。

耗时

为了加速的目的,在基本不损失精度的情况下,开源实现中将CFAN级联的数目减少到了2级,从而可在单颗Intel i7-3770(3.4 GHz CPU)上达到每个人脸5ms的处理速度(不包括人脸检测时间)。

效果

通过级联多个深度模型(栈式自编码网络)来回归5个关键特征点(两眼中心,鼻尖和两个嘴角)的位置,在AFLW数据库上达到state-of-the-art的精度,其中平均定位误差根据两眼中心距离做了归一化,定位速度在单个i7 CPU上超过200fps。

SeetaFace Alignment在AFLW数据集上的定位误差及对比情况,其中LE:左眼,RE:右眼,N:鼻尖,LM:左嘴角,RM:右嘴角
定位误差比较

SeetaFace Identification

深度卷积神经网络VIPLFaceNet

一个包含7个卷积层与2个全连接层的DCNN。修改在AlexNet。如下表所示,与AlexNet相比,VIPLFace将5x5的卷积核拆分为两层3x3的卷积核,从而增加了网络的深度,而并没有增加计算量;VIPLFace还减少了每个卷积层的kernal数目以及FC2层的节点数。同时,通过引入Fast Normalization Layer(FNL),加速了VIPLFaceNet的收敛速度,并在一定程度上提升了模型的泛华能力。测试表明,在相同训练集情况下,VIPLFaceNet在LFW测试集上识别错误率比AlexNet降低了40%,而训练和测试时间分别为AlexNet的20%和60%。
网络结构对比

训练样本

使用了140万人脸图像训练出来的,这些训练图像来自于约1.6万人,其中既有东方人也有西方人。人脸特征直接采用VIPLFaceNet FC2层的2048个节点的输出,特征比对可简单采用Cosine计算相似度,然后进行阈值比较(验证应用)或排序(识别应用)即可。

扫描二维码关注公众号,回复: 5407077 查看本文章

耗时

速度方面,在单颗Intel i7-3770 CPU上,开源代码提取一张人脸之特征的时间约为120ms(不含人脸检测和特征点定位时间)。

效果

在LFW standard Image-Restricted测试协议下,使用SeetaFace Detector与SeetaFace Alignment检测并对齐人脸,采用SeetaFace Identification进行特征提取和比对,可以达到97.1%的识别正确率(请注意:这是系统全自动运行的结果,对少量不能检到人脸的图像,截取中间区域输入人脸对齐模块即可)。

参考链接

SeetaFace开源人脸识别引擎
SeetaFace开源人脸识别引擎介绍

猜你喜欢

转载自blog.csdn.net/studyeboy/article/details/54133549