天天看點

綜述|姿态估計方法大盤點

作者:Ilias Mansouri

翻譯:仿佛若有光

Introduction

綜述|姿态估計方法大盤點

顧名思義,通過姿勢估計,我們嘗試從圖像中推斷出物體或人的姿勢。這涉及識别和定位身體上的關鍵點。由于身體的小關節、遮擋和缺乏上下文、旋轉和方向,關鍵點的識别是一項非常具有挑戰性的任務。在本文其餘部分将主要關注人體姿勢估計的情況下,膝蓋、肘部、肩部和手腕等主要關節代表這些關鍵點。

在分類方面,姿态估計器可以分為以下幾類:

  • 次元(2D 與 3D)
  • 單姿勢和多姿勢(檢測一個或多個物體)
  • 方法論(基于關鍵點與基于執行個體)

我們可以使用 2D 姿态估計器預測圖像或視訊幀中關鍵點的 2D 位置,而 3D 姿态估計器通過在預測中添加深度将圖像中的對象轉換為 3D 對象。顯然,使用 3D 更具挑戰性。單姿态估計器通常以檢測和跟蹤一個人或物體為目标,而多姿态估計方法檢測和跟蹤多個人或物體。就方法論而言,廣義上講,我們發現模型嘗試檢測特定關鍵點的所有執行個體,然後嘗試将關鍵點分組為骨架。基于執行個體的姿态估計器首先使用對象檢測器來檢測對象的執行個體,然後估計每個裁剪區域内的關鍵點。在文獻中,這也通常稱為自下而上與自上而下的方法。

自上而下的方法包括在圖像上應用人物檢測器,對于每個檢測到的人,使用單人姿勢估計器進行關鍵點推斷。如果您的人物檢測器失敗,那麼您的姿勢估計也會失敗。此外,所需的處理量與人數成正比。自下而上受這些缺點的影響較小,但将關鍵點檢測候選與個人關聯起來,仍然具有挑戰性。

DeepPose

綜述|姿态估計方法大盤點

在本文中,作者首次将深度神經網絡 (DNN) 應用于人體姿勢估計挑戰。下面,我們找到了所使用的架構。

綜述|姿态估計方法大盤點

使用輸入圖像,可以回歸每個身體關節及其位置。通過将原始的初始姿态估計傳遞給此類 DNN 的級聯,可以進一步完善聯合預測,進而實作 SOTA 結果。

Deep(er) Cut

綜述|姿态估計方法大盤點

使用 DeepCut,圖像中未知人數的姿态估計問題被重新表述為優化問題。問題是:

  • 在圖像中建立一組所有候選身體部位,從中選擇一個子集。
  • 從這個子集中,對每個身體部位(例如,手臂、腿和頭)進行分類
  • 将同一個人的身體部位聚集在一起。

然後通過将其模組化為整數線性規劃問題來解決這 3 個問題。

為了找到圖像中的所有身體部位,使用了 Fast R-CNN 的改編版本(AFR-CNN)。具體來說,适應性包括用可變形部件模型 (DPM) 替換選擇性搜尋建議生成并改變檢測大小以允許 DPM 捕獲更多上下文。

從 70 年代的研究開始,他們處理對視覺對象進行一些描述的問題,如何在實際照片中找到這個對象?在真正的工程形式中,一個對象是由一組以可變形配置排列的部件組成的。

綜述|姿态估計方法大盤點

Part-based model of a human

通過以可變形配置排列的部件集合來表示人類。然後分别對每個零件的外觀進行模組化。一對零件由彈簧表示以引入必要的變形能力。

懷疑使用 DPM 可能不是最理想的(确實如此),而是訓練了基于 VGG 的密集 CNN 建構。然後将身體部位的檢測重新表述為多标簽分類。該模型為每個候選輸出一個部分機率得分圖。此外,與其他分割任務類似,使用步幅為 8 的擴張卷積來進行更精細的部分定位。

DeeperCut 基于 DeepCut 的 Dense-CNN,但使用 ResNet 骨幹網代替。與 VGG 主幹類似,32px 的原始步長太大了。然而,由于記憶體限制,使用空洞算法是不可行的。通過移除最後一層來調整 ResNet 架構,減少第一個卷積層的步幅以防止下采樣。在第 5 次卷積中,所有 3x3 卷積都添加了空洞。層和反卷積層用于上采樣。

DeeperCut 還受益于更大的感受野來推斷附近其他部分的位置。這種見解稱為圖像條件成對項,可以計算部件的成對機率。

綜述|姿态估計方法大盤點

成對part-to-part預測:通過計算每對的成本,回歸的偏移量和角度用作特征來訓練邏輯回歸,進而産生成對機率

DeepCut 為圖像中的所有候選身體部位解決了一個 ILP 執行個體,DeeperCut 提出了一種增量 3 階段優化,其中:

  • ILP 解決了頭肩問題
  • 肘部/手腕被添加到第 1 階段的解決方案中,并重新優化了 ILP
  • 将剩餘的身體部位添加到第 2 階段的解決方案中,并重新優化 ILP

用于人體姿态估計的卷積網絡和圖形模型的聯合訓練

綜述|姿态估計方法大盤點

在本文中,檢測pipeline由卷積網絡和馬爾可夫随機場 (MRF) 組成。與之前類似,ConvNet 架構用于身體部位定位。架構如下圖所示:

綜述|姿态估計方法大盤點

Multi-Resolution Sliding-Window With Overlapping Receptive Fields

該架構通過使用滑動視窗方法處理輸入圖像,進而産生表示每個關節位置可能性的像素熱圖。

有 2 個重疊的多分辨率字段,一個是 64x64 輸入(上卷積),另一個是下采樣到 64x64 的 128x128 輸入,進而将更多“上下文”輸入到下卷積路徑中。然後在傳入網絡之前使用局部對比度歸一化 (LCN) 對兩者進行歸一化。

作者提到,使用重疊場的主要優勢在于能夠以相對較低的權重增加看到圖像的更大部分。 此外,通過使用 LCN,兩個視窗之間的重疊光譜内容最小。由于這需要相當大的計算能力,是以模型進行了改進,如下所示。

綜述|姿态估計方法大盤點

保留了多分辨率(下 ConvNet)和滑動視窗(上 ConvNet)的概念。高上下文和低分辨率輸入需要比滑動視窗模型的步長一半。是以,需要處理 4 個下采樣圖像。滑動視窗的特征圖被複制,其中添加和交錯低分辨率特征圖,導緻輸出熱圖低于輸入。

Part-Detector 将輸出許多解剖學上不正确的姿勢,因為沒有對身體關鍵點的隐式限制進行模組化。通過使用進階空間模型在連接配接互連和姿勢的解剖一緻性方面建立限制,巧妙地解決了這一問題。該空間模型被表述為 MRF 模型。通過首先訓練一個部分檢測器并重用産生的熱圖輸出來訓練空間模型,我們能夠訓練一個 MRF,它将在圖模型中制定聯合依賴關系。最後,在統一模型(Part-Detector + Spatial Model)上進行微調和反向傳播。

使用卷積網絡的高效對象定位

綜述|姿态估計方法大盤點

基于前面提到的工作,這項研究實作了一個多分辨率的 ConvNet 來估計圖像小區域内的聯合偏移位置。下面,我們找到了架構,并且很容易看到與之前讨論的架構的相似之處。

綜述|姿态估計方法大盤點

此外,還添加了一個 Spatial Dropout 層。發現由于特征圖中的強空間相關性,應用标準 dropout 并不能防止過度拟合。解決方案是删除整個一維特征圖,以促進特征圖之間的獨立性。與之前類似,(粗)熱圖被傳遞到 MRF,它将過濾掉解剖學上不可行的姿勢。

下一步是恢複由于池化而丢失的空間資訊。這是通過使用另一個 ConvNet 來細化粗熱圖的結果來實作的。

卷積姿勢機器

綜述|姿态估計方法大盤點

卷積姿勢機器--CPM) 繼承并建立在姿勢機器 (PM) 架構上,該架構将來自身體部位和不同尺度的豐富空間互動整合到一個子產品化和順序架構中。正如我們将看到的,CPM 通過利用卷積架構進一步提升 PM,該架構學習圖像和空間上下文的特征表示。

正如我們在下面看到的,PM 是一種順序預測算法,它模拟消息傳遞的機制來預測每個身體部位的置信度。基本原理是每個身體部位的估計置信度在每個階段疊代提高。消息傳遞可以了解為一個機率分類序列,其中預測器(無論是哪種類型的多類分類器)的輸出成為下一個預測器的輸入。

綜述|姿态估計方法大盤點

Architecture of a 1 Stage Pose Machine (a) and a 2 Stage Pose Machine (b)

在每個階段,分類器根據先前分類器的輸出和圖像的特征,為每個身體部位以置信度預測位置。然後,對于每個階段,都會對預測進行細化。最後,我們可以觀察到,對于每個圖像,通過以不同的比例重用圖像來建立分層表示。

在第 1 級,如圖像中所見,對整個模型進行粗略表示,而第 2 級表示身體部位的組成,最後第 3 級,即最精細的表示,由關鍵點周圍的區域構成。在所有層次結構級别上訓練每個階段的單個多類預測器。這意味着訓練每個預測器以從特征向量輸出每個關鍵點的一組置信度,特征向量可以來自任何層次級别。

在 (a) 行下方,我們可以觀察如何通過連接配接位置 z 中的置信度分數來建構每個身體部位的置信度之間的空間相關性,進而生成矢量化更新檔。為了獲得遠端互動,應用非極大值抑制來獲得每個關鍵點/身體部位的峰值清單(高置信度位置),從中可以計算極坐标中的偏移量。

綜述|姿态估計方法大盤點

用 CNN 替換預測和特征提取部分,然後産生我們的 CPM,一個端到端的架構。

綜述|姿态估計方法大盤點

Architecture of the Pose Machine (a & b) and Convolutional Pose Machine (c & d)

該架構的第一階段基于輸入圖像從不斷增長的感受野中建立特征圖。随後的階段将使用輸入圖像和前一階段的特征圖來細化每個身體部位的預測。使用中間損失層可以防止梯度在訓練過程中消失。

正如論文中所述,後續預測器可以利用先前的特征圖作為某些部分應該在哪裡的強線索,進而有助于消除錯誤的估計。通過逐漸增加感受野,該模型可以學習在特征圖中結合上下文資訊,進而使其能夠學習身體部位的複雜關系,而無需對任何表示人體的圖形模型進行模組化。

堆積沙漏網絡

綜述|姿态估計方法大盤點

由于需要在每個尺度上捕獲資訊,是以開發了一種新穎的 CNN 架構,其中處理所有尺度的特征以捕獲人體的空間關系。局部資訊對于識别身體部位是必要的,而解剖學了解在不同的尺度上得到更好的識别。

綜述|姿态估計方法大盤點

Architecture of an hourglass module

在上圖中,我們可以立即看出自下而上和自上而下處理的對稱分區。這種類型的架構之前讨論過語義分割,隻是它被稱為 conv-deconv 或encoder-decoder架構。

通常,一組卷積和最大池化層處理輸入特征。在每個最大池化層之後,我們将網絡分支出來,并将另一組卷積和最大池化層應用于原始特征輸入。在上圖中,每個塊由一組卷積和最大池化層組成。 conv層的精确配置非常靈活。

從 ResNets 的成功來看,作者最終在每個塊中實作了一個殘差子產品。一旦達到最低分辨率,就會啟動解碼器或自上而下的方法,其中網絡有效地組合了不同尺度的特征。最後,在圖像中不可見,應用兩個 1x1 卷積來生成一組熱圖,其中每個熱圖預測關鍵點存在的機率。

通過建立一系列沙漏子產品,其中一個的輸出饋送另一個的輸入,獲得了一種重新評估特征和高階空間關系的機制。與以前類似,它提供了具有中間損失函數的關鍵。按原樣,損失(或監督)隻能在上采樣階段之後提供。是以,無法在更大的全局環境中重新評估這些特征。

這意味着,如果我們希望網絡改進預測,這些預測不僅必須是局部尺度的,而且必須具有更大的尺度,以使預測能夠在更大的圖像上下文中相關聯。下面,我們可以觀察到提出的解決方案:

綜述|姿态估計方法大盤點

在生成的熱圖上應用損失的中間監督過程概述(藍色)

生成中間熱圖,對其應用損失,然後使用 1x1 conv 将這些熱圖重新映射到特征,并将它們與先前沙漏子產品輸出的特征相結合。

訓練是在 8 個沙漏子產品的序列上完成的,其中彼此不共享權重。在熱圖上使用均方損失,每個子產品使用相同的損失函數和基本事實。

OpenPose

綜述|姿态估計方法大盤點

OpenPose 也是第一個用于實時關鍵點檢測的開源庫,是一種改進的 CMUPose。在 CMUPose 中,提出了第一個使用部件親和域 (Part Affinity Fields--PAF) 的自底向上姿态估計器。

綜述|姿态估計方法大盤點

給定輸入圖像,表示關鍵點出現在每個像素上的機率的熱圖是,并生成部分親和力的向量場。 兩者都是由下面觀察到的 2 分支多級 CNN 産生的。

綜述|姿态估計方法大盤點

輸入圖像通過微調 VGG 的前 10 層,從中生成特征圖 F。然後将此特征圖 F 用作每個分支的第一階段的輸入。分支 1(頂部分支)預測關鍵點的置信度圖,而分支 2 預測部分親和力字段。通過連接配接來自兩個分支的先前預測和特征圖 F 來細化置信度圖和親和力字段。在階段結束時,L2 損失應用于估計和真實值之間。

正如之前經常看到的,置信度圖是 2D 熱圖,表達了關鍵點存在于給定像素的信念。部分親和字段是二維矢量字段,它編碼從肢體的一個部分到另一部分的方向。這種特征表示的優勢在于它保留了肢體支撐區域的位置和方向資訊。執行非最大抑制,我們獲得一組候選身體部位位置。然後可以将其中的每一個配置設定給幾個人。使用線積分計算來量化沿曲線的場對親和場的影響,身體部位與人類相比對。

在 CMUPose 工作的基礎上,OpenPose 僅利用 PAF 進行姿勢估計任務,進而消除了身體部位的置信度。下面,我們可以觀察到 PAF 首先被編碼,它代表了部分到部分的關聯,然後被輸入到 CNN 中以推斷檢測置信度圖。

綜述|姿态估計方法大盤點

Architecture of multi-stage OpenPose

通過用 3 個連續的 3x3 核心替換 7x7 卷積層來增加網絡深度,這些核心輸出連接配接。在計算方面,處理減半,因為不再需要在每個階段細化 PAF 和置信度圖。相反,首先将 PAF 細化并傳遞到下一階段,然後再細化置信度圖。如果處理 PAF,則可以推斷出身體部位的位置,但反之則不然。

(Higher)HRNet

綜述|姿态估計方法大盤點

讨論了一種新穎的架構,其中從高到低分辨率的子網絡是并行連接配接的,而不是像大多數現有解決方案那樣串聯連接配接,這些解決方案保持高分辨率表示。

綜述|姿态估計方法大盤點

HRNet architecture​

通過跨子網絡的多尺度融合獲得豐富的高分辨率特征,使得每個從高到低的分辨率表示從其他并行表示接收資訊。 下采樣通過使用跨步卷積發生,而上采樣通過 1x1 卷積和最近鄰上采樣發生。熱圖從主要的高分辨率分支回歸。

基于這項初步工作,Higher HRNet 解決了 2 個主要挑戰:

  • 如何在不犧牲大人物的推理性能的情況下提高小人物的推理性能?
  • 如何生成高分辨率熱圖用于小人物的關鍵點檢測?

使用 HRNet 作為主幹,HigherHRNet(下圖)添加了一個反卷積子產品,其中熱圖是從更高分辨率的特征圖預測的。

綜述|姿态估計方法大盤點

stem是 2 個 3x3 conv 層的序列,将分辨率降低四分之一,然後輸入通過 HRNet 主幹。4x4 反卷積層,然後是 BatchNorm 和 ReLU,将特征和預測熱圖作為輸入,并生成兩倍于輸入大小的特征圖。

在 de-conv 層之後添加殘差塊 (4) 以細化高分辨率特征圖。最後,通過使用雙線性插值對低分辨率特征圖進行上采樣來聚合特征金字塔的熱圖,并通過對所有熱圖求平均值來獲得最終預測。

PifPaf

綜述|姿态估計方法大盤點

PifPaf 的開發目标是估計城市環境中擁擠人群中的人體姿勢,使其适用于自動駕駛汽車、送貨機器人等。下面,我們觀察到 ResNet 主幹與 2 個頭一起使用:部分強度場 (Part Intensity Field--PIF) 預測關鍵點的位置、大小及其置信度,而部分關聯場 (Part Association Field--PAF) 預測關鍵點之間的關聯。

綜述|姿态估計方法大盤點

PifPaf Architecture

更具體地說,PIF 輸出一個置信度,一個向量分量指向最近的關鍵點,具有擴充因子和比例。如下所示,置信度圖非常粗糙。是以,通過将其與生成更高分辨率置信圖的矢量場融合,可以改進該置信圖的定位。然後可以從這個領域學習關節的尺度或空間範圍。這種規模和上述傳播有助于提高不同體型的人的姿勢估計性能。

綜述|姿态估計方法大盤點

Left: confidence map, Middle: vector field, Right: fused confidence map

通過嘗試連接配接一對關鍵點關聯,使用 PAF 将關節位置自下而上連接配接成姿勢。這 19 個關聯的示例是:

  • 左腳踝到左膝
  • 左臀到右臀
  • 鼻子到右眼

綜述|姿态估計方法大盤點

PAF 關聯左肩和左髋

對于給定的特征圖,在每個位置,關鍵點關聯的兩個向量的原點被 PAF 預測為置信度(左上圖)。高于 0.5 的關聯置信度顯示在右側。

最後,解碼器擷取兩個字段(PIF 和 PAF)并将它們轉換為一組代表人體骨骼的坐标 (17)。貪心算法通過降低置信度來建立所有關鍵點類型的優先級隊列。這些點用作候選(種子),它們從隊列中彈出,并在 PAF 字段的幫助下添加到其他關節的連接配接。由于目前和下一個關鍵點之間可能發生雙重連接配接,是以對 PAS 關聯進行評分。最後,對每個關鍵點類型應用非最大抑制來生成人體骨骼。

DirectPose

綜述|姿态估計方法大盤點

提出了第一個多人姿勢估計器,其中關鍵點注釋用于端到端的訓練,而對于推理,該模型能夠将輸入映射到每個單獨執行個體的關鍵點,而無需進行任何框檢測。基于無錨物體檢測的出現,它立即回歸目标邊界框的兩個角,研究人員解決了這種檢測技術是否可用于檢測關鍵點的問題。

基本原理是檢測任務可以重新表述為具有 2 個以上角點的特殊邊界框。他們證明它表現不佳,主要是因為隻有一個特征向量用于回歸所有關鍵點。他們通過使用一個用于關鍵點檢測的輸出分支擴充全卷積單階段對象檢測 (FCOS) 架構來解決這一挑戰。

綜述|姿态估計方法大盤點

FCOS Architecture​

FCOS 以每像素的方式重新制定目标檢測任務。與語義分割類似,FCOS 将輸入圖像上的像素視為訓練樣本,而不是基于錨的檢測器中的錨框。落入邊界框基本事實的像素被認為是積極的,并獲得以下内容:

  • 基本事實的類标簽
  • 一個 4D 向量,表示從該位置到邊界框四個邊的距離,用作該位置的回歸目标

使用特征金字塔網絡 (FPN) 可確定對不同尺度的對象大小具有更好的魯棒性。由主幹 (ResNet50) 生成的特征圖後跟 1x1 卷積。特征層P3、P4、P5、P6和P7的步長分别為8、16、32、64和128。除P6和P7外,各自的橫向連接配接和自上而下的路徑通過加法合并。多級預測還處理兩個不同大小的不同邊界框互相重疊的可能性。

FCOS 使用以下門檻值限制不同特征圖級别的回歸:0、64、128、256、512 和所有特征級别(P3 到 P7)的無窮大。這些門檻值表示特征級别 Pn 需要回歸的最大距離。如果仍然出現重疊的邊界框,則選擇最小的邊界框。

由于不同的特征級别回歸不同的尺寸範圍,是以需要不同的頭部。最後,由于遠離對象中心的許多低品質的預測邊界框,作者引入了中心度的概念。這個頭部根據邊界框的 4 個邊的位置預測歸一化距離。

DirectPose 将關鍵點視為具有 K 個角點的非常特殊的邊界框。然而,在他們的實驗中,由于特征與預測的關鍵點之間缺乏對齊,觀察到了較差的性能。這是因為許多關鍵點遠離特征向量的感受野中心。随着輸入信号越來越偏離感受野的中心,特征對該輸入的響應強度逐漸衰減。

綜述|姿态估計方法大盤點

是以,提出了關鍵點對齊子產品(Keypoint Align Module--KPAM)。以一個 256 通道的特征圖作為輸入,KPAM 會密集地滑動這個特征圖。

定位器,顧名思義,定位特征向量預測關鍵點執行個體的位置的索引,特征樣本從中采樣長度為 256 的特征向量。對于第 n 個關鍵點,第 n 個卷積層将作為輸入第 n 個特征向量并将預測相對于采樣特征向量位置的坐标。

通過對來自 Locator 和來自 KPAlign 的 K 個偏移量求和,我們獲得需要重新縮放以比對原始特征圖的坐标。最後使用了一個小的調整,其中始終存在于一個區域(鼻子、眼睛和耳朵)中的關鍵點被分組并使用相同的特征向量。

最後,我們可以看到 KPAM 如何替換前面提到的 FCOS 架構的邊界框子產品。我們确實觀察到一個額外的熱圖分支,它被用作輔助任務/損失,使基于回歸的任務更加可行。

綜述|姿态估計方法大盤點

DirectPose Architecture

Conclusion

綜述|姿态估計方法大盤點

顯然,估計姿态的任務是相當大的挑戰。 一再證明自下而上的方法優于自上而下的方法,但需要将關鍵點與人相關聯。 這種生成最終執行個體感覺關鍵點的分組或組裝過程可以使用啟發式、人體骨骼模組化(圖形結構)和/或堆疊置信度圖來完成。此外,當認為未知數量的人可以出現在圖像上的任何地方和任何比例時,複雜性就會爆炸。人機互動、關節和當然遮擋使關鍵點組裝過程變得複雜。

姿勢估計在人機互動、動作識别、監視、圖檔了解、威脅預測、機器人、AR 和 VR、動畫和遊戲等領域有重要應用。

繼續閱讀