刷脸支付,刷脸进站,刷脸打卡,一“脸”走天下的时代悄然来临。人脸识别的技术让人们的生活告别繁琐,如何验证人脸识别技术的功能正确性、安全性、识别率等关键问题,在测试领域也逐渐成为至关重要的课题。本文将结合实际工作中的探索与总结,阐述如何针对人脸识别技术开展测试。
一、什么是人脸识别?
人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术,用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术。人脸识别技术分为人脸检测,人脸跟踪,人脸比对三个部分。通过人脸检测可以在复杂的背景和场景下判断是否存在活体面像,并将其分离出来并实时对被检测到的面貌进行动态目标跟踪,将采样到的面像与库存的面像依次进行比对,寻找出最佳匹配对象。这样我们就能真正的实现一“脸”走天下。
二、人脸识别的应用场景
落实到具体业务场景中,人脸识别技术有多种实现形式,例如企业、住宅的安全和管理,电子护照及身份证通过生物特征证件进行识别和管理,公安、司法、刑侦利用人脸识别系统追踪逃犯,银行的自动提款机,计算机的登录等等。总的来说,人脸识别多作为用户的身份验证,可分为人脸1:1识别、人脸1:n识别等。以人脸1:1识别为例,人脸1:1识别主要是判断两张照片上的人是否是同一人。人脸1:1识别模型返回一个判断分数,若分数越高,说明是同一个人的可能性越大,实际使用时,设定一个阈值M,高于阈值M的判断为同一人,通过1:1识别。同理,人脸1:n识别即1个人脸在照片库中进行n次人脸1:1识别,最终匹配人脸库中得分最高的照片。
三、人脸识别技术测试方法
1.测试通过标准
以某掌银的刷脸转账功能为例,我们会对接口调用连通性、报文格式、参数非法校验、返回码正误等等进行测试,而由于人脸识别运用了生物识别技术和人工智能的算法与模型,海量数据训练出的模型会因为光线的明暗、背景的干扰、以及发型、眼镜等装饰的变化,而影响到转账的成功度,因此还需测试这些模型的识别结果准确率。(虽然模型训练完美,但目前却无法保证100%的正确率,因此一般来说就是各业务场景使用人员自行决定准确率通过准则,业界的通用标准是人脸识别准确率达到99%以上)所以当人脸识别模型的接口可以成功调用,并且模型的识别结果准确率达到通过准则时,视为测试通过。
2.测试流程
下图展示了测试模型识别效果的主要测试流程。首先需要准备一定量的测试数据,分为两个部分,一部分是测试素材集,如成对的人脸照片;另一部分是根据所测模型手工为测试素材打上的标签集,即人脸照片的对应关系。数据准备好之后,即可开始测试,为每一个测试素材构造一条请求所测模型服务的报文,发送至“人脸识别服务”,将“人脸识别服务”返回报文的结果和对应标签进行对比,遍历完所有的测试数据后,根据对比结果集计算准确率、召回率、误识率等模型效果评估指标。不同的模型和业务场景的关注点不同,使用的模型效果评估指标也有所差异,人脸1:1识别模型采用误识率和通过率。为了提高测试效率,通常通过编写测试脚本实现批量自动测试。
在测试过程中测试数据至关重要,一方面数据量需合适,数据量太少容易存在偶然性,一个测试样本的识别结果对模型评估指标的值会有较大的影响。另一方面测试数据应尽量贴合实际应用场景,包含正负样例。为了贴近应用场景,人脸1:1识别的测试数据可以准备N张生活照集合(A)和N张对应的公安网小图集合(B),在选择生活照时考虑同一个人差别较大图片、不同年龄的图片以及戴帽子、戴眼镜等存在干扰的图片。人为标注了生活照和公安网小图的一一对应关系(即实际为同一人)。
任意从A集合和B集合各抽取一张图片,构造一条人脸1:1识别的请求报文,总共可以构造出N*N条请求报文,其中有N条请求中两张图片为同一人,称为正样例,其余N*(N-1)条请求中图片为不同人,称为负样例。使用构造的N*N条报文请求“人脸识别服务”,将返回结果与人工标注就行对比。“误识”是指人脸1:1识别模型对两张不同人的照片请求返回了较高的分数,超过了阈值M,即将负样例判断为同一人;“误识率”是指“误识”的负样例占所有负样例的百分比。“通过”是指人脸1:1识别模型对同一人的两张图片的请求返回了较高的分数,即将正样例判断为同一人;“通过率”是指“通过”的正样例占所有正样例的百分比。我们希望人脸1:1识别模型的“误识率”为0,“通过率”为100%,而“误识率”和“通过率”与阈值M密不可分,若阈值M设定的低,极端情况设置为0,则不同人的照片可以轻易的通过模型识别判断为同一人;阈值M设定的越高,“误识”和“通过”的可能性越小,极端情况M设置为100,则虽然可以有效阻挡不同人照片通过识别,但也出现同一人的照片无法通过识别的情况,影响用户体验。因此在设置阈值M时存在二者的权衡。由于在测试时,阈值M还未确定,同时考虑到人脸1:1识别主要用于身份校验,对“误识”的容忍度更低,可以先确定“误识率”,再计算对应阈值M,最后计算通过率,并以通过率作为模型效果评价指标的方式。测试评价指标的计算通常通过自动化方式实现,编写测试脚本实现从构造请求报文、模拟发送、接收解析、结果记录、评价指标计算的全流程。
以上是人脸识别技术具体的测试方法,而实际针对不同的应用场景及模型特点,还需要结合实际考虑测试数据,模型评估指标的选择。
作者:潘琦 雷陈芳
来源:51Testing软件测试网原创