一种基于改进JDA 算法的人脸检测方法∗

2019-11-29 05:14沐燕舟
计算机与数字工程 2019年11期
关键词:关键帧肤色线性

程 实 沐燕舟 赵 赟

(1.南通大学信息科学技术学院 南通 226000)(2.天津大学智能与计算学部 天津 300000)

1 引言

随着互联网快速影响,信息安全需求与个人身份认证需求不断提升,在此背景下,我国生物识别概念逐渐火热,高识别率的人脸识别技术迎来了发展良机。研究和处理人脸在视频监控中的情况是一项非常有前景的方向,特别在安防和人机交互等领域拥有着广阔的应用[1]。

目前,人脸识别产品大多将人脸检测与人脸识别绑定在一起放在服务器端[2],增加了服务器的负担,一台服务器只能带两路摄像机。带来的问题是产品应用到实时场景时,部署成本很高。另一方面,摄像机只起到采集视频的角色,在嵌入式硬件性能与嵌入式操作系统的迅速提升环境下,摄像机已经具备了单独处理实时视频信息的能力。所以,如何将有效地人脸检测算法从人脸识别模块中分离出来,用嵌入式方式实现人脸检测,以提高人脸识别实时应用性能是人脸识别产品走向市场的重要途径之一。基于这样的需求,本文对人脸检测公认度比较高的JDA算法进行了改进,目标是实现与人脸识别无缝对接。

人脸检测的快速发展和市场对生物特征鉴定技术的认可,实时人脸检测技术已经逐渐成为了市场所紧缺的需求。人脸检测方法研究发展简表如表1所示。

表1 人脸检测研究方法演化[3]

2 JDA算法描述

JDA(Joint Cascade Face Detection and Alignment)算法[4]是目前比较先进的人脸检测算法,是MSRA 组在2014 年的最新技术。它结合了检测和对齐,一方面人脸对齐对进一步的人脸识别意义重大,另一方面标记附近的特征可促进人脸检测分类器分辨出更准确的结果。JDA 算法主要采用3000FPS方法[5]。这个方法使用了局部特征和回归树,将特征空间映射到线性空间,再使用线性回归学习。用回归树学习一个局部二值特征(LBF,注意不是LBP),用线性回归来训练回归模型。该算法的整体过程如图2。

图1 JDA算法描述

从图1 可以看出的是第二列的特征是通过学习得到的,第四列的回归关系是线性的,也是通过学习得到的。在训练阶段,我们学习特征映射函数ϕt去产生局部二值特征。给定特征和目标形状增量,通过线性回归学习线性投影Wt。在测试阶段,形状增量直接被预测并且运用于更新当前被估计的形状。

LBF 的全称是Local Binary Feature 即局部二值特征。文献[5]中把LBF定义为直接简单大概地统计所有树叶节点是否被该样本落入,如果落入了就记为1 否则记为0,然后把所有的01 串连起来就是LBF了,如图2所示。

用随机森林取标记的局部二值特征,如(图2(b)),在标记点周围,两个像素点为一对,随机抽取4 对为一棵树,每一对比较大小,根节点大于选择左子节点,小于选择右子节点,最后到达的叶子节点为1,其它为0。再组成图上的二进制比如(1000),再依次,抽取n 棵数,串联组成局部二值特征。浅显地说上图2(b)中,样本经过随机森林的三棵树后分别落在了第1,2,3 个叶子节点上,于是三棵树的LBF 就是1000,0100,0010。串联起来就是100001000010,这就是一个特征点的局部二值特征φtj,把人脸所有特征点的LBF 都连接起来形成总的LBF就是全局特征φt了。

图2 LBF特征提取

确定LBF之后,串联人脸所有特征点(文献[6]选取27 个人脸特征点)的二值特征得到全局特征并通过最小化下面的目标函数学习全局线性投影Wt:

其中I是输入图像,St-1是来自于上一级的形状,φt是特征映射函数,Wt是线性回归矩阵。

图3是使用JDA算法进行人脸检测的结果。

图3 JDA算法人脸检测结果

3 JDA改进算法JDA2

3.1 JDA2总体框架

JDA 检测的人脸很快、很准,但存在两个问题,一是所检测的人脸不一定能都适用人脸识别(尺寸过小,角度过偏);二是输出的是存在人脸的帧,即使把人脸检测与人脸识别分开,人脸识别性能不降反增,原因是人脸检测进行了两次(因为传输的是帧,所以到服务器端还要再进行一次人脸检测)。为此,本文设计的JDA2 对JDA 进行四个方面的改进:关键帧提取、人脸定位与跟踪、人脸过滤和有效人脸发送人脸,总体框架见图4。

图4 JDA2总体框架

3.2 关键帧提取

镜头中图像帧存在不相关性,需要去除冗余,可以代表镜头内主要信息的图像帧就是关键帧。提取的关键帧标准根据视频的不同而不同,关键帧的数量由应用场景决定。

关键帧提取一种较为简单的方法是计算帧间差值,就是将相邻两帧在各自位置上的像素灰度差做比较。当两帧图像间的灰度差值大于某个事先设定好的阈值就认为产生了镜头的边界。如果设定的全局阈值太低则错误检测率将会很高,相反的情况下漏检测率会升高。因此,设定局部自适应的阈值将会是一种是最好的办法,本文在自适应阈值的设定方式上利用滑动窗法。

算法描述:

假设对第k 帧进行检测,这其中会有N+1 个间断的值需要考虑,从而组合成为一个滑动窗,中间第k帧是不是作为边界,主要条件如下:

1)在N+1个值中,需要最大值是Z(k,k+1);

2)Z(k,k+1)>k+Zsm。其中,k 为系数,Zsm为窗口中的次大值。

即当窗口中的最大值为Z(k,k+1)时,同时还是滑动窗内第二大的k 倍时,在(k,k+1)处是会有一个边界,可以将这个k参数认为是边界的模式。

3.3 人脸定位

人脸定位主流方法有两种:

1)基于复测模型的人脸定位

人脸的一个重要特征就是肤色[7],不同人的肤色分布具备共性,肤色分割方法就是利用了这种肤色聚类性,稳定性很好,不受各种因素的影响。单一的肤色检测就能够定位图像中所有的人脸,并且可以达到很高的检测率,但是误检率也很高,因为这种方法会检测到类似人脸肤色的区域,把它误判断为人脸;除此之外,肤色检测容易受到光照等条件的影响,肤色的划分结果非常明显地决定了算法的精度。

2)基于AdaBoost 的人脸定位[8],算法的核心就是减少正确分类样本的权值,增加了错误分类样本的权值,从而得到一个理想的分类器。所以,将AdaBoost算法用于人脸定位检测率和速度都较高,而且不需要多少复杂的分类器,但是训练时间过长而且误检率较高。

肤色模型和AdaBoost 算法各有优缺点,JDA2结合了这两种算法。

首先是粗定位,主要是运用肤色模型对其进行定位,从中找出可能的人脸区域,然后再运用Adaboost 算法在所标记出的一切有可能的人脸区域中进行人脸的精确定位。算法描述如图5所示。

图5 人脸定位算法流程

3.4 人脸跟踪

人脸跟踪是在已知初始帧人脸区域的情况下,结合人脸运动信息更新和确定后续帧中人脸的位置和大小。人脸跟踪的流程图如图6所示。

图6 人脸跟踪的流程图

4 实验分析

我们从一些人脸库和大量网络图片中共搜集了人脸样本约20000 张。为了使样本反映真实的概率分布,我们尽量使这个集合包含各种类型的人脸,如各个种族、年龄段以及性别。测试集在CMU+MIT 的正面人脸测试集合(130 幅图片、507个人脸)。

1)正脸检测实验

我们所说的正面人脸是指旋转角度在摇摆[-15°,+15°]、倾斜[-10°,+10°]和俯仰[-10°,+10°]以内的人脸。我们收集的人脸库中共有正面人脸样本约15000 张。我们在CMU+MIT 的正面人脸测试集合(130 幅图片、507 个人脸)上比较JDA2算法与JDA 算法的性能。实验机器为一台PIV2,4GHz PC,检测结果ROC 曲线如图7 所示。横轴为特异度,纵轴为敏感度。从图8 看出,JDA2 明显改进了JDA的性能。

图7 正面人脸检测ROC曲线

2)服务器压力测试

我们的方案是对比“JDA+人脸识别”,“JDA2+人脸识别”,“人脸识别(集成人脸检测)”三个方案的识别速度(表3)。

表3 识别速度和正确率对比

虚警率是指在人脸检测成功而拒识为人脸的百分比。由于JDA2 使用了过滤和定位策略,对尺寸过小,角度过大的人脸拒检,所以,虚警率明显下降。间接带来的好处是,降低了网络负载(只传有效人脸),解决目前服务器只能带2 路的瓶颈有望得到解决。

5 结语

对于目前普遍使用的传统人脸识别系统,由于网络传输带宽的限制,不可能将众多的实时人脸图像传输到处理中心进行识别处理。但是,如今的安防对先进技术的运用要求越来越高。随着嵌入式电路设计的成熟,基于现场特定要求的智能图像识别技术应运而生。在这样背景下,本文对人脸检测公认度比较高的JDA进行了改进,在拍摄现场图像的同时,对能识别的人脸准确地发送人脸数据。由于检测到的适用人脸识别的人脸的数据量大大小于图像数据量,为一台服务器实时处理多路摄像机数据带来可能。

猜你喜欢
关键帧肤色线性
基于图像熵和局部帧差分的关键帧提取方法
二阶整线性递归数列的性质及应用
肤色(外一首)
人的肤色为什么不同
为什么人有不同的肤色?
ORB-SLAM系统优化框架分析概述
非齐次线性微分方程的常数变易法
基于误差预测模型的半自动2D转3D关键帧提取算法
线性回归方程知识点剖析
线性耳饰