前言
本文概述了多人姿態估計任務,重點介紹了深度學習中的一些多人姿態估計方法,並簡要介紹了多人姿態估計的應用場景。
本文來自公眾號CV技術指南的
關注公眾號CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
人體姿勢骨架以圖形格式表示人的方向。本質上,它是一組可以連線起來描述人的姿勢的座標。骨架中的每個座標都稱為零件(或關節或關鍵點)。兩個部分之間的有效連線稱為一對(或肢體)。請注意,並非所有零件組合都會產生有效的配對。下面顯示了一個示例人體姿勢骨架。
左:人體姿勢骨架的 COCO 關鍵點格式。右圖:渲染的人體姿勢骨架。
多年來,人們引入了幾種人體姿勢估計方法。最早(也是最慢)的方法通常是在只有一個人的影像中估計單個人的姿勢。這些方法通常首先識別各個部分,然後在它們之間形成連線以建立姿勢。
自然,這些方法在許多影像包含多人的現實生活場景中並不是特別有用。
多人姿勢估計
多人姿態估計比單人情況更困難,因為影像中的位置和人數是未知的。通常,我們可以使用以下兩種方法之一來解決上述問題:
-
簡單的方法是首先結合一個人檢測器,然後估計各個部分,然後計算每個人的姿勢。這種方法被稱為自上而下的方法。
-
另一種方法是檢測影像中的所有部分(即每個人的部分),然後關聯/分組屬於不同人的部分。這種方法被稱為自下而上的方法。
頂部:典型的自上而下的方法。底部:典型的自下而上的方法。
通常,自頂向下方法比自底向上方法更容易實現,因為新增人員檢測器比新增關聯/分組演算法簡單得多。很難判斷哪種方法具有更好的整體效能,因為它實際上歸結為人員檢測器和關聯/分組演算法中的哪種更好。
在本文中,我們將重點介紹使用深度學習技術的多人人體姿態估計。在下一節中,我們將回顧一些流行的自上而下和自下而上的方法。
深度學習方法
1. OpenPose
論文:OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields(2019)
程式碼:https://github.com/CMU-Perceptual-Computing-Lab/openpose
OpenPose 是最流行的自下而上的多人人體姿勢估計方法之一,部分原因是它們有充分記錄的 GitHub 實現程式碼。
與許多自下而上的方法一樣,OpenPose 首先檢測屬於影像中每個人的部分(關鍵點),然後將部分分配給不同的個人。下面顯示的是 OpenPose 模型的架構。
OpenPose 架構的流程圖。
OpenPose 網路首先使用前幾層(上述流程圖中的 VGG-19)從影像中提取特徵。然後將特徵輸入到卷積層的兩個平行分支中。第一個分支預測一組 18 個置信度圖,每個圖代表人體姿勢骨架的特定部分。第二個分支預測一組 38 個部件親和域 (PAF),它表示部件之間的關聯程度。
使用 OpenPose 進行人體姿態估計的步驟。
後續階段用於細化每個分支所做的預測。使用部件置信度圖,在部件對之間形成二部圖(如上圖所示)。使用 PAF 值,可以修剪二部圖中較弱的連結。通過上述步驟,可以估計人體姿勢骨架並將其分配給影像中的每個人。
2. DeepCut
論文:DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation
程式碼:http://pose.mpi-inf.mpg.de/
DeepCut 是一種自下而上的多人人體姿態估計方法。作者通過定義以下問題來完成這項任務:
-
產生一組 D 身體部位候選。該集合代表影像中每個人身體部位的所有可能位置。從上述候選身體部位集合中選擇身體部位的子集。
-
使用 C 身體部位類之一標記每個選定的身體部位。身體部位類表示部位的型別,例如“手臂”、“腿”、“軀幹”等。
-
劃分屬於同一個人的身體部位。
該方法的圖示。
上述問題通過將其建模為整數線性規劃 ( Integer Linear Programming , ILP) 問題來共同解決。它是通過考慮具有域的二元隨機變數的三元組 (x, y, z) 來建模的,如下圖所示。
二元隨機變數的域。
考慮來自身體部位候選集 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) 的函式。這樣就建立了整數線性規劃( Integer Linear Programming , ILP),可以估計多人的姿態。對於確切的方程組和更詳細的分析,請自行檢視他們的論文。
3. RMPE (AlphaPose)
論文:RMPE: Regional Multi-person Pose Estimation
程式碼:https://github.com/MVIG-SJTU/RMPE
RMPE 是一種流行的自上而下的姿態估計方法。作者認為自上而下的方法通常取決於人物檢測器的準確性,因為姿勢估計是在人物所在的區域上執行的。因此,定位和重複邊界框預測中的錯誤會導致姿勢提取演算法執行欠佳。
重複預測(左)和低置信邊界框(右)的影響。
為了解決這個問題,作者提出使用對稱空間transformer網路 (Symmetric Spatial Transformer Network, SSTN) 從不準確的邊界框中提取高質量的單人區域。在這個提取的區域中使用單人姿勢估計器 (SPPE) 來估計該人的人體姿勢骨架。空間De-Transformer網路 (SDTN) 用於將估計的人體姿勢重新對映回原始影像座標系。最後,使用引數姿態非極大抑制 (NMS) 技術來處理冗餘姿態推演問題。
此外,作者引入了一個姿勢引導建議生成器(Pose Guided Proposals Generator)來增加訓練樣本,從而更好地幫助訓練 SPPE 和 SSTN 網路。RMPE 的顯著特點是該技術可以擴充套件到人員檢測演算法和 SPPE 的任意組合。
4. Mask RCNN
論文:Mask RCNN
程式碼:https://github.com/facebookresearch/detectron2
Mask RCNN 是一種用於執行語義和例項分割的流行架構。該模型同時預測影像中各種目標的邊界框位置和語義分割目標的掩碼。基本架構可以很容易地擴充套件到人體姿態估計。
描述 Mask RCNN 架構的流程圖。
基本架構首先使用 CNN 從影像中提取特徵圖。區域提議網路 (Region Proposal Network, RPN) 使用這些特徵圖來獲取存在物件的邊界框候選者。邊界框候選從 CNN 提取的特徵圖中選擇一個區域(區域)。由於候選邊界框可以有各種大小,因此使用稱為 RoIAlign 的層來減小提取特徵的大小,使它們都具有統一的大小。現在,這個提取的特徵被傳遞到 CNN 的並行分支,用於邊界框和分割掩碼的最終預測。
讓我們專注於執行分段的分支。假設我們影像中的一個目標可以屬於 K 個類中的一個。分割分支輸出 K 個大小為 m x m 的二進位制掩碼,其中每個二進位制掩碼代表屬於該類的所有目標。我們可以通過將每種型別的關鍵點建模為一個不同的類並將其視為分割問題來提取屬於影像中每個人的關鍵點。
同時,可以訓練目標檢測演算法來識別人員的位置。通過結合人的位置資訊以及他們的關鍵點集,我們獲得了影像中每個人的人體姿勢骨架。
這種方法幾乎類似於自頂向下的方法,但人員檢測階段與部件檢測階段並行執行。換句話說,關鍵點檢測階段和人物檢測階段是相互獨立的。
5. 其他方法
多人人體姿勢估計是一個廣闊的領域,有很多方法可以解決這個問題。為簡潔起見,這裡僅解釋了少數幾種方法。有關更詳盡的方法列表,可以檢視以下連結:
1. Awesome Human Pose Estimation:
地址:https://github.com/cbsudux/awesome-human-pose-estimation
2. paperwithcode上關於多人姿態估計的論文列表:
地址:https://paperswithcode.com/sota/multi-person-pose-estimation-on-mpii-multi
應用
姿態估計在無數領域都有應用,下面列出了其中的一些領域。
1.活動識別
跟蹤一個人一段時間內姿勢的變化也可用於活動、手勢和步態識別。有幾個相同的用例,包括:
-
用於檢測一個人是否跌倒或生病的應用程式。
-
可以自主教授正確的鍛鍊方式、運動技巧和舞蹈活動的應用程式。
-
可以理解全身手語的應用程式。(例如:機場跑道訊號、交警訊號等)。
-
可以增強安全性和監視的應用程式。
跟蹤人的步態對於安全和監視目的很有用。
2. 動作捕捉和擴增實境
人體姿態估計的一個有趣應用是 CGI 應用。如果可以估計人體姿勢,則可以將圖形、樣式、花哨的增強功能、裝置和藝術品疊加在人身上。通過跟蹤這種人體姿勢的變化,渲染的圖形可以在人物移動時“自然地貼合”他們。
CGI 渲染示例。
通過 Animoji 可以看到一個很好的視覺示例。儘管上面只跟蹤了人臉的結構,但可以推斷出一個人的關鍵點。可以利用相同的概念來渲染可以模仿人的運動的擴增實境 (AR) 元素。
3. 訓練機器人
可以讓機器人跟隨正在執行動作的人體姿勢骨架的軌跡,而不是手動程式設計機器人來跟隨軌跡。人類教練可以通過演示來有效地教機器人某些動作。然後機器人可以計算如何移動其咬合架以執行相同的動作。
4. 控制檯的運動跟蹤
姿勢估計的一個有趣應用是蹤人類主體在互動式遊戲中的運動。通常,Kinect 使用 3D 姿勢估計(使用 IR 感測器資料)來跟蹤人類玩家的運動並使用它來渲染虛擬角色的動作。
正在執行的 Kinect 感測器。
結論
人體姿態估計領域取得了長足的進步,這使我們能夠更好地為可能的無數應用提供服務。此外,在姿態跟蹤等相關領域的研究可以大大提高其在多個領域的生產利用率。
作者:Bharath Raj
編譯: CV技術指南
原文連結:
https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b
歡迎關注公眾號 CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
在公眾號中回覆關鍵字 “技術總結”可獲取公眾號原創技術總結文章的彙總pdf。
其它文章