以下為微軟的開發團隊,說明的How-Old.net演算法以及背後的原理。
背景回顧
正如之前的報導,How-Old.net 當初的目的只是為了在開發者大會 (//build) 對開發者進行展示,以向開發者們示範使用Azure服務建立智慧應用程式。這個網站使用了許多與物聯網及大數據相關的技術,包括微軟剛發表的臉部偵測 API (Face detection API’s)。
事實上,使用How-Old.net對於辨識出人臉,以及人臉的性別效果還不錯,但判斷人的年紀其實不是很精準,不過開發小組一致覺得很有「笑果」,所以他們把這個網站寄給微軟裡頭一個幾百人的群組,請他們來試用看看。
起初,網站開發團隊只想找50個人作為樣本,結果吸引了3萬5千人參加 (而且2萬9千人還是來自土耳其!)。不過幾小時內,用戶總共上傳了21萬張照片,就這麼紅了起來。
▲來自全球各地的上傳圖片分析圖表
Face detection API’s能夠做什麼?
要偵測照片中的臉,主要用到Microsoft Azure 雲端服務臉部偵測的功能,因此,這個開發團隊使用微軟的機器學習套件- Azure Machine Learning Gallery 中,由一個名為「牛津專案」(Project Oxford) 所做出的雲端智慧服務,包含臉部 (Face)﹑語音 (Speech)和視覺 (Vision)辨識。
不論如何,首先還是要在照片中找到臉。你可以在這裡看到關於臉部偵測功能的進一步說明。
透過這個DEMO可以看到,使用者只要上傳照片,右邊的API就會回傳所辨識出來的臉部,位置,包括眼睛、鼻子、嘴角兩側的點,位於照片中的參考位置。
透過API可以傳回給開發者一連串的JSON文件參數,讓開發者可以針對傳回來的資訊進行自己後續的應用。
其中最值得注意的就是這裡,它會回傳所偵測到臉部的年紀、性別等等資訊。開發團隊就是看中這個功能,最後做出了這個網站。
即時分析:數據串流分析、立即回傳,結果不用等
為了瞭解從Website傳回來的即時資料,開發團隊用到了另外一個Microsoft Azure 雲端串流服務,他們將資料匯流到 Azure Event Hubs,每秒可以處理百萬筆的Event。團隊透過這個Event Hubs API來串流處理由上述臉部偵測API傳回來的JSON文件。
在這裡要注意的是,Event Hubs所儲存的是Events,並不是照片本身。在這裡保存的僅是JSON文件。
當資訊上傳到Event Hubs的同時,團隊必須要串流處理這些可能由上千位使用者同時上傳的照片所產生的資訊,在這裡他們使用的是Azure Stream Analytics (ASA),這個服務可以讓使用者使用一種非常類似SQL語言的語法,可以來串流處理這些資料。下圖即為範例:
微軟會不會保存使用者上傳的照片?
根據官網的說明如下:
「回答使用者最關心的第一個問題:我們不會儲存也不會分享使用者的照片,使用者所上傳的照片只供猜測其年齡和性別。只要在網站猜出年齡後,使用者所上傳的照片就會從記憶體中去除。即便許多網路服務供應商都在服務條款中表明會蒐集並儲存使用者的資訊,但微軟選擇維護使用者的資訊,除了短暫辨識照片年齡的使用時間外,微軟絕不會儲存或分享使用者的照片。」
台灣人是不是看起來比實際年齡年輕?
國內的使用者普遍測出來的結果,都顯得比實際年齡年輕?雖然開發團隊沒有說明,不過依照常理來判斷,這應該也不會太出人意料之外。畢竟,判斷年紀的臉部偵測API是由外國人寫的,他們的樣本以及依據當然是以西方人為主。而以西方人的角度來看,東方人的年紀一直都很難猜,他們很容易就把東方人的年紀想得太小。而這點反映在他們的臉部偵測演算法上也是很正常的。
像是一些非真實人物的圖(望)
至於某個肉粽角,我只能說微軟真的太了解一些特殊文化了(大誤)
如果作者有去了解Machine learning的話就不會做出這種奇怪的結論,外國人如何想跟他們的的API如何運作怎麼會有關係?難不成他們的工程師可以把"亞洲人臉很難猜"的想法具體用程式碼表現?所有的人臉辨識系統都指是把人臉的特徵(眼睛、鼻子等之間的間距)用數字表達出來,之後電腦在把這些數據跟年齡進行比較看這之間有什麼關係,唯一會造成測亞洲人不准的原因就只有因為樣本大部分來自國外,而外國人臉部結構標準值與亞洲人有所不同而已,跟外國人猜不出亞洲人年齡怎麼可能會有關係,如果英文夠好建議去看這個影片https://www.youtube.com/watch?v=q6iqI2GIllI