深度學習中的人體姿態估計概述

前言 

本文概述了多人姿態估計任務,重點介紹了深度學習中的一些多人姿態估計方法,並簡要介紹了多人姿態估計的應用場景。

 

本文來自公眾號CV技術指南的技術總結系列

關注公眾號CV技術指南 ,專註於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。

 

人體姿勢骨架以圖形格式表示人的方向。本質上,它是一組可以連接起來描述人的姿勢的坐標。骨架中的每個坐標都稱為零件(或關節或關鍵點)。兩個部分之間的有效連接稱為一對(或肢體)。請注意,並非所有零件組合都會產生有效的配對。下面顯示了一個示例人體姿勢骨架。

圖片

左:人體姿勢骨架的 COCO 關鍵點格式。右圖:渲染的人體姿勢骨架。 

 

多年來,人們引入了幾種人體姿勢估計方法。最早(也是最慢)的方法通常是在只有一個人的圖像中估計單個人的姿勢。這些方法通常首先識別各個部分,然後在它們之間形成連接以創建姿勢。

自然,這些方法在許多圖像包含多人的現實生活場景中並不是特別有用。

 

多人姿勢估計


多人姿態估計比單人情況更困難,因為圖像中的位置和人數是未知的。通常,我們可以使用以下兩種方法之一來解決上述問題:

  • 簡單的方法是首先結合一個人檢測器,然後估計各個部分,然後計算每個人的姿勢。這種方法被稱為自上而下的方法。

  • 另一種方法是檢測圖像中的所有部分(即每個人的部分),然後關聯/分組屬於不同人的部分。這種方法被稱為自下而上的方法。

圖片

頂部:典型的自上而下的方法。底部:典型的自下而上的方法。 

 

通常,自頂向下方法比自底向上方法更容易實現,因為添加人員檢測器比添加關聯/分組算法簡單得多。很難判斷哪種方法具有更好的整體性能,因為它實際上歸結為人員檢測器和關聯/分組算法中的哪種更好。

在本文中,我們將重點介紹使用深度學習技術的多人人體姿態估計。在下一節中,我們將回顧一些流行的自上而下和自下而上的方法。

 

深度學習方法


1. OpenPose

論文:OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields(2019)

代碼://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

代碼://pose.mpi-inf.mpg.de/

DeepCut 是一種自下而上的多人人體姿態估計方法。作者通過定義以下問題來完成這項任務:

  1. 產生一組 D 身體部位候選。該集合代表圖像中每個人身體部位的所有可能位置。從上述候選身體部位集合中選擇身體部位的子集。

  2. 使用 C 身體部位類之一標記每個選定的身體部位。身體部位類表示部位的類型,例如「手臂」、「腿」、「軀幹」等。

  3. 劃分屬於同一個人的身體部位。

圖片

該方法的圖示。 

 

上述問題通過將其建模為整數線性規劃 ( 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

代碼://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

代碼://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:

地址://github.com/cbsudux/awesome-human-pose-estimation

2. paperwithcode上關於多人姿態估計的論文列表:

地址://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技術指南

原文鏈接:

//medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b

  歡迎關注公眾號 CV技術指南 ,專註於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。

 在公眾號中回復關鍵字 「技術總結」可獲取公眾號原創技術總結文章的匯總pdf。

​​

其它文章

增量學習深度神經網絡

深度學習中的人體姿態估計概述

小目標檢測常用方法總結

CV技術指南–精華文章匯總分類

歸一化方法總結       |  欠擬合與過擬合技術總結

NMS總結             |   損失函數技術總結

注意力機制技術總結   |   特徵金字塔技術總結   

池化技術總結          |  數據增強方法總結   

論文創新的常見思路總結    |    GPU多卡並行訓練總結

CNN結構演變總結(一)經典模型

CNN結構演變總結(二)輕量化模型

CNN結構演變總結(三)設計原則

CNN可視化技術總結(一)特徵圖可視化

CNN可視化技術總結(二)卷積核可視化

CNN可視化技術總結(三)類可視化

CNN可視化技術總結(四)可視化工具與項目

計算機視覺中的圖像標註工具總結

各種 Optimizer 梯度下降優化算法回顧和總結

匯總 | 國內外經典開源數據集

Softmax 函數和它的誤解

提高機器學習模型性能的常用策略

資源分享 | SAHI:超大圖片中對小目標檢測的切片輔助超推理庫

計算機視覺中的圖像標註工具總結

Batch Size對神經網絡訓練的影響

神經網絡超參數的調參方法總結

使用 Ray 將 PyTorch 模型加載速度提高 340 倍

計算機視覺中的圖像標註工具總結

2021年小目標檢測最新研究綜述

經典論文系列–膠囊網絡:新的深度學習網絡

計算機視覺專業術語總結(一)構建計算機視覺的知識體系

計算機視覺中的小樣本學習綜述