基於Javascript的人臉探測技術

maple發表於2015-02-21

我一直都對提取和識別攝像頭或者圖片中人臉特徵的技術理論很感興趣。雖然我知道運用演算法寫一個人臉識別的軟體或者外掛超出了我的能力範圍。但是我發現了一些JavaScript庫,可以用來識別人臉的五官結構,於是我就想寫關於這些庫的一個入門教程。其實有很多相關的人臉識別庫,有的是純用JavaScript,有的是夾雜了java,它們各有優缺點。

今天我們想要了解一下tracking.js這個庫,這是一個是由Eduardo Lundgren開發的輕量級JavaScrip庫,它能實現實時的人臉特徵提取、顏色追蹤以及標定朋友。在這個教程裡,我們將會學習怎麼用它從靜態圖片中提取整個臉部、眼睛以及嘴巴。

在教程的最後,你會找到一個有更詳細的使用技巧和技術細節的實現示例。

首先,我們需要建立我們的專案,你可以從github下載到我們要使用的庫(tracking.js),然後把它的build檔案中的內容放在你的工作檔案目錄下。在這個教程裡,我的檔案結構如下:

檔案結構

你可以看到,js這個檔案目錄就包含了我們從github下載的tracking.js中的build資料夾裡的內容。那麼,接下來我就給你看一下index.html中的HTML程式碼。

HTML程式碼

在上面的HTML程式碼中,我們引入了四個tracking.js庫檔案。那麼接下來我們就要實現從靜態影象中對臉部整體、眼睛以及嘴巴的提取了。我有意選擇了這張圖片,因為這張圖片中包含了很多表情、姿態不一的人臉。


為了能讓它正常工作,我們修改一下之前的HTML檔案中的head部分程式碼。

HTML程式碼

結果

程式碼解釋

  • tracking.ObjectTracker()接受陣列引數將你想要標記的物件分類(比如臉部整體、眼睛、鼻子、嘴巴等)。
  • setStepSize()規定用來標記的方框的步長。
  • 我們把要標記的物件和track事件進行繫結,一旦我們要標記的物件完成初始化,就會觸發track事件。
  • 資料(Data)儲存在物件陣列列表中,其中的值是每一個標記物件的以及xy座標。

結論

正如你所看到的,結果可能因為人臉形狀不同而有所變化。雖然還需要改進,但是我們很感謝對做出這些工作和API介面的所付出的努力。

更多資源:

相關文章