• 0
  • 2
分享
  • 人脸面部识别的流程和测试点
  • 恬恬圈 2020-02-13 13:22:25 字数 1911 阅读 3689 收藏 2

人脸识别现在越来越流行了,广泛应用与各行各业。那对于软件的这项高大上的功能该如何进行测试呢?接下来我们讲究一起看看这个神秘的过程。

首先,在测试之前需要先了解人脸识别的整个流程。

QQ截图20200213131556.png

首先是人脸采集。

安装拍照摄像设备之后,需要在动态的场景与复杂的背景中判断是否存在人脸,并分离出这种面像。然后采集到人脸的照片。

QQ截图20200213131628.png

因此采集过程是非常重要的,一需要能够采集到内容,二采集的内容能够分离出来是人脸。

而特征提取的原理是,将获取的人脸照片进行色彩矫正、光线调整,五官定位和脸部分割,将人脸的鼻子、眼睛、嘴巴等视为一个个特征点,计算每个特征点所在的位置、距离、角度。

正常场景下,在合适的光源下,采集人脸的正面,包含正常完整的人脸轮廓,毫无遮挡的五官,清晰的被拍照设备拍到,这样才能够准确的捕捉到特征,并判断出来。

但对于测试同学来讲,还要考虑异常场景的表现,即任何可能造成拍不到,拍不清晰,判断不出是人脸,或者不完整的表现。详细场景比如:

1) 人脸没有正对摄像头,角度有倾斜。

2) 拍照环境过暗或者过黑。

3) 有佩戴黑框眼镜或墨镜拍照。

4) 头发有明显遮住眼睛或脸部轮廓。

5) 摄像头内包含多张人脸。

另外判断拍摄的样品是否包含人脸时,原理上一般会通过样品学习、或者是参考模版来,比如先设计一个标准人脸的模版,包含标准的特征、有一定的结构分布、相对规律的肤色分布。

那么针对这个原理,在测试时需要考虑不同肤色,或者是面部特征过于复杂的案例,比如黑人、比如脸上有皱纹的老人。

再看人脸比对。

实际应用场景中,人脸比对的本质是照片的比对。比对两张脸中,其中一张脸一般来自于当前场景拍摄的照片,另一张照片一般来自于公安部或者数据库中的照片。

公安部或数据库的照片是用来作为比对标准的,也是固定且一般不可随意篡改的。但采集照片的环节容易出现各种各样的漏洞,容易被一些不法分子利用虚假照片、他人照片、网络照片等进行攻击。

因此,从测试角度来看,需要覆盖到这些非法采集照片的行为,比如:

1) 翻拍后的照片。

2) 长相相似度很高的非本人的照片

3) 软件合成的虚拟人脸

4) 基于证件照PS的照片

等等。

目前市面上主流的几种抗攻击的照片采集方式主要有三种:活体检测、连续检测、3D检测。

1) 活体检测:判断用户是否为正常操作,通过指定用户做随机动作,一般有张嘴、摇头、点头、凝视、眨眼等等,防止照片攻击。判断用户是否真实在操作,指定用户上下移动手机,防止视频攻击和非正常动作的攻击。

2) 3D检测:验证采集到的是否为立体人像,能够防止平面照片、不同弯曲程度的照片等。

3) 连续检测:通过连续的检测,验证人脸运动轨迹是否正常,防止防止跳过活体检测直接替换采集的照片,也能够防止中途切换人。

其中活体检测是现在应用最广的一种抗攻击人脸数据采集方式。

因为不管是直接对照片检测,还是对活体进行检测,最终的目的都是采集人脸不同角度的照片。因此如果活体检测没有与连续性检测和3D 检测结合使用,也会存在一些漏洞。

这些漏洞即是测试的重点:

1) 拍摄人脸正面、侧面、张嘴、闭眼等照片,用不同角度的静态照片绕过本人现场检测。

2) 录制各种动作视频,按照一定的标准拼接起来,绕过本人现场检测。

计算机只会告诉我们比对的两张脸的相似程度,是80%或者是20%,但不会告诉我们这两张脸是否为同一个人。

因此人脸比对有一个阈值的概念。设置相似度大于x%的时候,视为人脸比对通过,小于x%的时候,视为人脸比对不通过。设定阈值的过程就是模型评估。

阈值设定过低,则人脸比对通过率高,误报率可能也会升高。

阈值设定过高,则人脸比对通过率低,误报率可能也会降低也可能会增高。

因此在人脸识别的测试中,除了要关注通过率,还要关注误报率。这两项也可以统称为是查准率。

举个例子:

有8个样本,分别拿十张照片与数据库证件照进行人脸比对,其中3个确实是人证统一,另外四个人证不同。比对的结果相似度如下:

QQ截图20200213131648.png

假设阈值设定60%,则人脸比对通过率=4/8=50%,误报率=1/8=12.5%。

假设阈值设定70%,则人脸比对通过率=2/8=25%,误报率=1/8=12.5%。

假设阈值设定50%,则人脸比对通过率=5/8=62.5%,误报率=2/8=25%。

目前人脸识别在金融、教育、景区、出入境、机场等领域已经大量应用,方便的同时也带来了一些问题,怎么做好人脸识别的测试,还是一个需要思考和深挖的课题。


版权声明:本文为51Testing经授权转载,转载文章所包含的文字来源于作者:来自月亮的爱心。如因内容或版权等问题,请联系51Testing进行删除。原文链接:https://www.jianshu.com/p/8373c458a5cc

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   性能测试的目的是验证软件系统是否能够达到用户提出的性能指标,发现软件系统中存在的性能瓶颈,优化软件,起到优化系统的目的。性能瓶颈定位和调优是个复杂的过程,通常可以从应用参数设置、硬件资源、代码或 SQL 语句、架构或需求等方面综合考量。  本文以某应用系统性能测试过程中遇到的交易报错入手,详细讲述WAS数据源连接池参数配置对系统性能的影响。  一、应用系统基本情况介绍  某应用系统性能测试环境数据库服务器使用Oracle RAC,由两台PC Server物理机组成;应用服务器使用11台PC Server虚拟机,程序运行在WAS上。测试环境WAS与Oracle各...
            11 11 1029
            分享
          •   OpenAI 今天宣布与"常识媒体"(Common Sense Media)建立合作伙伴关系。"常识媒体"是一家非营利性组织,负责审查和评定各种媒体和技术是否适合儿童使用。希望借此通过与致力于减少科技和媒体对儿童、学龄前儿童和青少年伤害的组织合作,赢得家长和政策制定者的信任。  OpenAI 首席执行官 Sam Altman 表示,作为合作关系的一部分,OpenAI 将与 Common Sense Media 合作,根据 Common Sense 的评级和评估标准,在 OpenAI 的 GPT 市场 GPT Store 上策划"家庭友好型&...
            0 0 436
            分享
          •   JMeter提供了不同种类的逻辑控制器,包括循环(Loop),简单(Simple),事务型(Transaction),模块(Module),随机(Random)等。对于刚接触JMeter不久的用户,甚至使用JMeter已有一段时间的朋友们来说,各类不同逻辑控制器自身的先后顺序,应用效果及其所控范围内取样器的执行顺序等都会造成你一定程度上的困惑不清。本次分享我们就JMeter中常见的逻辑控制器给大家来个大扫盲,驱散控制器的层层迷雾。  【逻辑控制器】  JMeter中的逻辑控制器可以让我们自定义线程中的处理请求顺序,可以控制“何时”将用户请求发送到Web服务器。例如,我们可以使用随机控制器将...
            7 8 2583
            分享
          • 油猴脚本管理器tampermonkey是安装在谷歌浏览器上的一个插件,它可以运行一些用户自定义的脚本。这样在访问不同页面时,如果有可用的脚本插件就会自动提示,并且产生作用。如下:同时他本身也提供了很多用户贡献的脚本以供下载(比较稳定的网站是greasyfork),当然git上面也有很多大神上传了自己写的脚本,观看这些脚本,我们可以学习别人写代码的逻辑,最最便利的是可以直接下载脚本使用,节省了许多浏览器上需要额外做的步骤。简单截图几个下载量比较高的,比较受欢迎的脚本:常见的脚本,比如:免登录操作网页,复制文本,下载提速,自动填充文本框等。介绍了这么多,那这个小插件对于我们测试有哪些帮助呢?其实这...
            1 1 9644
            分享
          • 此文章为在拥有C语言基础的情况下,对小甲鱼的python课程进行学习的笔记,对涉及到的新概念与实用的语法知识进行了总结与归纳。1、Python中的BIFBIF:Built-in Functions,python中的内置函数,即为了方便程序员快速编写脚本程序而直接调用的一种函数。大意如同我们上数学课时定义函数f(x),g(x),h(x)等,而后解题过程中可以直接将数值代入指定的函数中,在这里python的BIF就相当于我们事先定义好的函数。我们较为常见的BIF例如:print() 打印到屏幕,即将括号里的内容显示到屏幕上;input() 接受用户输入并返回,用temp这个变量...
            0 0 814
            分享
      • 51testing软件测试圈微信