做者:Andy,Simpleweb(原文連接)html
翻譯:劉通html5
原標題:Exploring Facial Recognition with WebRTCgit
本文轉載自WebRTC中文網github
近幾年來,面部識別技術一直在智能手機創新的周圍徘徊。隨着蘋果公司在 iPhone X 上推出 Face ID,人們開始更多的關注面部識別技術。web
咱們團隊向來喜歡實驗和探索將來技術的潛力。因此咱們與 Cristiano 一同利用 WebRTC 作一些關於面部識別的研究和探索。數據庫
在這篇文章中,咱們會分享 Cristiano 的一些成果,他學到的東西,以及他對這種技術挑戰和侷限性的見解。canvas
什麼是WebRTC?api
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鏈接,單數若是是在本地主機行,那麼大多數的瀏覽器都會容許進行共享。