黄法秀,张世杰,吴志红,陈 虎,孙家炜
(1.四川大学视觉合成图形图像技术国防重点学科实验室,四川 成都 610065;2.四川川大智胜软件股份有限公司,四川 成都 610045)
随着计算机技术的发展和应用,人脸识别技术以其具有的非强制性、非接触性、并发性等优势得到了越来越广泛的应用[1],如门禁管理系统、考勤管理系统、刷脸支付、火车站人证验证系统等。在网络结构设计和大规模的人脸数据集的基础上基于深度学习的人脸识别取得了很大提高[2]。大部分基于深度学习[3]的计算机视觉研究需要大量的数据,对深度学习强大的表特征能力,大规模的数据可以有效防止过拟合,因此更多的数据对大多数计算机视觉研究都有帮助。
但多数情况是没有办法得到足够的数据或者采集数据成本过高,所以数据扩充是提高计算机视觉系统表现经常使用的一种技巧。针对训练样本不足的问题,可以通过数据增广来提升人脸识别的性能,目前有很多研究致力于这个方向。例如,文献[1]对训练样本添加了随机噪声来增广训练数据;张坤等人[2]用多姿态生成人脸图像和戴眼镜人脸图像来增广数据;文献[4]利用人脸的镜像图进行数据增广;文献[5]将原始训练样本做“镜像”和“对称脸”变换并将产生的虚拟样本与原始训练样本进行融合来增加训练样本数,并在几个公开数据集上都降低了错误识别率。
在不改变图像类别的情况下,通过数据增广提升数据集中的相关数据,增加数据量,丰富图像的训练集,能防止网络学习到不相关的特征,更好地学到与数据有关的特征,显著提升整体的性能,提高模型的泛化能力。自然图像数据增广方式有多种,从几何的角度看,常用的方式有:水平翻转,一定程度的位移、旋转、剪切等;从像素的变换角度来看,常用的方式有:改变图像色差、颜色抖动、扭曲图像特征、增加图像噪声(高斯噪声、椒盐噪声)。还可以将多种操作进行组合。
在具有均匀光照、正面姿态、中性表情和标准图像分辨率的受控图像采集条件(如身份证人脸图像)下,人脸识别系统可以达到极高的识别精度[6],在实际应用中,往往是对不太理想环境下无约束条件下采集的图像进行识别,使得识别性能降低。在训练样本中可能并不完全包含不太理想环境下的测试样本,或者包含的测试样本中某种样本的数据较少,使模型无法充分学习到这类样本的特征。因此,增加这类样本有助于提升模型性能。文中从像素变换的角度,通过图像滤波、亮度调节、调整图像大小和腐蚀操作将图像数据进行增广模拟测试数据集中某类样本进行研究。
平滑滤波[7]是使低频增强的空间域滤波技术,它的其中一类目的是模糊,空间域滤波采用简单评价方法进行,就是邻近像元点的平均亮度值。平滑效果取决于邻域的大小,邻域越大平滑的效果越好,但邻域过大,平滑会使边缘信息损失更大,从而使输出的图像变得模糊,但这恰好能模拟测试数据集中模糊图像。
1.1.1 均值滤波
均值滤波本身对去噪存在固有缺陷,不能很好地保护图像细节,在图像去噪声的同时也会破坏图像的细节部分,从而使图像变得模糊。均值滤波是最简单的一种滤波操作,输出图像的每个像素是核窗口内输入图像对应像素的平均值,是方框滤波的一种。其基本理论是,一个像素点的灰度值由其邻域内像素值的平均值代替[8]。即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,模板系数都为1,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即
(1)
其中,m为该模板中包含当前像素在内的像素总个数。
图1展示了假设模板为3×3时,计算当前像素值的直观表示,中间为中心像素,周围8个像素,计算这9个像素的平均值,替代中心像素值。
图1 均值滤波计算方式
当图像细节与滤波器模板近似相同时,图像中的一些细节受到的影响比较大,文中选取了与数据集中人脸图像眼睛高度值大小一致的模板为3*3(简称B3)随机选择每个对象的5张图像进行数据增广,不足5张的全部增广。还选取了大致可以覆盖数据集中人脸图像眼睛、鼻子和嘴巴大小的5*5模板(简称B5),这会使图像整体更加模糊,在人脸图像与背景图像灰度接近时,即目标灰度与相邻像素的灰度接近时,还会产生模糊的混合效应。
通过梯度的统计特征,利用表示变化速度快慢像素点的平方差和表示变化大小的像素差的绝对值来衡量模糊程度,求两者的平均值表示梯度值,梯度值越高,像素点变化很突然,画面的边缘信息越丰富,图像越清晰;梯度值越低,像素点的过渡非常平滑,没有急剧的变化,图像越模糊。选择梯度值大于20的较为清晰的图像进行均值滤波操作来增广数据,这样操作会保留原始数据集中的模糊样本,而且会增加更多的模糊样本,这类增广数据记为ifbv20B5方式。
1.1.2 高斯低通滤波
高斯滤波[7]是一种线性平滑滤波,是用高斯函数作为滤波函数的滤波操作,对整幅图像进行加权平均的过程,其基本理论是用一个模板扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均值去替代模板中心像素点的值来模糊一张图像。高斯滤波器是一类根据高斯函数的形状来选择权值的线性平滑滤波器,高斯滤波器的模板系数,则随着距离模板中心的增大而减小。对图像处理来说,常用二维零均值离散高斯函数做平滑滤波器。二维高斯函数公式如下:
(2)
高斯滤波器相比于均值滤波器对图像的模糊程度较小。为了增加图像的多样性,选择较小σ,生成的模板的中心系数较大,周围的系数较小,对图像的平滑效果较小的高斯模糊。
从全局和局部的角度来看,光照失真类型包括全局光照失真和局部光照失真[9]。全局光照失真指图像整体过亮或者过暗,局部失真指在拍摄过程中光源不在被拍摄者的正前方。在文中原始数据集中光照局部失真样本相对整体数据集来说数量太少,并且实际场景中由于光源位置或者白天透过窗户的阳光所影响这类失真强度更大,原始数据中这类图像局部失真强度不够,模型无法充分学习到此类特征,这类图像会降低识别精度,因此通过加强这类失真来增广数据。
采用图像变换中的点操作(point operators)进行图像亮度和对比度的调整[7],根据输入像素值计算相应的输出像素值。点操作公式如下:
g(x)=a*f(x)+b
(3)
对比度的调节是输入像素值乘上一个常数a,被称为增益,亮度值加上一个常数b,被称为偏置,用来控制图像的亮度。
原始数据中亮度过亮和过暗的图像相对较少,通过测试集正样本中高于阈值的样本的平均亮度确定一个大致适宜识别的亮度范围(90-150),根据平均亮度选择了参数a和b对图像整体亮度进行调亮(C120B30)和调暗(C130B-100)来增广数据,原始图像亮度不同,进行调整之后也会生成不同亮度的过亮或过暗的图像。为了补充相对较少的光照局部失真样本,对图像的二分之一部分(MyylC130B20)和五分之二部分(yylC130B20)进行亮度调亮和对比度增强来模拟偏向一侧的光源影响的失真。在亮度和对比度调整的临界区域进行均值滤波,来防止亮度突变对识别的影响。
通过摄像设备采集的图像,发现存在画质如油画般的图像,有正常画质被腐蚀质感,通过测试发现这类图像会明显降低识别精度,腐蚀会去除图像的某些部分,于是文中通过对图像进行形态学操作—腐蚀增广试图提高识别精度。
腐蚀[7]是根据指定形状和尺寸的结构元素—核与图像或图像的一部分进行卷积,求局部最小值的操作,计算核覆盖区域像素点的最小值,并把这个最小值赋给参考点指定的像素,使图像中的高亮区域降低,效果图会比原图有更小的高亮区域。腐蚀的数学表达式如下:
(4)
增加核的尺寸会消除更大的部件,减小核的尺寸会把小于核的图像细节从图像中去除。为了模拟这类样本,核的大小不能过大,否则会将很多细节部分去除,因此选择核的大小为3*3(E3方式),这样会保留人脸特征,同时又能模拟出这类样本的腐蚀感。
模拟测试样本中既模糊又亮度过暗的图像,将高斯低通滤波方式和调暗方式进行组合(G6C130B-100)。为了模拟测试样本中局部光照失真这类图像中较模糊的图像,将yylC130B20增广方式和B5增广方式组合成一种新的增广方式yylC130B20B5。
文中使用了文献[10]提出的一种轻量级的CNN框架。该卷积神经网络人脸模型会为了更好地拟合大量训练数据体积不断增大,并且能学习在具有噪声标签的大规模人脸数据上进行紧凑嵌入,该网络模型用提出的Max-Feature-Map(MFM)操作将NIN(network in network)和一个小的卷积核大小集成到网络中。构建的9层轻量级的卷积神经网络Light CNN-9,包含5个卷积层,4个NIN层、Max-Feature-Map层和4个maxpooling层。该网络模型在公开数据集LFW上有较好的准确率。
大规模数据能提高基于深度学习人脸识别准确率,因此尽量将可获取的图像作为原始训练数据,大致分为两类,第一类是公开的人脸数据集,第二类是人无意识状态下的人脸图像。
原始数据第一类的几个公开数据集[11-17]:FERET人脸数据库是由PERET项目所创建的一种大型面部图像数据库,每幅图像中只有一个人脸,是独立算法开发人员收集的。图像是在不同表情、光照、姿态和年龄的半控制环境中采集的,数据库包括1 564组图像,共14 126张图像,是人脸识别领域应用最广泛的人脸数据库之一;CMU Multi-PIE人脸数据库由美国卡耐基梅隆大学建立,采集了337位志愿者在不同姿态、光照和表情下的75 000多张面部图像,其中姿态和光照变化是严格控制的,是人脸识别领域的一个重要测试集合;CAS-PEAL中科院公布的大规模中国人脸数据集,共包含1 040个对象的99 450张图像,所有图像包括姿态变化、表情变化、饰物变化、光照变化、距离变化、时间跨度变化等7种变化模式。以东方人为主的人脸图像数据集,有助于模型学习到东方人的共性特征;ORL数据库由英国剑桥大学AT&T实验室创建,采集了40个对象共400张图像,每个对象的10张图像是在不同时间、不同光照强度、面部表情和面部装饰情况下采集的;WebFace数据集是爬取的图像集,最终得到了10 575人的494 414人脸图像的数据集。Extended Yale B人脸数据库是耶鲁大学建立的人脸识别数据库,包含28个人,在9种不同姿势和64种不同的拍摄参数下,总共16 128张人脸图像;FRGC包含466个人的8 014张人脸图像。这些未经控制的图像显示了模糊、表情、光照和时间方面的变化。这些图像共计约70万张。
需要训练的数据除了要求一定数量的图像,还要求图像具有多样性。从某场合采集的无意识状态下的人脸图像,这类图像具有多样性,能体现人脸识别技术相对于其他生物识别技术非强制性这一优势,这类图像对实际识别或认证更有意义。这类图像姿态、表情多样,包含某个公开场合人脸图像6 622张、某公司534个对象的一张正面中性表情和多张无意识图像19 159张、车辆经过道闸杆时采集的司机人脸图像304 824张和某火车站认证现场采集的现场照片及其对应的身份证照片1 341 521张。
上述原始数据集约167万张记作S,超过85%的图像清晰度较高,整体亮度适宜,用这些图像去测试人脸识别算法,大部分的人脸识别算法识别精度都较高,但实际人脸识别算法应用环境可能不理想,会采集到模糊和对比度低的图像,从而影响识别精度。为了更大可能地囊括实际应用环境下的图像,并增加测试样本中数据量较少的样本,对原始数据以第1部分介绍的方式进行了数据增广。
文中着重研究识别算法对人无意识状态下采集的人脸图像的识别性能,选择的四个测试集(Test1-Test4)是从不同地方拍摄的视频上截取的人脸图像组成。Test1是利用几个厂家的图像采集设备采集的约8万张图像,包括一部分模糊图像和白天透过窗户的阳光所影响光照局部失真图像和某一个厂家设备采集的具有腐蚀感的图像;Test2(约2万张)和Test4(约23 000张)两个测试集包括了每个对象身份证件图像,Test2是包含人各种姿态和表情的图像;Test4是采集的每个对象正面无遮挡表情中性图像;Test3共3 000张,是在无窗室内多方位灯光亮度比较均匀的环境下采集的,包含亮度整体过亮过暗和模糊的图像。
原始数据集共约167万张图像,以上述增广方式对每个对象的前5张图像进行数据增广,不足5张的全部增广,9种增广方式每种方式共增广7万多张,剩下1种方式是进行模糊度的判断,共增广5万多张图像。图2展示了测试样本示例、原始训练样本以及相应的增广图像。
图2 测试样本示例、原始训练样本及相应的增广图像
文中采用了深度学习框架pytorch进行模型的训练和测试,运行环境是Ubuntu16.04,硬件平台使用了GPU加速训练,GPU计算卡型号是NVIDIA Tesla P100*4。用原始数据训练网络Light CNN-9超过50个epoch得到模型CNN-9-S。
用模板分别为3*3和5*5均值滤波方式增广的数据加入原始数据S训练的模型为CNN-9-B3和CNN-9-B5,加入模糊判断后进行均值滤波数据训练的模型为CNN-9-ifbv20B5。表1展示了使用原始数据和加入均值滤波方式增广数据训练的模型在上述四个测试集上,在FAR(false accept rate)分别等于1%,0.1%下的准确率。
表1表明,B3增广方式提示识别性能没有太大提升,B5对Test2和Test3有所提升,这是源于这两个测试集中存在一部分模糊对象,增广的数据增加了测试集中的模糊样本,并且一大部分测试数据模糊程度与模板为5*5的均值滤波模糊程度相当,所以B5相对于B3,提升效果更好。
ifbv20B5这类增广方式对四个测试集的识别性能都有提高,这样操作会保留原始数据集中的模糊样本,而且会增加更多的模糊样本。这样做与上述随机选择每个对象的5张图像扩展的区别在于,随机选择的5张图像可能包括测试样本中的模糊图像,若再对它进行均值滤波操作,图像更加模糊,这类样本与测试样本并不一致,对模型性能并不会起到促进作用,但ifbv20B5增广方式会避免这种现象,仅仅对较清晰的图像进行操作,因此对各个数据集都有很好的效果。
表1 滤波增广方式结果
原始数据加上对图像整体调亮(C120B30)和调暗(C130B-100)增广的数据训练的模型为CNN-9-C120B30和CNN-9-C130B-100,还有对MyylC130B20和yylC130B20这两类增广方式数据加原始数据训练的模型CNN-9-MyylC130B20和CNN-9-yylC130B20。表2展示了这四个模型分别在四个测试集上,在FAR分别等于1%,0.1%下的准确率。
表2表明,这四种增广方式主要是对Test3有所提高,这是由于Test3样本包括过亮和过暗的测试样本。Test1包括局部光照失真,所以yylC130B20这种增广方式对Test1的识别精度有所提高。
表2 亮度调节增广方式结果
训练原始数据加E3方式扩展的数据得到模型为CNN-9-E3。表3展示了CNN-9-E3模型在每个测试集上在FAR分别等于1%,0.1%下的准确率。
通过表3可以看出,包含这类样本的Test1性能有所提升,对其他几个数据集来说,增广的数据可能属于不相关的数据,所以性能都没有得到提升。
用G6C130B-100和yylC130B20B5方式增广的数据加入原始数据S训练的模型为CNN-9-G6C130B-100和CNN-9-yylC130B20B5。表4展示了这两个模型在每个测试集上在FAR分别等于1%,0.1%下的准确率。
通过表4可以看出,G6C130B-100增广方式与B5增广方式相对应,由于两个测试集中存在一部分模糊对象,增广操作增加了测试集中的模糊样本,因此在这两个测试集上识别性能得到了提升,同时因为Test3样本包括亮度过暗的测试样本,所以在Test3上的识别性能相比其他增广方式有较大提升。yylC130B20B5增广方式的结果与yylC130B20方式主要是在Test1上有略微提升,虽然Test2和Test3中有模糊的图像,但局部光照失真图像少甚至没有,这种增广方式可能增加了无关数据,因此性能并不理想。
表3 腐蚀方式结果
表4 混合方式结果
通过3种传统图像处理方法共10种增广方式进行数据增广,将增广数据与原始数据组成新的训练数据集,通过公开人脸识别算法验证每种增广方式在不同的测试集上的识别效果。实验结果表明,从不同方面和同方面的不同程度进行数据增广,程度不同,提升效果也不同,这种方式能在一定程度上增加训练样本的多样性。在此过程中需要注意的是,增广数据要与测试集数据一致,确保不增加不相关的数据。在数据增广方面,仍需进一步探究来提高算法性能。