假的。(多图)
按文章作者的意愿,“头部左右倾斜 15 度以上”只能逃避其所用 APP 中的人脸检测模块,粗略观测,其所用 APP 中的人脸检测算法只能适应用正脸( frontal face),而非多视角不变的人脸检测( Invariant Multi-View Face Detection[1]),而目前诸多开放的人脸检测 SDK 或多或少地实现些功能:
图 1.(此结果来自orbe.us ReKognition [2],好人做到底,给orbe.us Cloud-based Parallel All-In-One Image, Facial and Brand Recognition Engine.做个广告 http://weibo.com/u/2441316112,美女负责人不在知乎呀!)
人脸检测只是人脸识别系统中的一步,当然是非常重要的一步;反人脸检测(躲开人脸检测)也只是反人脸识别的一种手段,在特定场景下是奏效的,但“头部左右倾斜 15 度以上”的“伎俩”是达不到这效果的,为什么呢?是否有更有效的方法呢?我们来探讨一下:
1、人脸识别的一般过程
首先,我们需要了解人脸识别的一般过程,如图 2:
图 2. 人脸识别一般过程
可以看不出,人脸检测是入口,检测失败则后续识别无从谈起;人脸检测一般也包括了人脸关键点检测 (Facial Landmark Detection),检测成功后的预处理是根据人脸关键点将人脸摆正、对齐,将人脸图像规定在只包含五官的部分,当然也可能包含对光照的处理;
识别过程则类似一般图像(模式)分类,大体是提取某种特征(用于表示人脸图像的数学向量,是对人脸图像进行特定的运算获得,如获得矩阵特征值即为一种方法),选择某种分类方法(传统神经网络及 DeepLearning 方法与此有别)。
那么,影响人脸识别的因素实际上可包含影响人脸检测的因素和影响特征提取的因素:
影响人脸检测的因素有:光照、人脸姿态、遮挡程度;
影响特征提取的因素有:光照、年龄、表情、遮挡程度;
所以,反人脸检测是反人脸识别最直观的方法,题主所引用 VEDO 中用到的反人脸检测 的方法莫过于从影响人脸检测的因素及人脸检测原理入手,这里留在下一节讲。
同样的道理,破坏影响特征提取的因素在理论上也是可以达到反人脸识别的效果。
2、人脸检测及反人脸检测
2.1 人脸检测
目前流行的人脸检测方法多源自 Viola–Jones object detection framework(Viola)[3],这里并不打算描述该过程,OpenCV Face Detection: Visualized [4](自备梯子)非常直观地展现了这一过程。
基本上,了解了该算法,使用 OpenCV 自带的分类器[5],便可实现正脸的检测;但对于图像中人脸的其他姿态,则有较高的漏检率,这也就是为何题主及其引文将场景设为“头部左右倾斜 15 度以上”,其实还可以为“头部向下俯或向上仰 15 度以上”或“头部向左或向右偏 15 度以上”,只不过“头部左右倾斜 15 度以上”伪装或躲避镜头的意图不算太明显而已。
人脸在空间中的旋转有三种[6],即绕水平轴旋转(俯仰)、绕垂直轴旋转(摇摆)和绕视平面法向轴旋转(倾斜),如图 3 所示:
图 3. 人脸在空间中的旋转
也即 roll, yaw, pitch,注意图 1 结果中的红框,对应如图 4:
图 4. 人脸在空间中的旋转
也就是说,完善的人脸检测算法,是要适应一定多视角的,如[6]考虑的姿态范围为摇摆[-90°, +90°],倾斜[-45°, +45°]和俯仰[-20°, +20°]。更多的结果如下:
图 5. Multi-View Face Detection
图 7. CNN for Facial Point Detection
http://users.soe.ucsc.edu/~milanfar/research/rokaf/.html/ObjectDetectionFromSingleImage.html
2.2 反人脸检测
了解了人脸检测的原理及影响人脸检测的因素,反人脸检测似乎有头绪了,当我们只是产生了这些念头的时候,有人已经实验多时。
A、基于 VJ 人脸检测原理的反人脸检测
[2.1]中将 VJ 人脸检测可视化的同学Adam Harvey做了这个实验,前期的实验主要是寻找一种可行的遮挡模式:
反人脸检测的动态过程见CV Dazzle: ITP Thesis Demo Look #1 (after) from Adam Harvey on Vimeo.Adam Harvey 在 facebook.com 所用的 phototagger 上的测试见CV Dazzle vs PhotoTagger from Adam Harvey on Vimeo.
B、基于光照干扰因素的反人脸识别
日本东京国立信息研究院教授 ISAO ECHIZEN 研发出了世界首款反面部识别的眼镜,通过眼镜上的 11 组近红外环形灯,可以完美阻止被摄像头的面部识别程序抓取信息。[7]
图 8. Execution of face detection Research projects
3、针对特征提取的反人脸识别
特征提取方法繁多[9][10][11],要在这个层面上达到反人脸识别,似乎难以做到,除非获知该识别系统可能使用的特征提取方法,即便如此,鲁棒的特征应该具备一定的不变性,比如光照、年龄、噪声等的影响,要做到破坏性,需具备一定的专业水准。
如果不想去推测或遍历当前流行的人脸特征算法,那么在这个层面上要做到反人脸识别,目前我只能不负责任地举出这个栗子:[视频]能骗过面部识别的人脸面具[8]
4、总结
人脸识别的广泛应用,势必对民众的隐私造成一定的影响,这也是 Google 及 Facebook 尚未在其 SNS 系统中公开使用该技术的原因之一。对于大街小巷星罗棋布的监控设备,你我的身影或行迹总会不知不觉地记录在某块硬盘的扇区,尽管 2013 年波士頓馬拉松爆炸案等事件表明目前的技术并不像鹰眼 (豆瓣)中描述的那样神乎其乎,但做为想像成为拯救无辜人类的化身的技术宅,自然是要事先发起反击战 — 反人脸识别。
5、参考
[1] High-Performance Rotation Invariant Multiview Face Detection. IEEE Xplore Abstract
[3] OpenCV Face Detection: Visualized from Adam Harvey on Vimeo. http://vimeo.com/12774628
[4] Viola–Jones object detection framework http://en.wikipedia.org/wiki/Viola%E2%80%93Jones_object_detection_framework
[5] OpenCV Cascade Classifier
[6]《基于连续 Adaboost 算法的多视角人脸检测》 http://media.cs.tsinghua.edu.cn/~ahz/papers/crad-20031114-1836.pdf
[8] [视频]能骗过面部识别的人脸面具
[9] http://vis-www.cs.umass.edu/lfw/results.html
[10] 自动人脸识别基本原理
[11] 人脸识别核心算法