【蜂口 | AI人工智慧】表情識別——龍鵬 深度學習與人臉影像應用連載(七)

絵飛的魚發表於2018-10-11

【文章首發於蜂口知道公眾號,內容來源於蜂口小程式,歡迎關注瞭解~】

作者:龍鵬,前360AI研究員演算法工程師,現任陌陌深度學習實驗室高階演算法工程師。

本次繼續給大家 帶來的是表情識別這個問題。 我們將從四個方向給大家進行分享。

首先,我們會給大家科學地定義一下表情是什麼? 表情實際上包含了我們平常所說的表情以及微表情。

其次,我們會簡單地介紹一下傳統方法的研究思路。 傳統的方法主要從靜態圖和動態影片兩個方面進行講述。

然後,我們再給大家介紹一下深度學習的方法。

最後,我們對錶情分類這個問題的應用和它的難點做一個完整的介紹。

下面開始我們第一部分的分享:什麼是表情?

所謂表情其實指的是面部的肌肉的運動。 我們平常所說的表情包含七種基本的表情, 主要是包括憤怒 厭惡、恐懼、快樂、悲傷 驚訝 以及蔑視等。

上面這張圖是一個表情常用的資料集, 這個資料集包含了八種表情, 實際上就是對應我們左邊所說的七種表情以及中性, 也就是無 表情 當然這個圖的順序跟我們前面的文字沒有一一對應。 總之這七種表情就是我們平常最常見的表情。

但是表情實際上並不僅僅如此。 科學上還有一種表情叫做微表情。 微表情的研究常常被心理學家和犯罪科學家用於相關的研究。

那什麼是微表情呢? 所謂微表情,其實就是持續時間非常短, 它只是某種無意識地使人類在隱藏某種情感。 無意識的一個行動,它的持續時間通常不到一秒鐘。

舉個例子, 當我們有的時候表現出微笑, 但其實我們表示的是蔑視這樣的一種感情。 大家平時應該有這樣的感受。 所以表情其實分為基本表情和微表 這兩大類。 當然還有更多更豐富的表情, 是我們所研究的問題的複雜性來定, 我們可以去進行更多的分類。

那表情它是怎麼形成的 前面我們說了表情實際上是面部的肌肉運動, 而面部的肌肉運動雖然是一個整體, 但是這個肌肉運動實際上也可以分離開幾個區域, 主要包含這麼一些區域:

a)眉毛。眉毛主要包含皺眉、抬眉等等。 它分別可以表示一些驚訝以及一些蔑視的表情。

b)眼瞼。眼瞼包含 抬眼 以及閉眼瞼這樣一個動作。 它實際上包含的可能是驚訝、無聊這樣的一些表情。

c)眼睛。眼睛可以包含憤怒、蔑視等等。

d)嘴唇。嘴唇的表情非常的豐富, 它可以包含微笑、嘟嘴、驚訝等等。

e) 鼻子。鼻子它相對來說要簡單一些。比如 我們常說的聳鼻等等, 它可以表示一種蔑視的表情。

f)下巴 下巴 也可以表示一些嘟嘴之類的表情, 甚至一些驚訝之類的表情。

總的來說,人臉的面部包含了上面列舉的這幾大區域, 由這幾大區域 各自 就組成了表情 也就是 action uints 一般我們在研究的時候,表情 會有20個左右。 這裡我們展示了28個技術的表情 由這些基本的表情 就可以組成人臉的豐富的表情。

表情的研究方法也是分兩類: 傳統的方法和深度學習方法。

傳統的方法 主要是兩個方面來進行研究:

一方面是靜態的圖。所謂靜態圖就是一張人臉的圖片。 通常我們會使用一張對齊好的人臉圖片。 那麼對於 靜態 圖, 我們來研究的表情通常就採用一些傳統的人臉的特徵, 包含一些紋理啊等等一些特徵。

另一方面是動態圖。 所謂動態圖就是一個影片, 因為人臉的表情他天生是一個運動的動作, 也就是肌肉的運動, 所以用動態的圖或者影片來表徵是一個更好的方案。

那麼動態圖主要有兩種研究思路:

一種是 法本身就是用於運動的 跟蹤 的, 所以我們可以用 光流+ 梯度場來跟蹤我們的表情的運動區域。 前面我們可以分為了一句表情 可以對人臉的區域進行幾個區域的劃分, 我們可以用光 流+ 梯度場來進行跟蹤。 當我們跟蹤到這個區域之後, 我們就可以用這些區域運動的方向的變化來表示人臉肌肉的運動, 表徵到人 肌肉的運動之後, 我們就可以得到相應的人臉的表情。

第二個是用 ASM等模型 。ASM等模型也就是主動形狀模型。它本身就是提取的面部的關鍵點,而我們人臉的表情實際上可以用面部關鍵點來進行表徵。因為面部關鍵點它有 序號 的資訊,所以我們基於面部關鍵點,還可以分割槽域的對人類的表情進行表徵,基於動態圖的思路會取得更好的研究效果。

這就是傳統的方法。

如今,在深度學習已經遍地開花的時代, 我們更多的是採用深度學習的方法來研究人類表情這樣的問題

深度學習的方法, 它主要包含兩個問題:

一個是 分類的問題 前面我們說了,人 的表情 包含了非常多的表情 所以對於 每一個區域的表情 我們可以進行分別的分類。 那麼人臉的表情,對於輸入這樣一張圖, 這就是一個多標籤分類的問題。所謂多標籤分類, 我們在前面也給大家介紹過, 就是說一張圖它不僅僅對應一個唯一的標籤, 它可能包含了多個維度, 我們要判斷每一個維度上是否存在它的資訊。

上圖是一個常見的 pipeline框架。 我們可以看到它將人臉的圖分成了 8×8這樣的一個區域, 將每一個影像塊都經過一個單獨的 卷積 一個單獨的 卷積 通道, 然後獲取到它的一個特徵圖的表示。 然後我們可以把特徵圖的特徵向量進行串接起來, 然後再進行分類。 這就是一個典型的多分類的問題。

分類問題我們可以得到一個表情 是否存在。 但是當我們在應用表情的時候, 我們知道一個表情的存在還不能完美的解決我們的問題, 有時候我們希望知道這個表情的幅度是多大, 所以又帶來另一個問題,即 迴歸的問題

迴歸的問題 估計的就是表情的幅度。

比如上面這張圖, 從左到右它是一個微笑的過程, 但是微笑的幅度是不一樣的。 最右邊微笑的幅度最大, 最左邊基本上已經看不到微笑,或者說他不是微笑。 有的時候很多的時候我們需要對錶情做遷移, 或者對錶情進行編輯,那麼我們需要估計表情的幅度, 估計表情的幅度相對於表情分類來說,它更加困難。 因為人臉面部的表情 之間並非是完全獨立的, 比如嘴巴的運動會牽動下巴的運動, 鼻子的運動也會牽動嘴巴的運動, 所以我們無法單獨地對錶情 進行估計。

通常意義上常用的研究方法是對各個表情基之間建立了一個圖, 然後我們會去最佳化這樣的一個圖,利用 CRF 等方法來進行最佳化。 更多的具體細節,大家可以線下去關注。

表情幅度的估計問題的 常用方法就是前面所說的這樣的幾種思路。

最後我們來看看錶情的應用, 表情 可以應用在哪些地方?

首先,遊戲。我們可以用 表情 在玩很多的遊戲, 比如主播之間利用表情來作 PK, 然後來玩類似於消消樂這樣的一些遊戲。

其次,人機互動。可以利用表情來做很多的人機的控制互動。

最後,表情遷移。 如下圖:

這張圖就是一個 avatar 我們利用人臉來 實時 的做一些表情, 從而將這些表情驅動到我們這樣的一個 3D的模型上面 來做一些展示, 這樣的一個應用在電影裡面, CG 製作裡面是非常非常有商業前景的。

不過表情估計 也有很多的難點:

第一個難點是表情非常的複雜多變。 前面我們說了人臉的表情有七個基本表情, 但實際上表情還包含非常非常多, 甚至表情都不一定是面部帶來的, 它甚至還有其他的影像, 非面部區域以外也能帶來一些表情。 的變化非常複雜, 再加上人臉又是一個柔性的模型。

第二個難點是 表情 幅度的量化問題。 像我們上面展示的這樣一張圖, 我們要用人臉來驅動這樣的一個 avatar、 這樣的一個3D模型來做一些表情的動作, 那麼我們不可避免的要估計人臉, 也就是真人 的表現的幅度是多大, 而對他的幅度進行量化, 就面臨了幾個挑戰:

1)我們要對我們的幅度進行標註, 這是一個非常大的問題。 因為我們需要用係數來量化我們的幅度, 它並不是那麼直觀。

2)我們要利用方法, 前面我們所說的利用深度學習的方法來估計我們這樣的表 的幅度, 它也面臨著很多的困難。

好了,以上就是我們人臉表情相關的分享。

免費領取技術大咖分享課,加蜂口V信: fengkou-IT      
感謝您的閱讀,更多精彩請持續關注蜂口微信小程式!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31553577/viewspace-2216044/,如需轉載,請註明出處,否則將追究法律責任。

相關文章