为了展现开发者在Azure的帮助下能轻松迅速地打造智能应用,我们在Azure上用新发布的人脸识别APIs为2015年微软开发者大会的第二天展示搭建了How-old.net。借助人脸识别API这个网站可以分析用户上传的照片中人物的性别和年龄。这个API的人脸定位功能及性别识别功能大致准确,然而年龄预测结果并不是非常准确,但How-old.net依旧能博得用户一笑,制造诸多欢乐。当然,同大部分网站一样,我们不会保留用户上传的照片,也不会分享这些照片,我们只会分析照片里人物的年龄和性别。
网站建成后,我们给数百名微软员工发了邮件,邀请他们体验这个网站并给出反馈。当时想着若有几十个人来这个网站、为测试提供有用的数据就算不错了。但三个小时后,我们的后台分析图表呈现出下图态势:
几个小时里,How-old.net收到了全球3万5千用户(其中大约2万9千人来自土耳其,下图显示,推特上有大量来自土耳其的用户提到了这个网页)上传的21万多张相片。
这个网页展示了用户使用的实时信息。比如,我们曾预测用户会用已经存在于网络的照片,或是使用页面上的必应图片搜索栏;然而网站分析的照片中,超过一半的是用户上传的自己的照片。这些信息帮助我们改善用户体验,还有助于我们额外测试手机上传照片。
那么这些是怎么实现的呢?
尽管难以置信,但两位工程师只需几个小时便把整套解决方案(从网页到机器学习API到实时数据流分析再到实时BI)整合在一起。这很好地展示了Azure开发者的灵敏和创造力。这款应用的关键功能在于以下三点:
识别图片中人物性别及年龄
获取上述数据的实时信息
生成实时分析图表来显示上述结果
识别性别及年龄
我们想用智能有趣的体验吸引全球用户。于是我们浏览了微软Azure机器学习展示厅。这个网页里有个新套装Project Oxford ,由必应和微软研究院打造,内含大量面部、语言和视觉方面的服务。我们用到的脸部识别API有个样品页,该页面可以检测到脸部并提取出相关信息。我们觉得这个API的年龄及性别识别功能很有趣,所以选了这个方面作为我们的项目。为了让用户体验更加有意思,我们还加上了Azure市场里的必应搜索API,最终建成了 http://how-old.net。
除了年龄和性别,我们还用上了其他普通浏览器提供的信息,比如伴随着每个标准HTTP呼叫而来的用户代理字符串,以及照片上传地的经纬度。这些信息可用来计算很多网站使用数据,比如通过iPhone、Windows或安卓登录的数量,How-old.net最受欢迎的地区。这点体现在下列JSON文件中:
实时信息
为了知晓How-old.net实时数据的模式,我们引入了一套新的微软Azure数据流服务。
我们用Azure事件中心导入数据。用户上传照片时,事件中心API会从网页生成ASON文件。注意,在此过程中,我们不会保留照片及任何指向用户的信息(用户无需电邮,不用登录,也没有用户名)。只有JSON文件流向Azure事件中心。
然后,我们需要数据流服务来实时整合处理用户们上传的上万张照片。这里我们用到了高吞吐低延迟的全托管解决方案Azure流分析(ASA)。ASA让用户能用类似SQL的语言,轻松处理数据流。
比如,只用输入下列命令,你就能从一个十秒窗口得出“性别”的计数,而且结果每秒都会更新。
在上图的查询中,我们选取了显示结果的时间,性别和性别的计数。StreamInput指流动记录数据流向的事件中心。这个过程是在一个忙碌的十秒窗口中完成,只用了一秒钟。这个查询提供了上传照片中男性和女性的总数。这些信息能被展示在一个分析图表里。你可对来自同一事件中心的数据进行多种查询。
实时分析图表
我们用PowerBI在一个实时分析图表中展示结果。我们只是选择了PowerBI来呈现数据流分析结果,然后在 http://www.powerbi.com 选择ASA创建的数据集和表格,无需进行其他代码方面的工作。
上图的两项数据流分析查询,一个是整合照片中提取的年龄再以PowerBI中其他标准(比如区域)进行分类,另一个是上面提到的查询。PowerBI能制作各种图表,你甚至可以直接用自然语言发布命令(比如“各性别各年龄IOS用户的总数是多少?”)。
总之,祝大家在http://how-old.net 上玩得开心,也期待更多人用Azure机器学习打造自己的应用。
延伸阅读:
- 微软How-Old.net体验:威廉王子只有24岁 巩俐比我小10岁
- How-Old.net这个“黄色网站”是怎样测年龄的?
- how-old.net网站安全么?微软:我们不存照
- 10大原因解密How-Old为何能刷爆朋友圈!
- 为何我说How-old.net再也没有说服力了?