最夯的「我看起來幾歲?How Old Do I look?」應用程式大解密

這幾天有款 App (or 網站?) 爆紅 – “How Old Do I look?” (我看起來幾歲?),短短 48 小時就有一百萬人上傳照片測試,我的 Facebook 幾乎被大家的自拍照片洗版,大部份的人都很滿意他們的測試結果,因為比實際年齡少了許多,連我 91 歲的阿嬤也立馬叫她的朋友來試,因為她有一張笑開懷的照片看起來只有76…  基本上這是款相當討喜的軟體,所以被瘋狂轉載,也因為基本上蠻準的 (特別對老人及小孩),也或是很不準 (特別是涷齡的東方女生),所以引起很多討論,本文就針對以下幾點來進行說明。

由於這個網站是微軟做的,當初只是為了開發者大會 (//build) 做的一款 demo,其中用了滿多物聯網及大數據的技術,所以我就去查了一下幕後花絮,結果發現一些有趣的故事:

  • 樣本哪裡來

            一開始開發團隊只想找 50 個人,結果最後弄到了 3 萬 5 仟人參加 (且 2 萬 9 仟人來自土耳其),總共上傳了 21 萬張照片,再用 Microsoft Azure 雲端服務上的 Face detection API’s 去找到人臉、去分類、去看是不是同一個人。

    

             個人覺得很準,因為我拿我們家阿布的臉去測,即使牠很帥,還是測不出來的。

            

  • 性別跟年齡怎麼猜出來

    要在一兩天就寫出這款討喜的 App,當然不能從研究演算法開始,應該是站在巨人的肩膀上摘水果,How-old.net 的實現是來自微軟 Project Oxford 的 Face API ,Face API 可以做到以下 5 大類分析,裡面用到的原理不外乎是 微軟 Azure Machine Learning 機器學習 的分類、分群、迴歸等技術。機器學習簡單來說就是先有大量的 training data,例如大量已經標上年紀與性別的圖片,接著藉由建立演算法和調整參數使得模型能正確辨別出大部分的資料。之後若有新的圖片出現,便依已經建立的模型預測可能的年紀與性別。

    1. Face detection: 偵測臉的位置、性別、年紀等

    2. Face verification: 確認兩張臉是否是同一人、信心指數多高

    3. Similar face searching: 以一張臉,在一群臉的圖庫中找尋長相相似 (同一人) 的臉

    4. Face grouping: 將很多臉分群成長相相似(同一人)的人

    5. Face identification: 先提供多張同一人照片讓系統學習,系統之後便能辨認出此人

    玩過 how-old.net 後大家可能會猜測這背後的演算法可能與膚質、皺紋多寡、臉型、五官位置有關,但並非每個人都有時間或背景知識建立出相對應的分析模型,這也是為什麼微軟會推出 Face API,讓微軟研究院替大家做好這背後的演算法,大家可以直接使用我們分析完的模型,把精力花在加值服務上即可 。微軟雲端服務對開發人員最大好處就在這啦! 除了 Face API 之外尚有 Speech APIsVision APIsRecommendations 等各式收集在 Azure Machine Learning Gallery 中的 API,供大家免費利用!

    另外,考量大家除了測自已跟家人的年齡外,,一定想惡搞一番,去找名人或古人的照片,所以再用了 Bing Search API 去搜尋網路上的有趣照片。

  • Microsoft 到底會不會把上傳的照片存下來

    真的不會。這是官網上的說明 - We’ve had some questions so we updated this post to be more clear. To answer the top one: No we don't store photos, we don't share them and we only use them to guess your age and gender. The photos are discarded from memory once we guess. While the terms of service very common in our industry, and similar to most other online services, we have chosen not to store or use the photos in any way other than to temporarily process them to guess your age.

    那大家一定會問,真的嗎?照片一直不斷傳上來,你不存起來怎麼分析,怎麼學習?

    問的好!重點來了,這就是大數據即時分析的神妙之處啊!別忘了我們有 Azure!

    資料的匯集跟派送可以用 Azure Event Hubs,便能一秒鐘進出幾百萬份資料,你的照片不會被存下,我們存下的是從照片萃取出來的資料,是什麼資料呢?我同事說是叫「顏值」的資料,也就是青春的軌跡吧!所以大家放心!你的照片不會被留下來!

    但對於寫程式的人來說,怎麼抽出這些像是性別、年齡資料,來做即時呈現呢?大家上傳照片一定想要立馬知道結果,没有人想過幾天再開獎,又不是全身健檢.... 當然,又得靠工具了,Azure Stream Analytics 可以讓開發者用簡單的 SQL query 語法捕捉到即時的串流資訊,立馬回報。       

  • 比起別的國家,台灣人是不是看起來比實際年齡年輕?

    我不確定,但根據這幾天我所看到的結果,好像我們普遍看起來年輕很多 (只要不要亂做鬼臉或拍太暗),但如果你真的有心想要開發新的 App 來統計一下,也有好用的工具來做圖表分析,那就是 Power BI

 

總之,實際幾歲不重要,看起來幾歲比較重要,所以去玩玩看吧!或許你會找到讓自已看起來年輕的秘訣。還有,如果你是開發者,發揮想像力吧!利用 Azure 這些 API,看你可以寫出什麼讓大家瘋傳的 App!

欲了解物聯網趨勢,以及 Microsoft Azure IoT Suite 所提供的強大即時分析能力,請參考此文 「物聯網革命即將展開!各位準備好了嗎?!」

欲了解 Microsoft Azure Machine Learning 實作演練,請參考以下 MVA 免費課程

 

            

原文參考自台灣微軟雲端與企業平台事業部副總經理葉怡君網誌Fun with ML, Stream Analytics and PowerBI - Observing Virality in Real Time