[人脸活体检测] 人脸活体检测简介

人脸活体检测

一、简介

​ 随着人脸识别、人脸解锁等技术在金融、门禁、移动设备等日常生活中的广泛应用,人脸防伪/活体检测(Face Anti-Spoofing)技术在近年来得到了越来越多的关注。设想一下,假设你的Face Verification算法做的再漂亮,而Face Anti-Spoofing做的很烂,如果这个时候恰恰有某位同学拿着马云脸的视频去刷了支付宝,那…

	Fig 1. 马云演示支付宝刷脸支付

人脸验证(Face Verification):意思就是说,给定两张图,算法要判断出这两张图是不是同一个人,这是近年来一个非常热门的研究方向,也产生了一大批模型和 Loss Function。

人脸防伪(Face Anti-Spoofing):意思就是说,你刷脸的时候,算法要判别这张脸是不是真人活体脸,而对于合成的、或者他人照片来攻击算法的,应该予以拒绝。

PA(Presentation Attacks)是常用的攻击方式,主要包含print attack(即打印出人脸照片)、replay attack(播放视频)、mask attack(带人脸假体面具等)。

活体检测的目的就是要识别出这些假的人脸,让不法分子无法得逞。接下来,我们就为大家介绍一下,人脸识别系统面临哪些攻击手段,活体检测又有哪些应对之策。

二、活体检测方式

  • 照片攻击与动作活体

最简单的攻击方式相信大家都能想到,用照片呗。现在大家都喜欢玩社交媒体,经常往朋友圈和微博上传照片,搞到一张别人的照片简直轻而易举。所以,照片自然是活体检测首要的防范对象咯。对付照片的方式,大家也很容易想到。照片总是死的,不能做出眨眼张嘴转头这些动作。那好,在活体检测这一关,我就给你下达几个动作的指令,让你做动作给我看,这就是交互式动作活体检测。

  • 升级版照片攻击

有了动作活体这个东西,用静止照片来攻击就不行了。于是攻击者一拍脑袋,就想出了经过“改进”的攻击方式。他先是把另外一个人的照片打印出来,跟真人一般大小,还挺清晰的,反正花不了几个钱。你不是要让我眨眼张嘴吗?照片本身不会眨眼张嘴,可是我本人会啊。于是他就把照片在眼睛和嘴巴那块抠个洞,然后把照片贴在脸上,他自己的眼睛和嘴巴就露出来了。你让他眨眼,他就眨眼,让他张嘴,他就张嘴。对此,我们只能说,too naive too simple,因为抠眼和抠嘴后的造作痕迹实在太明显了,对我们的抠眼抠嘴检测算法形成不了太大的威胁。最后说下转头,攻击者往往把照片贴在自己脸上,或者在那揉来揉去,想模拟出真实的转头效果。可是,他们不知道,这种伪造的转头动作,人脸上各部位的运动情况实在与真人相去甚远,很容易被我们的转头检测算法识别出来。

  • 视频回放攻击

到这里,攻击者还是不肯作罢,又心生一计:不就是几个动作吗?我把那人的动作录成视频,再拿来播放不就得了。其实啊,到这里我们可以明显看到,攻击难度已经上升一个级别了。为什么呢?你要搞到另外一个人的视频,还得包含很规矩的这几个动作,本身就不那么容易。可是我们不能存有侥幸心理啊。没关系,办法总是有的。你把视频搞来了,总得找个有屏幕的东西播放啊。这样一来,就漏马脚了。你只要仔细看看用屏幕播放视频,然后再经过摄像头成像的画面,再看看真人在摄像头面前成像的画面,就会发现,二者其实很不一样啊。用普通PC屏幕播放的效果就不说了,一堆纹路,我们称之为摩尔纹。用pad或者手机的高清屏播放的效果好一些,可是也有很多不一样,比如反光、倒影,最关键是画面质量总是模糊一些,失真度明显高一些。所以呢,我们根据这些线索搞了对应的算法,把视频攻击也能防得很好。回过头来说说央视315晚会上演示的合成人脸,要靠这种方式攻击人脸识别系统,也只能用屏幕来播放,只是把合成的视频拿出来展示一下,就说容易攻破,实在有违实事求是的精神。

  • 立体面具攻击

照片和视频回放攻击都是把人脸图像投射到一个平面上,还一种攻击方式就是做一个和真人比较相似的立体面具。到这里,攻击难度又上升了一个级别。面具有很多种,最普通的是塑料或者硬纸做成的面具,这种面具虽然成本低廉,但材质相似度极低,用普通纹理特征就可以识别出来。另外,还有用硅胶、乳胶以及3D打印的的立体面具,这类面具的表观和皮肤更加接近,但它们的材料表面反射率和真实人脸还是不同的,因此在成像上仍然有差别,这种差别是可以用最先进的机器学习算法学习到,很难达到以假乱真的程度。

  • 静默活体

动作活体检测的方式具有很高的安全性,但另一方面,对用户来说,由于要配合着做几个动作,因此体验不是非常好。为此,我们又发明了一种新的活体检测方式,不需要用户做任何动作,只需要自然正对摄像头三四秒钟,就可以完成检测了。也许你会问,如果不做动作,岂不是拿张普通照片就可以攻破了?非也。虽然没有刻意做动作,但真实的人脸并不是绝对静止的,总有一些微表情存在,比如眼皮和眼球的律动、眨眼、嘴唇及其周边面颊的伸缩等,利用这些特征,我们完全可以防住照片攻击。至于视频回放攻击和立体面具攻击,防范的原理和之前介绍的一样。

  • 红外活体

其实啊,上面这些还不是最厉害的。在有些应用场景,比如ATM机上,我们可以安装红外摄像头,利用红外图片,我们可以实现更好的防攻效果。我们知道,不管是可见光还是红外光,其本本质都是电磁波。我们最终看到的图像长什么样,与材质表面的反射特性有关。真实的人脸和纸片、屏幕、立体面具等攻击媒介的反射特性都是不同的,所以成像也不同,而这种差异在红外波反射方面会更加明显,比如说,一块屏幕在红外成像的画面里,就只有白花花的一片,连人脸都没了,攻击完全不可能得逞。

到这里,人脸识别系统常见的攻击手段以及活体检测方式就介绍得差不多了,相信你已经对人脸识别系统的攻防有了一个比较全面的了解。事实上,研究人员对各种人脸识别的攻击方式都有预防,攻击者绝不可能轻易攻破我们的系统。最后,我们要警告那些居心不良、妄图钻技术漏洞的人,我们不但有完备的防攻击系统,也会对攻击行为存照留证,法网恢恢,疏而不漏,天道昭昭,多行不义必自毙,请君自重!

参考:
https://zhuanlan.zhihu.com/p/26112838
https://zhuanlan.zhihu.com/p/38183691

更多信息请关注公众号:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C#中实现人脸活体检测可以使用Microsoft的Cognitive Services中的Face API。Face API提供了现代化的人脸检测和识别功能,包括活体检测。使用Face API,您可以检测到面部表情和动作,并验证用户是否是真人而不是照片或视频。 下面是实现人脸活体检测的简单步骤: 1. 注册Microsoft Cognitive Services账户并创建一个Face API服务。 2. 安装Microsoft.Azure.CognitiveServices.Vision.Face NuGet包。 3. 使用Face API进行人脸检测和活体检测,示例代码如下: ```csharp using Microsoft.Azure.CognitiveServices.Vision.Face; using Microsoft.Azure.CognitiveServices.Vision.Face.Models; public async Task<bool> DetectLiveFace(string imageFilePath) { var faceClient = new FaceClient(new ApiKeyServiceClientCredentials("YOUR_FACE_API_KEY")); faceClient.Endpoint = "YOUR_FACE_API_ENDPOINT"; using (Stream imageFileStream = File.OpenRead(imageFilePath)) { IList<DetectedFace> faces = await faceClient.Face.DetectWithStreamAsync(imageFileStream, true, false, new List<FaceAttributeType> { FaceAttributeType.HeadPose, FaceAttributeType.Emotion }); foreach (var face in faces) { var headPose = face.FaceAttributes.HeadPose; var emotion = face.FaceAttributes.Emotion; if (headPose.Pitch > 20 || headPose.Roll > 20 || emotion.Neutral > 0.5) { return false; } } } return true; } ``` 在这个示例中,我们使用Face API的DetectWithStreamAsync方法检测人脸,并使用FaceAttributes属性获取人脸的头部姿势和情绪。如果头部姿势超过20度或情感中的“中性”分数超过0.5,则认为该面部不是真人面部。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YEGE学AI算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值