2015.05.05 10:30

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

ADVERTISEMENT

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

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

背景回顧

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

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

ADVERTISEMENT

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

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

ADVERTISEMENT

 

Face detection API’s能夠做什麼?

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

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

ADVERTISEMENT

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

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

ADVERTISEMENT

其中最值得注意的就是這裡,它會回傳所偵測到臉部的年紀、性別等等資訊。開發團隊就是看中這個功能,最後做出了這個網站。

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

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

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

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

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

根據官網的說明如下:

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

 

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

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

 

參考資料:

 

相關報導:

ADVERTISEMENT