【蜂口 | AI人工智能】表情识别——龙鹏 深度学习与人脸图像应用连载(七)...
【文章首發于蜂口知道公眾號,內容來源于蜂口小程序,歡迎關注了解~】
作者:龍鵬,前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/,如需轉載,請注明出處,否則將追究法律責任。
轉載于:http://blog.itpub.net/31553577/viewspace-2216044/
總結
以上是生活随笔為你收集整理的【蜂口 | AI人工智能】表情识别——龙鹏 深度学习与人脸图像应用连载(七)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python绘制地图地图cartopy_
- 下一篇: 【您有新的未分配天赋点】网络流:从懵逼到