微软推出的年龄测试网站 How-Old.net 具体是怎样实现识别年龄的?

来源:互联网 发布:2016年网络大电影 编辑:程序博客网 时间:2024/05/16 08:14

转载自知乎,拿来存个档以后看:http://www.zhihu.com/question/30055260/answer/46734584?utm_campaign=weekly172&utm_source=weekly-digest&utm_medium=email

这个网站本来就是用来在微软BUILD大会上做演示用的(Microsoft Build Developer Conference),具体是第二天的keynote,主讲就是IMML部门(Information Management and Machine Learning)的VP老大。


搭建这个网站以及配套设施,用到了这些东西:

0. Microsoft Azure Machine Learning Gallery中的Face API。这个项目叫Microsoft Project Oxford Home,是Bing的同事做的。把Face Detection这件事包装成了一个REST API供调用,这样开发者即使不懂原理也能很快搭出和how-old.net类似的应用。


顺便说一下,使用这个api需要windows azure的订阅,免费的,但是有调用频率的次数限制。有兴趣的同学可以尝试一下。


脸部识别的原理我也不是专家,本题 @清风 的回答已经足够好了。另外可以参考同事在Quora的问答:How does how-old.net work?。基本的原理就是先要有一大堆已知性别年龄的照片作为机器学习的training set,从这些数据中提取各种脸部细节属性(feature),建立model开始训练,训练完成后新输入的数据就先提取这些属性值然后通过这个model来做识别。


也就是说所谓怎样才算年轻或者年老,并非是事先由人来制定出可以描述的规则(比如看皱纹多少啦什么的),而是通过大量的数据,机器自己学习得到的结果,这些无非是一堆属性值,很难用人类语言描述。反过来如果人类已经能用简单的数学公式写出判断年龄性别的规则,那就根本不需要机器学习了,直接把这个数学方法写成代码就可以了。


1. 接下来就是怎么利用这个face api来搭建how-old.net以及背后的实时统计分析和结果呈现(这个在演示中可以看到每10秒的参与人数和男女比例),这个在原回答已经说了。


以下为原回答:

===================================================================

参考Fun with ML, Stream Analytics and PowerBI,内有详细说明。


这个demo是我们IMML部门(Information Management and Machine Learning)做的,主要组件是:


1. Azure Machine Learning平台以及其gallery中的face api。gallery.azureml.net/

2. 实时统计用的是Azure Event Hub和Azure Stream Analytics,后者可以在前者的事件流上使用类SQL的语句来执行一个Near Realtime的统计,比如每10秒内的访问次数和结果分布。

3. 最后结果由powerbi.com来展现。


其实本demo主要目的是展现ASA以及PowerBI的实时统计展现能力,其中ASA刚刚GA(general availability),Machine Learning和face detection api是之前就已经有的东西了,没想到大家都关注人脸识别去了。


编辑

---------------------------------------

程序员们,你们只需要1天时间就可以建立类似的网站。利用微软发布的face detection api,只要几下rest api调用就可以得到结果了。这里有很详细的how to来教你如何调用这些api:Microsoft Project Oxford How-to detect faces from an image。而且,识别年龄和性别只是一个小功能,这套api还包括识别两张照片是不是同一个人,以及识别出某个具体的人,等高级功能。

0 0
原创粉丝点击