APP下载

基于MTCNN 与改进Camshift相结合的人脸检测算法

2021-12-14宋博源郭晓敏

桂林电子科技大学学报 2021年3期
关键词:概率分布直方图分量

黄 新, 高 雷, 宋博源, 郭晓敏

(桂林电子科技大学 电子工程与自动化学院,广西 桂林 541004)

目标的检测与跟踪在计算机视觉领域是一个非常活跃的研究方向[1],同时也是动态人脸识别、智能安防监控、智能交通等领域的核心问题。常见的目标跟踪算法主要有:1)基于目标模型建模的算法,如区域匹配、特征点跟踪、光流法等;2)基于搜索的算法,如粒子滤波[2]、kalman滤波[3]、Camshift[4]等算法。目前在已有目标跟踪算法中,均值偏移(Meanshift)算法凭借计算简单、实时性较好[5]等优点被广泛应用于人脸跟踪等领域。Bradski等[4]在Meanshift算法的基础上提出了Camshift算法。从本质上说,这2种算法都是爬坡算法,即在数据的概率密度分布中反复迭代,进而求解出局部极值稳定的算法[5]。

Camshift算法是一种无参估计跟踪算法,该算法利用视频序列中被跟踪物体的颜色特征信息来实现对运动目标的跟踪[6]。传统的Camshift算法在光照的变化及被跟踪目标与背景环境颜色相似的情况下,跟踪效果不明显[7]。针对Camshift算法的这一不足,可将贝叶斯概率框架[8]与传统的Camshift算法相结合,但计算的复杂度会增加,从而导致跟踪的实时性变差。

对于视频序列,原始的多任务级联卷积神经网络(multi-task convolutional neural network,简称MTCNN)人脸检测算法仅在CPU 的运行环境下不能满足视频流中的人脸实时检测[9]。鉴于此,提出一种改进的Camshift 算法。将Camshift 算法与MTCNN人脸检测算法相结合,通过MTCNN 人脸检测算法实现Camshift算法跟踪框位置和大小的初始化,从而实现自动跟踪检测人脸。利用Bhattacharyya系数[10]判定Camshift算法是否出现相近色干扰问题,并采用相应方法进行处理。

1 MTCNN人脸检测算法

1.1 算法原理

人脸检测是在图像或者视频序列中找到人脸并返回人脸框大小和位置坐标信息的过程,本研究采用MTCNN 算法对人脸及人脸关键点进行检测。MTCNN[11]算法是一种基于卷积神经网络的多任务级联人脸检测算法,它主要由P-Net、R-Net和ONet组成,可以检测出人脸框和特征点。

1)P-Net(proposal network)提案网:通过全卷积网络获得人脸候选框和边界框回归向量,并利用边界框回归向量对人脸候选框进行校准,用非极大值抑制(Non-maximum suppression,简称NMS)[12]算法合并重叠的人脸候选框。P-Net主要用来生成一些人脸候选框。

2)R-Net(Refine Network)精炼网:将P-Net得到的候选窗作进一步筛选,剔除人脸候选框中的假阳性样本,同样通过边界框回归向量校准和NMS算法得到更加精确的人脸候选区域。R-Net主要用来去除大量的非人脸框。

3)O-Net(Output Network)输出网:其功能与R-Net类似,对R-Net的输出执行更精确的操作,主要对人脸候选区域进行精确筛选,获得最终的人脸位置,同时得到双眼、鼻子、嘴角两侧5个关键点坐标。O-Net与R-Net类似,在R-Net的基础上增加了landmark位置的回归。

1.2 侧脸检测框修正

MTCNN算法landmark示意图如图2所示。从图2可看出,人脸坐标参数为:人脸框坐标(x1,y1)和(x2,y2),左眼坐标(xe,1,ye,1),右眼坐标(xe,2,ye,2),鼻子坐标(xn,1,yn,1),左嘴角坐标(xm,1,ym,1),右嘴角坐标(xm,2,ym,2)。在MTCNN进行实际的人脸检测的过程中会出现人脸偏转的现象,主要分为平面内偏转和平面外偏转。针对人脸检测过程中出现平面外旋转的现象,对MTCNN 人脸检测框进行修正。xe,1-x1为左眼到人脸检测框左侧的水平距离,ye,1-y1为左眼到人脸检测框上边界的垂直距离,x2-xe,2为右眼到人脸检测框右侧的水平距离,ye,2-y2为右眼到人脸检测框上边界的垂直距离,xe,2-xe,1为双眼间的距离;xm,1-x1为左嘴角到人脸检测框左侧的水平距离,x2-xm,2为右嘴角到人脸检测框右侧的距离,y2-ym,1为人脸框下边界到左嘴角的垂直距离,y2-ym,2为人脸框下边界到右嘴角的垂直距离。

图1 MTCNN人脸检测网络

图2 MTCNN算法landmark示意图

以下分为3种情况进行讨论:平面外向左旋转人脸、正面人脸和平面外向右旋转人脸。当检测到平面外向左旋转的人脸和平面外向右旋转的人脸时,人脸框的宽度W的取值范围为

当xe,1-x1与x2-xe,2相等时,检测到的人脸为正面人脸,人脸框即为MTCNN检测到的大小;当xe,1-x1小于x2-xe,2时,检测到的人脸平面外向左旋转,人脸框坐标为(x1,y1,x1+Wmin,y1+Hmin);当xe,1-x1大于x2-xe,2时,检测到的人脸平面外向右旋转,人脸框坐标为(x2-Wmin,y2-Hmin,x2,y2)。

2 Camshift人脸跟踪算法

Camshift算法流程如图3所示[13],主要包括被跟踪目标反向投影的计算,对反向投影进行Meanshift计算和不断搜索3个过程[14]。

图3 Camshift算法流程图

2.1 反向投影过程

颜色直方图作为一种目标特征,能够对目标的颜色信息进行有效特征提取[15]。假设在彩色视频图像序列中,图像像素的值域范围在RGB空间,把RGB色彩空间的每个子空间R、G、B根据直方图的方式分别分成m个子区间,每个区间称为一个bin,构成相应的特征空间,相应的特征数目为k3。通常在目标跟踪区域中,处于不同位置的像素点对颜色直方图有不同的贡献,距中心区域较远的像素通常被赋予较小的权值,相反则被赋予较大的权值[16]。

其中:Ch为候选模型颜色直方图的归一化因子,使得Σp u=1;y为当前帧中人脸目标的中心位置;h为核窗口的宽度。

2.2 Camshift算法

Camshift算法的核心思想是在所有视频图像帧中的颜色概率分布直方图的基础上运行Meanshift算法[19](如图4所示),并运用概率分布直方图的特征来跟踪识别单帧中的运动目标。

图4 Camshift算法原理图

Camshift算法首先对人脸搜索框的位置和大小进行初始化,再对人脸图像的颜色直方图进行反向投影,并获取其颜色概率分布,然后执行Meanshift算法,得到新的人脸搜索框,并得到对应的质心和大小,最后根据上一帧的结果对人脸搜索框的大小和位置进行调整,在此基础上进行逐次迭代直到收敛,即质心移动的距离小于设定的阈值,完成人脸跟踪。假设I(x,y)为概率分布图像在点(x,y)处的像素值,人脸搜索框的大小为W,则人脸搜索框的质心坐标(xc,yc)可[20]表示为

其中:M00为人脸搜索框中概率密度图的零阶矩;M10、M01分别为图中点(x,y)在x、y处的一阶矩,且

M20、M02和M11分别为图中点(x,y)在x、y处的二阶矩及混合二阶矩,且

3 改进的Camshift跟踪算法

3.1 加权颜色概率分布

传统的Camshift算法仅对HSV 色彩空间中的色调H 单通道进行均匀量化并建立直方图模型,在饱和度和亮度变化较大的场景下,跟踪效果明显降低[6]。针对上述问题,将H 通道的反向投影过程扩展到H、S、V三通道,并对HSV 三通道进行加权束来完成反向投影,同时得到三维直方图,具体流程如图5所示。

图5 三维加权反向投影

将图像从RGB颜色空间转化为HSV 空间,选取目标,分别提取其H、S分量,建立2个目标直方图,通过反向投影分别得到目标关于它们的概率分布图IH、IS,再分别提取其H、V分量,建立2个目标直方图,通过反向投影分别得到目标关于它们的概率分布图IH和IV,采用加权的方式求得总的概率分布图,对Hue、Sat、Val三通道进行加权处理:

其中:α为概率分布图中IH的权重,表示H 分量在描述颜色特征方面所占的比例;(1-α)表示S、V 分量在描述颜色特征方面所占的比例;I1表示H 分量和S分量加权后的概率分布;I2表示H 分量和V 分量加权后的概率分布。将H、S分量及H、V 分量概率分布图进行位与加权,对人脸目标区域颜色特征的描述更加准确和全面,提高了人脸跟踪模型的稳定性和鲁棒性。由于在跟踪过程中,H 分量对于目标颜色特征的描述能力较强,加权系数应取较大的值,取α=0.6。

3.2 人脸约束

人脸约束如图6所示,Ho和Wo分别为MTCNN人脸检测算法检测到的人脸高度和宽度,he、we为原始Camshift人脸跟踪框的高度和宽度,通过人脸框约束控制后,人脸框的高度和宽度分别为he、we,经过修正后的人脸框的高度和宽度分别为hc、wc。

图6 人脸约束

人脸宽高比Ro限制范围通常为0.8~2.5[21],取0.9Ro,人脸约束满足如下条件:

3.3 改进后的算法流程

传统Camshift算法通过手动方法调整窗口的大小和位置的初始化,改进后的Camshift算法流程图如图7所示,通过MTCNN 人脸检测算法得到人脸框的坐标作为Camshift 跟踪算法的初始化,当MTCNN算法未检测到人脸时,跳过k帧再次进行检测,本研究k取2,r n为当前帧中人脸搜索框的宽高比,r0为MTCNN 人脸检测算法检测到的人脸宽高比。传统的Camshift算法以上一帧的搜索框为基础作为下一帧窗口的初始化[19],在此过程中进行人脸的宽高比比对,以此实现人脸约束,当r n>r0或r n<0.9r0时,即在跟踪中出现了相近色干扰,通过人脸约束来解决相近色干扰的问题。

图7 改进后的Camshift跟踪算法流程

4 实验结果与分析

4.1 人脸平面内旋转检测框修正

MTCNN 人脸侧脸检测框修正实验如图8 所示,有平面向右旋转人脸、正面人脸、平面向左旋转人脸3种实际人脸检测遇到的情况。在每种情况下有2幅人脸图像,分别代表MTCNN 人脸检测算法初始检测到的人脸和MTCNN 人脸侧脸检测框修正,Camshift人脸跟踪用修正后的人脸框作为跟踪窗口大小和位置的初始化,矩形框作为Camshift跟踪的初始窗口。

图8 MTCNN人脸侧脸检测框修正

4.2 相近色干扰实验

为了验证改进Camshift算法的效果,设计相关实验进行验证。实验在PC(Intel(R)Core(TM)i5-4690 CPU@3.50 GHz,8 GiB RAM)win10系统下展开,采用Pycharm 2018.2作为实验平台,调用OpenCV-Python(Version3.4.5)库中的相关函数以及MATLAB R2018a进行数据分析。实验选用的视频均为摄像头本地录制,分辨率为640像素×480像素。Camshift 改进前后颜色直方图效果如图9所示。

图9 Camshift算法改进前后颜色直方图效果对比

通常选择用于评价边缘检测的Bhattacharyya系数[20](又称巴氏系数)来衡量目标区域和候选区域的相似性:

ρ[p(y),q]∈(0,1),它随着2个分布之间的相似度的增大而增大,数值越大,则目标区域与候选区域的相似度越高。理论上,目标区域与候选区域之间的巴氏距离为1,但是在实际跟踪的过程中受光线、角度干扰信息的影响,巴氏系数为1的可能性非常小,这两者之间拥有相同的分布几乎是不可能的。如图10 所示,改进后的Camshift算法与原始的Camshift算法相比,人脸目标区域与候选区域之间的巴氏系数更大,相似程度更高,人脸跟踪的效果更好。

图10 Camshift算法改进前后对比

4.3 实时人脸跟踪对比实验

如图11所示,(a)、(b)分别为Camshift算法改进前后相同帧(#424)的跟踪对比图,在相同的视频帧数中,原始的Camshift算法把脖子至下巴的区域误判为需要跟踪的人脸区域,改进后的Camshift算法受到相近色干扰的问题明显减弱,人脸跟踪的鲁棒性和稳定性明显提高。

图11 Camshift算法改进实测对比

5 结束语

针对传统的Camshift算法在进行人脸跟踪时易受脖颈等处皮肤的相近色干扰而导致跟踪框定位不精确、跟踪效果差等问题,通过加权概率直方图匹配方法增强跟踪过程中人脸的辨识度,并结合人脸框约束来解决相近肤色干扰带来的形变。由实验结果可知,与传统的Camshift算法相比,本算法的人脸跟踪更加准确,相近肤色的干扰问题被抑制,跟踪效果更好。原始MTCNN算法的3个级联网络只能进行人脸的位置和关键点的检测,对于连续的视频序列,MTCNN算法实时性较差,不能对每个目标进行实时跟踪,以MTCNN人脸检测算法为基础,通过人脸中的landmark坐标计算实现侧面人脸检测框进行修正,将修正后的人脸框作为改进后的Camshift跟踪算法的初始化。实验结果表明,该算法可实现人脸的实时跟踪检测。

猜你喜欢

概率分布直方图分量
画里有话
一斤生漆的“分量”——“漆农”刘照元的平常生活
一物千斤
用直方图控制画面影调
论《哈姆雷特》中良心的分量
弹性水击情况下随机非线性水轮机的概率分布控制
概率分布问题思路探究
关于概率分布函数定义的辨析
例析频率分布直方图
中考频数分布直方图题型展示