硕鼠的博客站

范路的博客主站,时而会发些东西。

人脸识别API和人脸识别应用

Face API logo 今天在http://openpk.org 上的 #盛大云计算大赛# 创意投递中,看到了一个非常有趣的创意,叫做Face-API。其实前几天 @孤云大兵 同学提交创意“明星脸”时还有人在评论“这个技术门槛不低,要如何实现相关技术”的问题?当时孤云大兵表示准备去看一看论文,找一些相关的算法,不料今天就有人直接送服务上门了,真是无巧不成书。

• Face-API的介绍

Face-API是基于云主机提供的一套实现人脸识别服务的开放API。

Face-API的工作方式是这样的:首先,调用这套API的应用要将照片上传到云端;然后Face-API会在云端进行人脸检测,即使是合影,只要人脸所占像素达到了识别的标准,就会被一一检测出来;检测到人脸之后,根据五官的角度和比例来判定人脸在照片中的角度;最后一件事情就是进行人脸聚合,计算机是无法判定哪张脸属于哪个人的,它能做的仅仅是将同一个人的人脸聚集在一起。

Face-API将聚合的信息发送给调用它的应用,然后就会删除上传到服务器的照片,仅仅保留下聚合之后的人脸特征信息。当下次该应用再传输照片上来的时候,只需要和留存的人脸特征信息库进行比对,就可以知道这些新照片中哪些人脸以前曾经被识别和聚类过,并再次进行聚类。

到此为止,计算机能做的事情已经结束,操作权再次交回用户手中。也就是说,用户要自己将识别出来的聚类与具体的人关联起来,以及进行少量识别结果的校对。在这个人工参与环节之后,才算是完成了人脸识别的完整过程。

在此之后,应用还应该将用户反馈的信息(尤其是如不同聚类其实是同一个人、或某个聚类中有个别照片有误)反馈给Face-API服务器,以便服务器对算法进行校正,以提高今后继续识别的精确性。

当然,这并不是一个完全的训练过程。比如一个儿童,随着年龄的增长,其相貌变化是很大的,就算是人隔上几年看到一个儿童也不一定能够认出来,对于计算机系统来说,能够做的也就是记住“这是某某人,那也是某某人”,足矣。

上面解释的是最基本的服务流程,真正使用起来还要略微复杂一些。Face-API除了能够提供基本的人脸检测功能之外,还准备提供相似度比较、性别判定及年龄判定等,以后应该还会不断添加新功能进来。

• Face-API的用户隐私保护

如果需要进行人脸检测,就必须要上传照片。但是对于Face-API来说,系统并不知道这些照片上的人具体是谁,只是会进行人脸聚集。应用不断地传照片上来,Face-API服务器只能知道这次传上来的照片中有某个人脸和以前传上来的某个很像。

当用户将某张照片与某个人进行关联之后,这个数据并不会上传到Face-API服务器。对于Face-API来说,某一个聚类的照片,所指向的那个用户永远都是一个唯一的随机数,而不是某一个现实中存在的具体的人。

用户上传的照片,在识别之后会被删除,Face-API服务器上只保存人脸的一些特征信息,并不会长期保存用户的原始上传照片。比如一个照片流式的应用,本身就会要求用户上传照片,那么只需要在应用的服务器收到用户的照片之后,传送一份到Face-API服务器进行人脸检测和识别,应用可以保存用户的通讯录或照片中那个人的具体信息,但是这些东西Face-API的服务器上都不会保存。

在Face-API的接口上,允许应用对照片进一步进行用户标识,也就是说应用可以告诉Face-API服务器,哪些照片是属于一个用户的,而哪些是属于另外一个用户的。在Face-API的服务器端,将实现严格的用户数据隔离,一个用户的照片,只会和这个用户自己的照片进行比较和聚类,在比较和聚类的过程中,不同用户的照片是隔离的,这就在最大程度上保证了用户隐私的保护。

• Face-API和云计算和移动互联网

人脸识别技术在PC端已经有一些案例了,比如苹果的iMovie和Google的Picasa都带有人脸识别功能。但是,在移动互联网应用方面、在移动设备上,人脸识别运算(特别是最后的人脸聚类运算)所消耗的运算资源和内存资源都是不被允许的。移动设备本身的局限性导致了这个计算无法在本地完成,所以只能交给服务器去完成。

对于人脸识别类的应用来说,识别和比对的运算量是很大的,Face-API完全可以在用户请求比较少的时候,使用很少的服务器计算资源,也就是说使用一个配置较低的服务器来支撑日常的API调度和低请求量的人脸识别和比对计算需求,而在有大量照片需要比对的时候,同时使用很多服务器进行并行运算。

这种工作模式在传统的IDC机房中问题很大,但是有了弹性的云计算环境之后,事情就变得容易多了。

Face-API可以将数据存放在集群的NoSQL数据库中,然后将计算服务器的镜像也存储下来。在需要大规模运算的时候,只要调用云服务API,使用事先准备好的镜像使用1分钟时间部署出所需要的运算服务器,然后通过云计算API启动这些服务器,之后就可以自动调度服务器和NoSQL数据集群中提取所需处理的任务和数据进行高性能的运算。

运算结束之后,或者说是在运算请求量降低,不再需要那么多服务器进行并行运算之后,将并行运算服务器上的数据重新写回NoSQL集群中,然后自动执行关机脚本。调度服务器再通过云计算服务API将这些多余的服务器退掉。

值得一提的是,这次为盛大云计算大赛提供支撑的盛大云服务,是按照小时计费的。

人脸识别技术普及后的SNS

长远来看,人脸识别技术并不仅仅是一种简单的计算机智能模式识别技术,更将是一种对人与人之间的关系将带来深远影响的技术变革。

近年来非常火爆的SNS,也就是社会化网络服务,本身就是基于真实的人际关系建立起来的(比如Facebook),由此可见标识个人身份的照片对于SNS是多么重要。如果计算机能够相对准确地对这些照片和身份之间进行一个自动的标识和关联,那么SNS上肯定会出现很多完全不同的、很酷的甚至我们现在还无法想象的应用和服务模式。

人脸识别技术给SNS带来的改变,肯定不会比LBS小。

每一项技术,通常是首先出现在实验室中,然后再尝试将其产品化,在这个过程中新的模式将不断涌现。比如GPS(全球卫星定位系统)最初完全是为了军事目的被发明出来,民用化之后除了进行定位和导航外,很长一段时间并没有新模式出现。突然有一天,人们发现可以提供很多基于位置的服务,一种全新的应用模式就诞生了。

这不是技术创新,而是应用模式创新。人脸识别技术目前也处在这样一个阶段,技术基本成型但缺乏创新的应用模式。这个过程不是单纯靠实验室里面的科学家就可以完成的,而必须集思广益,靠整个社会的智慧来推动。

相信随着Face-API服务的上线,会不断有新的应用涌现,让我们来共同期待吧。

 

Both comments and pings are currently closed.

Comments are closed.

Close Bitnami banner
Bitnami