
近日微軟推出了一個神奇的頁面——How-old.net,通過傳照片猜年齡迅速刷爆朋友圈。上線幾個小時,已經測試了超21萬張圖片,由于推測存在不小誤差,不少名人都被“玩壞了”,微軟認為同年的林志穎和郭德綱年齡差了一個吳奇隆。那么當科技大佬們遇到“How-old” 會如何呢?
參考 Fun with ML, Stream Analytics and PowerBI,內有詳細說明。

這個 demo 是我們 IMML 部門(Information Management and Machine Learning)做的,主要組件是:
1. Azure Machine Learning 平臺以及其 gallery 中的 face api。Microsoft Azure Machine Learning Gallery
2. 實時統計用的是 Azure Event Hub 和 Azure Stream Analytics,后者可以在前者的事件流上使用類 SQL 的語句來執行一個 Near Realtime 的統計,比如每 10 秒內的訪問次數和結果分布。
其實本 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 還包括識別兩張照片是不是同一個人,以及識別出某個具體的人等高級功能。
Age estimation via face.
1. Face detect,檢測圖片中人臉的位置,cascade adaboost 是最常用的方法。
2. Face alignment,圖像對準,確定一些關鍵的點的位置,比如眉毛,眼睛,鼻子,嘴角等,確定這些點之后可以確定人臉區域,傾斜的也可以。
3. Feature extract,有了 face region 之后,開始提取 feature,形狀 shape,紋理 texture,幾何 geometry 信息是最關鍵的 feature 了。
4. Train,有了大量 feature 數據以及對應的年齡數據,建立一個 model 開始訓練。SVM, linear regression 等等。
5. Age estimation,新來一張圖片,獲取 feature,根據 4 獲取的訓練參數,估計年齡。
目前看到一些 paper 給出的 MAE(Mean absolute error)可以到 4-5 歲,但都是基于實驗室數據,微軟的也試了一下,variance 有點大。
微軟本來是為了宣傳云計算,估計年齡應該只是一個噱頭。