作者:Andy,Simpleweb(原文連結)
翻譯:劉通
原標題:Exploring Facial Recognition with WebRTC
本文轉載自WebRTC中文網
近幾年來,面部識別技術一直在智慧手機創新的周圍徘徊。隨著蘋果公司在 iPhone X 上推出 Face ID,人們開始更多的關注面部識別技術。
我們團隊向來喜歡實驗和探索未來技術的潛力。所以我們與 Cristiano 一同利用 WebRTC 做一些關於面部識別的研究和探索。
在這篇文章中,我們會分享 Cristiano 的一些成果,他學到的東西,以及他對這種技術挑戰和侷限性的看法。
什麼是WebRTC?
WebRTC是一個開源的網路框架,支援瀏覽器中的實時通訊。它包括Web上高質量通訊的基礎構建模組,如用於語音和視訊聊天應用程式的網路,音訊和視訊元件。
用Cristiano的話來說就是“一種可以通過瀏覽器呼叫麥克風,音訊和攝像頭的方法”。
Cristiano使用WebRTC、Canvas、微軟Cognitive Services以及微軟的Emotion API來建立了一個原型工具,該工具可以通過網路攝像頭在瀏覽器中通過面部表情來檢測情緒。
探索
為了幫助檢測面部表情是快樂還是悲傷,Cristiano 建立了一個網格,通過網路攝像頭對映不同的臉部點。當使用者移動他們面部時,點和網格也隨之移動。然後將這些資訊傳送到Microsoft的Emotion資料庫,然後該資料庫就能檢測某人的表情是什麼,悲傷的還是開心的。
Cristiano嘗試了一些不同的庫來在臉上繪製出關鍵點。他最終選擇了Beyond Reality Face(BRFv4),因為它在客戶端執行,所以不依賴於伺服器,並且可以在他的瀏覽器中輕鬆地工作。BRFv4會檢測你的面部,然後對映關鍵點和網格,並且在你的臉上反饋上很多小點。BRFv4可以檢測人臉上的68個關鍵點。很酷對吧。
你可以點選下列連結來檢視不同的庫。
雖然BRFv4能夠勝任大部分困難的工作,但是Cristiano想要更進一步,想要定製網格和關鍵點來更好的控制它。
為此,Cristiano使用了Canvas,一個可以允許他定製選擇的網格和關鍵點的一種HTML5元素。這樣他就能夠輕鬆地改變顏色,移除線條,甚至用其他幾何形狀來替代小點。Canvas給了Cristiano更多的選擇。
檢測面部表情的最後一步是利用微軟的Emotion API。這是一個超級大的資料庫,裡面充滿了“情緒資料”,一旦視訊幀被髮送給它,它就會給出響應。Cristiano能夠將每個視訊幀作為“Base64”影象傳送給API,並返回什麼面部表情。Cristiano也研究了Affectiva的API,他認為它比微軟的API更好,因為它可以提供更詳細的資訊。但是由於瀏覽器支援原因而受到了限制,不適合在這個專案裡使用。
挑戰和限制
-
Cristiano也遇到了一些主要圍繞裝置和瀏覽器支援問題的挑戰和限制。根據Cristiano所說,主要的限制是:
-
跨瀏覽器支援:並不是所有的瀏覽器版本都支援WebRTC,比如低於11.0版本的Safari就不支援。
-
裝置支援:某些裝置在支援WebRTC時不時完全可靠。例如iPhone 6有時就會卡住或者顯示空白的背景。
-
API的資料負載:每次向Microsoft的API傳送視訊幀都會傳送很多資料,所以你必須限制傳送的幀數。
-
需要HTTPS連線:如果你想要一個可以共享的原型,那麼你就需要設定一個https連線,單數如果是在本地主機行,那麼大多數的瀏覽器都會允許進行共享。