How-Old.net 如何「計算」你的臉?演算原理及背後所用的API

How-Old.net 如何「計算」你的臉?演算原理及背後所用的API
How-Old.net 受到歡迎的程度越來越熱烈,根據微軟表示,現在網站平均每秒有700張照片上傳而且數字尚在成長中,而大家的臉書動態消息也都幾乎被好友的測試自拍照片洗版。相信大部份的人都很滿意自己的測試結果,因為都比實際年齡少了許多,不過也有使用者測出來的年紀比實際年齡要大上許多。到底How-Old.net的演算原理以及依據是什麼呢?

以下為微軟的開發團隊,說明的How-Old.net演算法以及背後的原理。

背景回顧

正如之前的報導,How-Old.net 當初的目的只是為了在開發者大會 (//build) 對開發者進行展示,以向開發者們示範使用Azure服務建立智慧應用程式。這個網站使用了許多與物聯網及大數據相關的技術,包括微軟剛發表的臉部偵測 API (Face detection API’s)。

事實上,使用How-Old.net對於辨識出人臉,以及人臉的性別效果還不錯,但判斷人的年紀其實不是很精準,不過開發小組一致覺得很有「笑果」,所以他們把這個網站寄給微軟裡頭一個幾百人的群組,請他們來試用看看。

起初,網站開發團隊只想找50個人作為樣本,結果吸引了3萬5千人參加 (而且2萬9千人還是來自土耳其!)。不過幾小時內,用戶總共上傳了21萬張照片,就這麼紅了起來。

How-Old.net 如何「計算」你的臉?演算原理及背後所用的API

▲來自全球各地的上傳圖片分析圖表

 

Face detection API’s能夠做什麼?

要偵測照片中的臉,主要用到Microsoft Azure 雲端服務臉部偵測的功能,因此,這個開發團隊使用微軟的機器學習套件- Azure Machine Learning Gallery 中,由一個名為「牛津專案」(Project Oxford) 所做出的雲端智慧服務,包含臉部 (Face)﹑語音 (Speech)和視覺 (Vision)辨識。

不論如何,首先還是要在照片中找到臉。你可以在這裡看到關於臉部偵測功能的進一步說明。

透過這個DEMO可以看到,使用者只要上傳照片,右邊的API就會回傳所辨識出來的臉部,位置,包括眼睛、鼻子、嘴角兩側的點,位於照片中的參考位置。

How-Old.net 如何「計算」你的臉?演算原理及背後所用的API

透過API可以傳回給開發者一連串的JSON文件參數,讓開發者可以針對傳回來的資訊進行自己後續的應用。

How-Old.net 如何「計算」你的臉?演算原理及背後所用的API其中最值得注意的就是這裡,它會回傳所偵測到臉部的年紀、性別等等資訊。開發團隊就是看中這個功能,最後做出了這個網站。

How-Old.net 如何「計算」你的臉?演算原理及背後所用的API

即時分析:數據串流分析、立即回傳,結果不用等

為了瞭解從Website傳回來的即時資料,開發團隊用到了另外一個Microsoft Azure 雲端串流服務,他們將資料匯流到 Azure Event Hubs,每秒可以處理百萬筆的Event。團隊透過這個Event Hubs API來串流處理由上述臉部偵測API傳回來的JSON文件。

在這裡要注意的是,Event Hubs所儲存的是Events,並不是照片本身。在這裡保存的僅是JSON文件。

當資訊上傳到Event Hubs的同時,團隊必須要串流處理這些可能由上千位使用者同時上傳的照片所產生的資訊,在這裡他們使用的是Azure Stream Analytics (ASA),這個服務可以讓使用者使用一種非常類似SQL語言的語法,可以來串流處理這些資料。下圖即為範例:

How-Old.net 如何「計算」你的臉?演算原理及背後所用的API

微軟會不會保存使用者上傳的照片?

根據官網的說明如下:

「回答使用者最關心的第一個問題:我們不會儲存也不會分享使用者的照片,使用者所上傳的照片只供猜測其年齡和性別。只要在網站猜出年齡後,使用者所上傳的照片就會從記憶體中去除。即便許多網路服務供應商都在服務條款中表明會蒐集並儲存使用者的資訊,但微軟選擇維護使用者的資訊,除了短暫辨識照片年齡的使用時間外,微軟絕不會儲存或分享使用者的照片。」

 

台灣人是不是看起來比實際年齡年輕?

國內的使用者普遍測出來的結果,都顯得比實際年齡年輕?雖然開發團隊沒有說明,不過依照常理來判斷,這應該也不會太出人意料之外。畢竟,判斷年紀的臉部偵測API是由外國人寫的,他們的樣本以及依據當然是以西方人為主。而以西方人的角度來看,東方人的年紀一直都很難猜,他們很容易就把東方人的年紀想得太小。而這點反映在他們的臉部偵測演算法上也是很正常的。

 

參考資料:http://blog.how-old.net/

 

相關報導:

這個 How-old.net網站,可以算出照片中的你幾歲

無心插柳,微軟的How-Old.Net是怎麼紅起來的?

janus
作者

PC home雜誌、T客邦產業編輯,曾為多家科技雜誌撰寫專題文章,主要負責作業系統、軟體、電商、資安、A以及大數據、IT領域的取材以及報導,以及軟體相關教學報導。

使用 Facebook 留言
太子長琴
1.  太子長琴 (發表於 2015年5月06日 01:51)
我覺得如果系統在學習....應該會被玩壞吧....
像是一些非真實人物的圖(望)
至於某個肉粽角,我只能說微軟真的太了解一些特殊文化了(大誤)
k
1人給推

2.  k (發表於 2015年5月07日 02:59)
"而以西方人的角度來看,東方人的年紀一直都很難猜,他們很容易就把東方人的年紀想得太小。而這點反映在他們的臉部偵測演算法上也是很正常的。"

如果作者有去了解Machine learning的話就不會做出這種奇怪的結論,外國人如何想跟他們的的API如何運作怎麼會有關係?難不成他們的工程師可以把"亞洲人臉很難猜"的想法具體用程式碼表現?所有的人臉辨識系統都指是把人臉的特徵(眼睛、鼻子等之間的間距)用數字表達出來,之後電腦在把這些數據跟年齡進行比較看這之間有什麼關係,唯一會造成測亞洲人不准的原因就只有因為樣本大部分來自國外,而外國人臉部結構標準值與亞洲人有所不同而已,跟外國人猜不出亞洲人年齡怎麼可能會有關係,如果英文夠好建議去看這個影片https://www.youtube.com/watch?v=q6iqI2GIllI
發表回應
謹慎發言,尊重彼此。按此展開留言規則