當前位置:
首頁 > 新聞 > 關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

大片中的人物特效如何實現,少不了應用人體姿態估計。這篇博客簡介了使用深度學習技術的多人姿態估計方法,及其應用。

人體姿態骨架圖 (skeleton) 用圖形格式表示人的動作。本質上,它是一組坐標,連接起來可以描述人的姿勢。骨架中的每個坐標都被稱為這個圖的部件(或關節、關鍵點)。我們稱兩個部件之間的有效連接為對(pair,或肢)。但是要注意的是,並非所有部件組合 都能產生有效的對。下圖是一個人體姿態骨架圖的示例。

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

左:人體姿態骨架圖的 COCO 關鍵點格式 ;右:渲染後的人體姿態圖(圖源:https://github.com/CMU-Perceptual-Computing-Lab/openpose)

人體姿態信息的獲取為多個現實應用開闢了道路,本博客的最後也會討論其中一些應用。近年來,研究人員提出了多種人體姿態估計方法,其中最早(也是最慢)的方法通常是在只有一個人的圖像中估計一個人的姿勢。這些方法通常先識別出各個部件,然後通過在它們之間形成連接來創建姿勢。

當然,如果是在包含多人的現實場景,這些方法就不是很有用了。

多人姿態估計

由於不知道圖像中每個人的位置和總人數,因此多人姿態估計比單人姿態估計更困難。通常,我們可以通過以下方法來解決上述問題:

簡單的方法是:首先加入一個人體檢測器,然後分別估計各個部件,最後再計算每個人的姿態。這種方法被稱為「自頂向下」的方法。

另一種方法是:檢測圖像中的所有部件(即所有人的部件),然後將屬於不同人的部件進行關聯/分組。這種方法被稱為「自底向上」方法。

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

上部: 傳統的自頂向下的方法;下部: 傳統的自底向上的方法。

通常,自頂向下的方法比自底向上的方法更容易實現,因為添加人體檢測器要比使用關聯/分組演算法容易得多。整體上很難判斷哪種方法性能更好,因為歸根結底是對比人體檢測器和關聯/分組演算法哪個更好。

在這篇博客中,我們主要關注使用深度學習技術的多人姿態估計技術。在下一節中,我們將回顧一些流行的自頂向下和自底向上方法。

深度學習方法

1. OpenPose

OpenPose 是最流行的自底向上多人姿態估計方法之一,部分原因在於其 GitHub 實現的文檔注釋很友好。

與許多自底向上的方法一樣,OpenPose 首先檢測圖像中的部件(關鍵點),然後將部件分配給不同的個體。下圖展示的是 OpenPose 模型的架構。

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

OpenPose 架構的流程圖(圖源:https://arxiv.org/pdf/1611.08050.pdf)

OpenPose 網路首先使用前幾層(上圖中是 VGG-19)從圖像中提取特徵。然後將這些特徵輸入到卷積層的兩個並行分支中。第一個分支預測了一組置信圖(18 個),每個置信圖表示人體姿態骨架圖的特定部件。第二個分支預測另外一組 Part Affinity Field (PAF,38 個),PAF 表示部件之間的關聯程度。

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

使用 OpenPose 進行人體姿態估計的步驟(圖源:https://arxiv.org/pdf/1812.08008.pdf)

OpenPose 其餘步驟的作用是細化每個分支做出的預測。利用部件置信圖,在部件對之間形成二分圖(如上圖所示)。然後利用 PAF 值,對二分圖中較弱的鏈接進行剪枝。通過以上步驟,我們可以估計出人體姿態骨架圖,並將其分配給圖像中的每一個人。

2. DeepCut

DeepCut 是一種自底向上的方法,可用於多人姿態估計。其作者通過定義以下問題來完成這項任務:

  • 生成一組身體部件候選項集合 D。這個集合表示圖像中所有人身體部位的所有可能位置。從身體部件候選集中選擇身體部件的子集。
  • 使用身體部件類 C 中的類別標註選中的每個身體部件。身體部件類表示部件的類型,如「手臂」、「腿」、「軀幹」等。
  • 分配屬於同一個人的身體部位。

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

DeepCut 方法圖示(圖源:https://arxiv.org/pdf/1511.06645.pdf)

上述問題可以通過建模為整數線性規劃問題(Integer Linear Programming,ILP)來解決。使用二元隨機變數(binary random variable)的三元組 (x, y, z) 進行建模,二元隨機變數的域如下圖所示:

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

二元隨機變數的域(圖源:https://arxiv.org/pdf/1511.06645.pdf)

考慮來自身體部件候選項集合 D 的兩個身體部件候選項 d 和 d",以及來自類別集 C 的類別 c 和 c",其中身體部件候選項是通過 Faster RCNN 或 Dense CNN 獲得的。現在,我們可以開發以下語句集。

  • 如果 x(d,c) = 1,則表示身體部件候選項 d 屬於類別 c。
  • 如果 y(d,d") = 1,則表示身體部件候選項 d 和 d"屬於同一個人。
  • 他們還定義了 z(d,d』,c,c』) = x(d,c) * x(d』,c』) * y(d,d』)。如果上述值為 1,則表示身體部件候選項 d 屬於類別 c,身體部件候選項 d" 屬於類別 c",最後身體部件候選項 d,d " 屬於同一個人。

最後一個語句可以用來劃分屬於不同人的姿勢。上述語句顯然可以用線性方程表示為 (x,y,z) 的函數。通過這種方法,我們就可以建立整數線性規劃 (ILP) 模型,並估計出多人的姿態。完整方程和詳細分析參見論文《DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation》。

3. RMPE (AlphaPose)

RMPE 是一種流行的自頂向下的姿態估計方法。其作者認為,自頂向下的方法通常依賴於人體檢測器的表現,因為姿態估計是對有人在的區域上執行的。因此,定位誤差和重複的邊界框預測可能會導致姿態提取演算法只能得到次優解。

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

重複預測的影響(左)和低置信度邊界框的影響(右)(圖源:https://arxiv.org/pdf/1612.00137.pdf)

為解決這一問題,作者提出利用對稱空間變換網路 (Symmetric Spatial Transformer Network, SSTN) 從不準確的邊界框中提取高質量的單人區域。在該區域中,利用單人姿態估計器 (SPPE) 來估計這個人的人體姿態骨架圖。然後我們再利用空間去變換器網路 (Spatial De-Transformer Network, SDTN) 將估計的人體姿態重新映射回原始圖像坐標系。最後,利用參數化姿態非極大值抑制 (parametric pose NMS) 技術解決冗餘問題。

此外,作者還介紹了姿態引導的 proposal 生成器(Pose Guided Proposals Generator)來增強訓練樣本,以更好地幫助訓練 SPPE 和 SSTN 網路。RMPE 的顯著特點是,這一技術可以擴展為人體檢測演算法和 SPPE 的任意組合。

4. Mask RCNN

Mask RCNN 是用於執行語義和實例分割的流行架構。該模型可以並行地預測圖像中各種對象的邊界框位置和對對象進行語義分割的掩碼(mask)。而這種基本架構可以輕鬆地擴展成用於人體姿態估計的方法。

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

Mask RCNN 架構流程圖(圖源:https://medium.com/@jonathan_hui/image-segmentation-with-mask-r-cnn-ebe6d793272)

該基本架構首先使用 CNN 從圖像中提取特徵圖。區域候選網路(Region Proposal Network,RPN)使用這些特徵圖來獲取對象的候選邊界框。這些候選邊界框就是從 CNN 提取的特徵圖中選擇區域(region)而得到的。由於候選邊界框可以具有各種尺寸,因此我們使用一個叫作 RoIAlign 的層來減小所提取特徵的尺寸,使得它們的大小一致。現在,將提取到的特徵傳遞到 CNN 的並行分支,以最終預測邊界框和分割掩碼。

現在我們看一下執行分割的分支。首先假設圖像中的一個對象屬於類別集合 K。分割分支可以輸出 K 個大小為 m x m 的二進位掩碼(mask),其中每個二進位掩碼錶示僅屬於該類的所有對象。我們可以將每種類型的關鍵點建模為不同的類,並將其作為分割問題來處理,從而提取出屬於圖像中每個人的關鍵點。

同時,我們還可以訓練目標檢測演算法來識別人的位置。通過結合人的位置信息和他們的關鍵點,我們可以得到圖像中每個人的人體姿態骨架圖。

這種方法類似於自頂向下的方法,但是人體檢測階段是與部件檢測階段並行執行的。也就是說,關鍵點檢測階段和人體檢測階段是相互獨立的。

其他方法

多人人體姿態估計有很多解決方法。簡潔起見,本文僅解釋了幾種方法。有關更詳盡的方法列表,大家可以查看以下資料:

應用

姿態估計在許多領域都有應用,下面列舉其中的一些應用。

1. 活動識別

追蹤人體在一段時間內姿勢的變化也可以用於活動、手勢和步態識別。這樣的用例有:

  • 檢測一個人是否跌倒或生病的應用。
  • 可以自主地教授正確的鍛煉機制、體育技術和舞蹈活動的應用。
  • 可以理解全身手語的應用(例如:機場跑道信號、交通警察信號等)。
  • 可以增強安全性和用來監控的應用。

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

追蹤人的步態對於安全和監控領域是很有用的(圖源:http://www.ee.oulu.fi/~gyzhao/research/gait_recognition.htm)

2. 動作捕捉和增強現實

CGI 應用是一類有趣的應用,它也利用了人體姿態估計。如果可以估計人的姿勢,就能夠將圖、風格、設備和藝術品疊加在人身上。通過追蹤這種人體姿勢的變化,渲染出的圖形可以在人移動時「很自然地適應」人。

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

CGI 渲染示例(圖源:https://i.kym-cdn.com/photos/images/facebook/001/012/571/0a4.jpg)

Animoji 是一個很好的例子。儘管上面的研究只追蹤了人臉的結構,但這個思路可以擴展用於人體關鍵點追蹤。同樣的概念也可以用來渲染一些模仿人類動作的增強現實 (AR) 元素。

3. 訓練機器人

我們可以不通過手動對機器人進行編程來追蹤軌跡,而是沿著執行某個動作的人體姿態骨架的軌跡運行。人類教練可以通過演示動作,有效地教機器人這些動作。然後,機器人可以通過計算得知如何移動關節才能執行相同的動作。

4. 控制台動作追蹤

姿態估計的另一個有趣的應用是在互動式遊戲中追蹤人體的運動。通常,Kinect 使用 3D 姿態估計(利用紅外感測器數據)來追蹤人類玩家的運動,並使用它來渲染虛擬人物的動作。

關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章

運行中的 Kinect 感測器(圖源:https://appleinsider.com/articles/14/07/11/apples-secret-plans-for-primesense-3d-tech-hinted-at-by-new-itseez3d-ipad-app)

結論

當前我們在人體姿態估計領域已經取得了長足進步,這使得我們能夠更好地服務大量可能使用這項技術的應用。此外,對姿勢追蹤等相關領域的研究可以大大提高其在多個領域的生產利用率。

原文鏈接:https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

從相機標定到SLAM,極簡三維視覺六小時課程視頻
性能碾壓,價格僅為英特爾一半:AMD推出全新Ryzen旗艦處理器

TAG:機器之心 |