五一的時候,微軟推出了一個顏齡識別機器人網站How-Old.net,通過大數據和機器識別技術,判斷照片中人物的年齡,沒想到立即火爆全球,一時間社交網絡上「攀比」成風。
今天,How-Old.net的官方中文版上線了,更方便國內用戶使用。
規矩不變,上傳你或者任何人的照片(大小不超過3MB),顏齡機器人就會判斷年齡。從這段時間的體驗看,「正常人」的判斷還是八九不離十的。
隱私什麼的不用擔心,微軟不會保存你的照片。
PC用戶訪問:
http://cn.how-old.net/
手機用戶掃碼:
延伸閱讀:玩轉機器學習、流分析和PowerBI - 實時觀察病毒式傳播
或許你覺得這只是微軟的一個小玩具,但其實背後隱藏著很多高科技呢,重點有三個:機器學習、流分析、PowerBI。
微軟是如何通過這些技術判斷照片裡人物的年齡的呢?為了解答大家的疑惑,同時展示自己的最新成果,微軟特意分享了一篇文章,揭開了顏齡機器人幕後的秘密。
這是一個挺有意思的故事。我們起初期望大約會有50人左右來試用,結果很快就有有超過3萬5千人試用,我們看見整個事情由此迅速展開。
為了向開發者展示如何利用微軟Azure雲服務輕鬆快速地開發智能應用,我們在Azure上用新發布的人臉識別APIs為2015年微軟BUILD開發者大會第二天的主題演講搭建了http://how-old.net網站。本網站讓用戶上傳照片,然後通過API預測照片中所有人物的性別和年齡。
目前,這些API的人臉定位功能及性別識別功能大致準確,然而年齡預測結果並不是非常準確,但常常能博得用戶一笑,平添不少歡樂。
網站建成後,我們給數百名微軟員工發了郵件,邀請他們體驗這個網站並給出反饋。當時樂觀地想要是有幾十個人來這個網站、為測試提供有用的數據就算不錯了。但三個小時後,我們的後臺分析圖表呈現出下圖態勢:
幾個小時裡,How-old.net收到了全球3萬5千用戶(其中大約2萬9千人來自土耳其,下圖顯示,推特上有大量來自土耳其的用戶提到了這個網頁)上傳的21萬多張照片。
這個網頁展示了用戶使用的實時信息。比如,我們曾預測用戶會用已經存在於網絡的照片,或是使用頁面上的必應圖片搜索欄;然而網站分析的照片中,超過一半的是用戶上傳的自己的照片。這些信息幫助我們改善用戶體驗,還有助於我們額外測試手機上傳照片。
那麼這些是怎麼實現的呢?
也許說起來難以置信,但兩位工程師只花了幾個小時便把整套解決方案(從網頁到機器學習API到實時數據流分析再到實時BI)整合在一起。這很好地展示了Azure開發者的敏捷和創造力。
這款應用的關鍵功能在於以下三點:
- 識別圖片中人物性別及年齡
- 獲取上述抽取的數據的實時信息
- 生成實時分析圖表來顯示上述結果
識別性別及年齡
我們想創造一個智能又有趣的體驗吸引全球用戶,於是我們瀏覽了微軟Azure機器學習庫裡的一些API。這個網頁裡有個新套裝Project Oxford ,由必應和微軟研究院打造,內含大量面部、語言和視覺方面的服務。
我們用到的臉部識別API有個演示頁,該頁面可以檢測到臉部並提取出相關信息。
我們覺得這個API的年齡及性別識別功能很有趣,所以選了這個方面作為我們的項目。為了讓用戶體驗更加有意思,我們還加上了Azure市場裡的必應搜索API,最終建成了http://how-old.net網站。
除了年齡和性別,我們還用上了其他標準瀏覽器提供的信息,比如伴隨著每個標準HTTP調用而來的用戶代理字符串,以及照片上傳地點的經緯度。
這些信息可用來計算很多網站使用的數據統計,比如通過iPhone、Windows或安卓登錄的數量,或者how-old.net最受歡迎的地區。
這點體現在下列JSON文件中:
[ { "event_datetime": "2015-04-27T01:48:41.5852923Z",
"user_id": "91539922310b4f468c3f76de08b15416", "session_id": "fbb8b522-6a2b-457b-bc86-62e286045452",
"submission_method": "Search",
"face": { "age": 23.0, "gender": "Female" },
"location_city": { "latitude": 47.6, "longitude": -122.3 },
"is_mobile_device": true, "browser_type": "Safari", "platform": "iOS", "mobile_device_model": "IPhone"
} ]
實時見解
為了理解從本網站得到的實時數據的模式,我們使用了一套新的微軟Azure數據流服務。
我們用Azure Event Hub導入數據,這些Azure Event Hub是具有高伸縮性的發布-訂閱吸收器,它可以攝入每秒幾百萬次事件。用戶上傳照片時,Event Hub API會從網頁生成ASON文件。
注意,在此過程中,我們不會保留照片及任何指向用戶的信息(用戶無需電郵,不用登錄,也沒有用戶名)。只有JSON文件流向Azure Event Hub。
然後,我們需要數據流服務來實時整合處理用戶們上傳的上萬張照片。這裡我們用到了高吞吐低延遲的全託管解決方案Azure流分析(ASA)。ASA讓用戶能用類似於SQL的語言,輕鬆處理數據流。
比如,只用輸入下列命令,你就能從一個十秒窗口得出「性別」的計數,而且結果每秒都會更新。
SELECT
System.Timestamp AS OutTime,
Face.gender AS Gender,
Count(*) AS Count
FROM
StreamInput
GROUP BY HoppingWindow(second,10,1),
Face.gender
在上圖的查詢中,我們選取了顯示結果的時間,性別和性別的計數。StreamInput指流動記錄數據流向的Event Hub。這個過程僅僅在一秒一跳的十秒窗口中完成。
這個查詢提供了上傳照片中男性和女性的總數。這些信息能被展示在一個分析圖表裡。你可對來自同一Event Hub的數據進行多種查詢。
實時分析圖表
我們用PowerBI在一個實時分析圖表中展示結果。我們只是選擇了PowerBI來呈現數據流分析結果,然後在http://www.powerbi.com選擇ASA創建的數據集和表格,無需進行其他代碼方面的工作。
上圖的兩項數據流分析查詢,一個是整合照片中提取的年齡再以PowerBI中其他標準(比如區域)進行分類,另一個是上面提到的查詢。PowerBI能製作各種圖表,你甚至可以直接用自然語言發布命令(比如「各性別各年齡IOS用戶的總數是多少?」)。結果也會顯示在實時分析圖表上。
大家可以在http://how-old.net或者中文版本http://cn.how-old.net上自己試試。祝大家玩得開心,也期待更多人用Azure服務和機器學習庫中的API來創建自己的應用。