监控视频下的人脸图像质量分析技术①
2022-09-20郭佳昕
张 雪, 郭佳昕
(北京工业大学 软件学院, 北京100124)
1 引言
1.1 研究背景
人脸识别系统目前被广泛应用在监控场景中, 从监控视频中快速并准确获取人脸身份信息对于公安破案等具有重要意义[1-3]. 人脸图像质量分析作为人脸识别过程中的关键一环, 不同场景选择不同的图像质量分析方法对识别的准确率有很大的影响, 特别是在监控场景下, 由于拍摄的人脸图像含有大量被其他物体遮挡、模糊、头部姿态不正以及无法判断人脸等的低质量图像, 若这些图像进入识别系统会导致系统准确率下降, 严重影响识别效果[4,5]. 因此在监控场景中预先采用合理的图像质量分析方法对提高人脸识别系统准确率有重要应用价值.
1.2 研究现状
人脸图像质量分析作为图像质量分析的一部分,在保留传统的图像质量分析方法基础上, 加入人脸特有的因素. 2009年, 国际标准化组织制定了关于人脸图像质量的 ISO/IEC 标准, 对多种参数做出了规定[6]. 基于该标准国内外学者对于人脸图像质量分析做了很多研究. 整体研究方法分为两种: 基于深度学习的人脸图像质量分析和基于多因素融合的人脸图像质量分析.前者从大量数据中学习获取人脸质量关注的特征并进行质量判断. 在提取特征向量后对数据进行学习, 质量好的样本离中心距离较近, 不好的样本离中心距离尽量远, 最后根据样本到中心的距离, 得到质量分数. 该方法2015年开始出现, 随后国外相继出现了使用ResNet-50[7]、AlexNet[8]、GoogLeNet[9]等训练人脸图像质量模型. 近两年出现的有SER-FIQ利用随机嵌入鲁棒性来估计人脸图像质量[10]. 而这种方法普遍存在一个问题就是没有针对具体的场景进行训练, 虽然最终得到的质量模型在识别系统上有较好的鲁棒性, 但若是使用在含有以大量低质量图像为主导的视频监控场景中, 模型效果并没有较为突出的表现, 并且这样训练得到的模型无法适应特定场景, 一旦使用场景改变, 就需要重新训练, 耗费大量的时间. 后者通过分析单个的质量因素,例如光照、清晰度、遮挡等, 对其分配权重进行加权融合, 最终得到一个质量分数, 该分数就是人脸图像的质量分数. Nasrollahi等[11]分别对人脸角度、图像亮度、锐度和分辨率逐一计算, 通过赋予这4个因素一定比例的权重, 得到图像的质量分数, 进而对人脸图像质量进行评价. Fourney等[12]为人脸提取了6个特征:人脸姿势、亮度、锐度、人体皮肤的存在、分辨率,最终将这6个参数加权得到质量分数. 然而不同场景下指标的选取、权重的分配都会对质量分析结果产生影响.
鉴于上述研究缺陷和问题本文选取人脸角度(pitch、roll、yaw) 和图像清晰度作为人脸图像质量分析的两个关键指标. 针对这两个指标分别采用合适的方法训练得到每个指标下的人脸图像质量分数, 并设计基于聚类的人脸图像质量分析算法, 对这两个指标分配权重进行加权融合, 获得人脸图像质量分数的计算公式. 最后将所研究的人脸图像质量分析技术应用人脸识别系统中, 证明该技术能够有效过滤监控场景中的低质量图像, 提高识别系统的准确率[13].
2 基于聚类的人脸图像质量分析
本文分析过程主要包含3大模块: 人脸角度计算、图像清晰度计算、基于聚类的人脸图像质量分析系统. 最后得到人脸图像质量分数. 算法流程图如图1.
图1 算法流程
首先分别训练人脸角度模型和图像清晰度模型,得到对应的分数值, 之后设计基于聚类的人脸图像质量分析算法, 并设计聚类系统, 在前端调节两者的权重后可视化聚类结果, 计算聚类纯度, 最终确定人脸图像质量的计算公式.
2.1 人脸角度
(1) 概述: 人脸角度指的是根据一张二维的人脸图像, 计算出这个人在实际三维空间中的面部朝向. 即输入一张人脸图片, 输出表示方位的3个旋转角度(pitch, yaw, roll), 其中, pitch表示俯仰角(关于x轴的旋转角度), yaw表示偏航角(关于y轴的旋转角度),roll表示翻滚角(关于z轴的旋转角). 将一张二维图像的特征映射到三维模型上效果如图2所示[14,15].
图2 人脸角度的三维效果图
(2)本文使用方法: 由于人脸角度估计与头部姿态估计的输入输出值相同, 本文中使用头部姿态估计的经典方法, 利用先分类后回归的思想, 使用CNN预测pitch、yaw、roll三个值. 如图3所示. 使用ResNet作为主干网络, 分别全连接3个fc层, 每个层单独预测.首先对3个欧拉角分类, 将角度范围从[-99, +99]以3为间隔划分, 划分成66个区间. 分类得到的结果做回归, 即Softmax将其映射为概率值, 根据Softmax定义,此时所有的概率值和为1, 求出期望后, 网络的输出可以被映射到[0, 99]这个区间范围内, 乘以3减去99,这个区间范围就被映射到了[-99, +99]这个区间范围[16,17]. 然后计算回归的Loss, 使用MSE Loss与BCE Loss按照一定权重加权求和, 对最终的Loss梯度反向,就完成了整个过程, 每个欧拉角的Loss定义为:
图3 人脸角度算法流程图
其中, H 表示交叉熵函数, α表示权重系数, M SE 为平方误差损失函数.
(3)模型训练: 使用ALFW2000数据集, 包含2 000多张不同的头部姿势图像, 训练集和测试集按照7:3的比例划分. 主要参数有:
1)学习率0.000 01;
2)一次训练所取的样本数即batch size为16;
3) epochs为20;
4)权重系数α 设置为1时, 损失最小.
2.2 图像清晰度
(1)概述: 图像清晰度和模糊度是相对的, 一张人脸图像清晰度越高, 则模糊度越低. 反之如此. 因此使用图像模糊度算法进行研究. 作为质量评价中的重要因素之一, 其方法主要分为两种情况: 一种是有参考算法, 即根据已有的图像, 来判断当前图像是否模糊; 另一种是无参考的算法, 判断图像是否模糊; 常见的图像清晰度算法主要有: Brenner 梯度函数, 它是最简单的梯度评价函数, 它的原理是计算相邻两个像素灰度差的平方; Tenengrad 梯度函数采用Sobel算子分别提取水平和垂直方向的梯度; Laplacian 梯度函数与Tenengrad梯度函数基本一致, 用Laplacian算子替代Sobel算子即可; SMD (灰度方差)函数当完全聚焦时, 图像最清晰, 图像中的高频分量也最多, 故可将灰度变化作为聚焦评价的依据, 常用的很多, 但都是在最简单的基础上进行优化和变换.
(2)本文使用方法: 由于摄像头下采集到的图片参差不齐, 将人脸图像的清晰度作为人脸识别其中一项关键的指标很有必要. 本文使用OpenCV结合拉普拉斯方差算法计算人脸的模糊度进而得到图像清晰度分数. 拉普拉斯算子是各向同性微分算子, 主要用来测量图像的二阶导数, 突出图片中强度快速变化的区域, 一个二维图像函数的拉普拉斯变换是各向同性的二阶导数[18]. 定义为:
其中, ∇2表示拉普拉斯算子, f 表示空间标量函数, x和y表示图像像素的两个方向. 对图片进行灰度处理后,将图片中的某一通道用拉普拉斯掩模做卷积运算后计算方差[19]. 基于图像模糊度进行训练后, 得到每个图像对应的分数值, 值越小图像越清晰, 0表示非常清晰,1表示非常模糊.
2.3 基于聚类的人脸图像质量分析系统
本文设计了基于聚类的人脸图像质量分析算法,该算法在传统的人脸识别流程的基础上加入图像质量分析和聚类, 如图4.
图4 基于聚类的人脸图像质量分析算法
为了方便可视化聚类结果, 开发了基于聚类的人脸图像质量分析系统, 通过调节图像清晰度 b lur和人脸角度的权重, 对人脸图像聚类, 聚类的纯度越高则当前阈值下的人脸识别准确率越高. 纯度的计算公式如下:
其中, mi表示为同一人的组数, m表 示总组数, 本文m 固定为200. 纯度可表示为聚类的准确率, 即人脸识别的准确率.
系统主要涉及两大部分的功能:
1)簇内聚类. 该模块的功能主要支持调节欧式距离, 计算各人脸图像到簇心之间的距离, 使用K-means聚类算法将相似的人聚在一类, 并随机可视化前200组聚类结果的人脸图像. 在每一个组图像下设置了判断该组人脸图像是否是同一人的选择框, 如图5所示. 选择完成后即可计算出对应距离下的聚类纯度.
图5 簇内聚类结果
2)簇间聚类. 在进行完上述的簇内聚类后, 已经筛选出聚类纯度较高的簇内距离, 接着调节簇间的阈值,此处引入人脸图像质量的两个因素, 图像清晰度b lur和人脸角度. 通过调节这两个的权重值, 将筛选后的结果随机分为两组对比, 观察这两组的纯度, 纯度较高的清晰度和角度阈值即为最终分配的权重. 图6是簇间聚类结果.
图6 簇间聚类结果
2.4 人脸图像质量分数
一个较为完整的人脸识别流程要经过以下几个步骤: 人脸检测、人脸对齐、提取特征、人脸识别. 本文在进行人脸检测后, 先根据检测到的人脸关键点进行人脸对齐校准(face alignment)操作, 校准之后的人脸roll就全部变成0, 因此在进行质量分析时, 暂时不考虑roll的分数和权重. 下面重点介绍人脸质量分数的计算流程:
步骤1. 运行完人脸角度模型, 得到人脸的俯仰角、偏转角以及翻滚角, 将角度转化为分数值如下:
其中, a、 b 为 参数. y awscore是人脸图像y aw角转化后对应的分数值, pitchscore是 人脸图像 pitch角转化后对应的分数值, a nglescore是人脸角度的分数值. 一张人脸角度最正的分数是 pitch 、r aw 、r oll全部为0, 此时基于人脸角度的图片分析, 该图像质量是高的.
步骤2. 运行清晰度模型并得到对应的blur分数值.
步骤3. 簇内聚类. 采用本文研究的基于聚类的人脸图像质量分析技术, 对人脸识别结果聚类, 选择合适的聚类距离, 观察聚类效果.
步骤4. 簇间聚类. 调节前两步得到的 a nglescore和blur权重阈值, 并计算聚类纯度.
步骤5. 通过实验分析确定权重分别为0.6和0.4,最终得到图像质量分数q ualityscore. 计算公式如下:
其中, b lurscore是关于图像清晰度的分数值, a nglescore是关于人脸角度的分数值.
由表1可见, 在融入基于聚类的人脸图像质量分析算法后, 同一批数据集在簇内距离为0.45、0.5、0.6时调节 b lur 和a ngle的权重计算得出的聚类纯度均在0.6和0.4时最高, 因此当为b lur 和a ngle分配权重分别为0.6和0.4时, 对识别准确率的影响最大.
表1 不同参数下人脸图像的聚类纯度
3 实验结果和分析
3.1 数据集
为验证该研究技术的有效性, 本文使用某公司2021年2月到2021年5月之间采集到的监控视频, 对视频进行抽帧, 抽帧方法选取常用的帧差法, 即对相邻两帧作差分运算来获得运动目标轮廓. 抽出的图像在进行简单的检测和识别后, 最终包含有6 000 000张人脸图像, 为了进行实验对比, 得到更客观准确的实验结果, 本文将数据分为10个批次, 每个批次含有600 000张图像, 其中训练集470 000张, 测试集130 000张进行验证.
3.2 实验结果
对一批数据设置不同的阈值并对该阈值下的结果聚类可视化, 随机展示200组聚类结果, 计算聚类纯度.通过研究发现, 加入人脸图像质量分析算法后, 图像的纯度相比没有质量过滤的纯度有很大的提高. 如表2.
表2 不同聚类距离下的人脸图像质量分析结果
由表2可见, 在对一批数据测试后分别对比未加入人脸图像质量分析算法和本文研究的基于聚类的人脸图像质量分析算法的纯度结果, 本文研究的技术使聚类纯度平均提高了11.67%, 该方法在一批数据集上表现较好.
在10批数据上分别进行测试后, 采用基于聚类的人脸识别技术明显优于未加入质量分析的情况, 聚类纯度明显提升, 因此本文得到的人脸图像质量计算公式具有一定的适用性. 如图7、图8、图9分别是10批簇内距离在0.45、0.5、0.6时加入和未加入图像质量分析技术的结果.
图7 簇内距离在0.45时质量分析前后对比
图8 簇内距离在0.50时质量分析前后对比
图9 簇内距离在0.60时质量分析前后对比
3.3 分析对比
由于本文研究的人脸图像质量分析技术的目的是提高人脸识别系统的准确率, 此处的人脸识别系统采用某公司的门禁系统. 在未加入人脸图像质量分析前人脸识别Top10准确率79.56%, 采用本文技术, 目前识别准确率已经达到95.98%. 结果见表3.
表3 加入质量分析前后人脸识别准确率比较 (%)
将本批从监控场景下获取到的数据集在基于AlexNet、GoogLeNet、CNN的人脸质量模型上测试后分别计算Top1和Top10, 虽然这些模型在公开数据集上有较好的表现, 但在监控场景中, 采用本文提出的人脸图像质量计算公式应用在识别系统中得到的结果优于其他方法. 如图10.
图10 不同人脸图像质量分析方法在识别系统的表现
4 结论与展望
本文研究了基于监控视频下的人脸图像质量分析技术, 该技术可有效过滤低质量图像进入识别系统, 提高人脸识别准确率. 该研究技术对于监控下的人脸识别有很大意义. 目前人脸图像质量分析的研究已经进入深度学习阶段, 但在特定场景下深度学习的方法未必达到较好的效果, 相信日后会有更好的方法解决此问题.