【IT168 技术】从扑朔迷离的京剧变脸到电影《碟中谍4》对人脸识别技术的精彩演绎,电影中的特效让现实也充满科幻,在惊险刺激的破案中,迎面而来的是窈窕淑女还是黑面杀手,这得人脸识别技术说得算。在企业中,汉王推出的人脸识考勤机也提高了考勤管理水平。
在IT行业,像Twitter、新浪微博、腾讯微博、搜狐微博等微博网站以后可能会出现社交网站的相册功能,发出照片时,系统自动匹配你好友的名字或微博地址。Facebook、腾讯朋友、开心网、人人网等社交网站已经推出了人脸识别的基础功能。只需用户自己为相册里的人物加上姓名,然后系统自动为同一相册内所有相同的人脸加上姓名。
由此可见人脸识别技术应用越来越广泛,它的触角已经伸向了军事、安检、金融、军事、教育、娱乐、IT等领域。
什么是人脸识别
人脸识别技术是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、记忆存储和比对辨识,达到识别不同人身份的目的。
人脸识别的工作原理
首先是人脸检测,即判断输入图像中是否存在人脸,如果有,便给出每个人脸的位置、大小。其次是面部特征定位,即对找到的每个人脸,检测其主要器官的位置和形状等信息;最后进行人脸比对,根据面部特征定位的结果,与库中人脸对比,判断该人脸的身份信息。
应用案例一:使用脸部识别技术登录Ubuntu
面部识别软件可能不是什么新东西,但你知不知道可以用普通摄像头登录到你的Ubuntu桌面呢?
使用pam-face-authentication脸部识别工具, 登录到Unbuntu只需要你的一个优雅的傻笑。它是专门为日常使用的普通用户而设计的。
文件依赖关系
要安装和运行这个功能需要先安装一些依赖关系文件。我们为了节省一些时间,一起安装它们。打开一个终端(应用程序>附件>终端),然后输入下面的代码:
Lucid用户:
Maverick 用户:
然后继续分别执行下面的命令,执行完一个才进入下一个。
wget http://pam-face-authentication.googlecode.com/files/pam-face-authentication-0.3.tar.gz
tar zxf pam-face-authentication-0.3.tar.gz && cd pam-face-authentication-*
mkdir build && cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr ..
make
sudo make install
现在运行“脸部识别练习”程序,在菜单“程序> 其他”里面打开。
第一步
第二步
第三步
Kubuntu 10.04 Pam 脸部识别登录示范
添加脸部识别登录到GDM
现在把人脸验证模块加入到GDM,这是Ubuntu的默认登录管理:
sudo sed -i '1i auth sufficient pam_face_authentication.so enableX' /etc/pam.d/gnome-screensaver
由于你摄像头型号,你可能还需要安装并添加libv4l预载:
创建文件/ etc / ld.so.preload
把路径粘贴到v411compat.so文件,通常位于/ usr/lib/libv4l
应用案例二:Visidion AppLock锁定App 人脸用作解锁密码
Visidion AppLock新应用可以锁定 App,用人脸作解锁密码。如果不想别人动 设置 或者 短消息,Email 这类应用,可以通过 Visidion AppLock 给这些应用加上启动密码 。
与其它App有所不同, Visidion AppLock 引入了更好玩的概念:除了支持传统密码外,还可以将用户的 脸作为通关钥匙,扫描当前用户的面容,符合则解锁。使用这款软件,非常放心。
第一、 Visidion AppLock 的识别可以设置严格程度,按需来即可。
第二、就是传统的密码解锁仍然在那,脸部识别不通过还是可以输入密码解锁的,不用担心自己被 lock 在外面永远启动不了 App 了。
使用较为简单,先设置密码,识别自己的面部等。启动有密码的应用比如 email,先出现的是识别面部的界面,什么按钮也不用按,拿着手机对着自己就好了,识别没问题就会自动进入 email。
应用案例三:OpenCV定位人脸方位
OpenCV全称是Open Computer Vision,是指开放的计算机视觉资源代码,它具有:统一的结构和功能定义、强大的图像和矩阵运算能力、方便灵活的接口等特点,是计算机视觉、图像处理和模式识别等方面进行二次开发的理想工具。它可以在各种版本的Windows下运行,也可以在Linux下运行。OpenCV的源代码是用C和C++所编写且完全开放的,因此具有很好的可移植性,在Microsoft Visual C++ 6.0、Microsoft Visual Studio 2003及Borland C++ BuilderX等环境下均可方便地使用OpenCV所提供的库来进行实际开发。
[代码] [C#]代码
02int faces = objFaceDetector.WrapDetectFaces(lastPic);
03
04int lx, ly, rx, ry, res;
05
06for(int f = 0; f < faces; f++)
07{
08 //The face coordinates are indexed, max index == 4
09 objFaceDetector.WrapGetFaceCordinates(f, &lx, &ly, &rx, &ry);
10<< Source Code For Drawing Face Rectangle >>
11 //returns -1 if cannot detect eyes for this face index
12 res = objFaceDetector.WrapGetEyeCordinates(f, &lx, &ly, &rx, &ry);
13<< Source Code For Drawing Eye Crosses >>
14}
[文件] SampleImages.zip ~ 878KB 下载(313)
[文件] Cascades.zip ~ 364KB 下载(273)
[文件] TestDetection_v.2.zip ~ 25KB 下载(259)
[图片] ScreenShot.png
PHP实现的OpenCV (Open Source Computer Vision) 包含两个函数face_count() 和face_detect(). 第一个给了在一张图像上所标识的面部数量。第二个给了一个他们的坐标数列和总数量。
通过OpenCVDotNet这个开发框架,可以使用C#直接调用OpenCV的函数。OpenCVDotNet 是一个 .NET 对 OpenCV 包的封装。
效果图
案例四:Windows 8 中支持脸部识别登录API接口
Windows 8操作系统里有一个脸部识别登录API接口,微软在Windows 8操作系统的脸部识别登录功能里采用了类似于Xbox 360 Kinect周身体感外设的识别系统,在Xbox 360 Kinect的例子里,微软已经实现了面部识别登录Xbox Live服务。如今微软将在Windows 8操作系统上采用这项少有的登录方式,此举将会绕过传统Windows操作系统的登录方式。
总结
谷歌Picasa和苹果iPhoto等照片软件和在线服务也使用人脸识别技术,人脸认证登录的不断优化, 人脸识别技术应用也日趋丰富,虽然随着人脸数据库规模的增长,人脸识别算法的性能将呈现下降,如何维持或提高大规模应用环境下的人脸识别算法的识别率,同样是一个非常重要的问题。此外,人脸识别引发的隐私泄露也无疑是后患之忧,Facebook的“标签推荐”功能使用面部识别技术,使用户为亲友添加标签这一操作更为快捷。Facebook为用户自动开启此项功能,该项功能已在美国和大多数国家启用。但是,Facebook拥有5亿多用户,使用人脸识别技术势必会引发更为棘手的隐私问题。