位姿估計 - 1 - Stacked Hourglass Networks for Human Pose Estimation - 1 - 論文學習


論文:https://arxiv.org/pdf/1603.06937.pdf

代碼:http://www-personal.umich.edu/~alnewell/pose

Stacked Hourglass Networks for Human Pose Estimation

Abstract

本文為人體姿態估計任務提出了一種新的卷積網絡結構。所有尺度上的特征都被處理和整合,以最佳地捕捉與身體相關的各種空間關系。我們展示了重復的bottom-up、top-down處理如何與中間監督結合使用是提高網絡性能的關鍵。我們將該體系結構稱為“stacked hourglass”網絡,它基於連續的池化和上采樣步驟,這些步驟用於生成最終的一組預測。在FLIC和MPII基准上取得了最先進的結果,超過了所有最近的方法。

 

1 Introduction

在圖像和視頻中理解人的關鍵一步是准確的姿態估計。對於單一的RGB圖像,我們希望確定人體重要關鍵點的精確像素位置。了解一個人的姿勢和肢體的關節對於動作識別等高級任務很有用,在人機交互和動畫等領域也被作為基本工具。

作為一個公認的視覺問題,姿態估計多年來以各種艱巨的挑戰困擾着研究人員。一個好的姿態估計系統必須對遮擋和嚴重變形以及對罕見的和新奇的姿態有良好的魯棒性,並且不受服裝和燈光等因素引起的外觀變化的影響。早期的工作利用魯棒圖像特征和復雜的結構預測[1-9]解決了這些困難:前者用於產生局部翻譯,而后者用於推斷全局一致的姿態。

然而,卷積神經網絡(ConvNets)[10-14]極大地改變了這一傳統管道。卷積神經網絡是許多計算機視覺任務性能爆發式提升的主要驅動因素。最近的位姿估計系統[15-20]普遍采用ConvNets作為其主要組成部分,在很大程度上取代了手工特征和圖形模型;這種策略在標准基准上產生了巨大的改進[1,21,22]。

我們繼續沿着這條軌道前進,並引入了一種新穎的“stacked hourglass”網絡設計,用於預測人體姿勢。該網絡在圖像的各個尺度上捕獲並整合信息。我們將這種設計稱為houorglass,它基於用來獲得網絡最終輸出的pooling和后續的上采樣步驟的可視化。與許多產生像素級輸出的卷積方法一樣,houorglass網絡池化到非常低的分辨率,然后在多個分辨率[15,23]上采樣並組合特征。另一方面,houorglass與以前的設計主要不同的是其更對稱的拓撲結構。

我們通過端到端連續地將多個houorglass模塊放置在一起來擴展單個houorglass。這允許跨尺度的重復bottom-up、top-down的推斷。與中間監督的使用相結合,重復的雙向推斷對網絡的最終性能至關重要。最終的網絡架構在兩個標准姿態估計基准(FLIC[1]和MPII人體姿態[21])上取得了顯著的改進。在MPII測試中,所有關節的平均精確度提高了2%以上,而對於更困難的關節,如膝蓋和腳踝,則提高了4-5%。

 

2 Related Work

隨着Toshev等[24]引入“DeepPose”,人體姿態估計的研究開始從經典方法[1-9]轉向深度網絡。Toshev等人使用他們的網絡直接回歸關節的x、y坐標。Tompson等人的工作是[15]生成熱圖,方法是將一幅圖像並行地運行在多個分辨率庫中,同時捕捉不同尺度的特征。我們的網絡設計很大程度上基於他們的工作,探索如何捕獲跨尺度的信息,並調整他們的方法來結合不同分辨率的特性。

Tompson等人[15]提出的方法的一個關鍵特征是卷積網絡和圖形模型的聯合使用。他們的圖形模型學習了典型的關節之間的空間關系。最近,其他一些人用類似的方法解決了這個問題[17,20,25],他們在如何實現一元分數生成和成對比較相鄰關節方面做了一些變化。Chen等人[25]聚類檢測到典型的方位,當他們的分類器進行預測時,可以獲得額外的信息來指示相鄰關節的可能位置。我們實現優越的性能,沒有使用圖形模型或任何顯式的人體建模。

有幾個用於位姿估計的連續預測方法的例子。Carreira等人[19]使用他們所說的 Iterative Error Feedback。輸入中包含了一組預測,每一個通過網絡的預測都會進一步改進這些預測。他們的方法需要多階段的訓練,每次迭代的權重都是共享的。Wei等人的[18]建立在多級位姿機[26]的工作上,但現在使用ConvNets進行特征提取。鑒於我們使用了中間監督,我們的工作在精神上與這些方法相似,但是我們的構建塊(hourglass模塊)是不同的。Hu & Ramanan[27]的架構與我們的更類似,也可用於多個階段的預測,但他們的模型將權重限制在自底向上和自頂向下的計算部分以及跨迭代。

Tompson等人在[15]工作的基礎上使用級聯來完善預測。這有助於提高效率和減少他們的方法的內存使用,同時在高精度范圍提高定位性能[16]。一個考慮是,對於許多失敗的情況下,在一個局部窗口的位置細化不會提供很大的改善,因為錯誤的情況往往包括遮擋或錯誤歸屬的四肢。對於這兩種情況,任何在局部尺度的進一步評估都不會改善預測。

姿態估計問題的變化包括使用額外的特征,如深度或運動線索。[28-30]還有一個更具有挑戰性的任務,即多人同時進行標注[17,31]。此外,還有類似Oliveira等人[32]的工作,基於全卷積網絡[23]進行人體部分分割。我們的工作主要集中在RGB圖像中單個人姿態的關鍵點定位。

我們在堆疊(stacking)前的hourglass模塊與全卷積網絡[23]等在多尺度處理空間信息進行密集預測的設計緊密相連[15,33 - 41]。Xie等[33]對典型的架構進行了總結。我們的hourglass模塊與這些設計的主要不同之處在於,它在bottom-up處理(從高分辨率到低分辨率)和top-down處理(從低分辨率到高分辨率)之間更對稱地分配容量。例如,全卷積網絡[23]和整體嵌套架構[33]都側重於bottom-up的處理,而不重視top-down的處理,后者只包含跨多個尺度的預測合並(加權)。全卷積網絡的訓練也是分多個階段進行的。

堆疊前的hourglass模塊也與conv-deconv和encoder-decoder架構有關[42-45]。Noh等[42]使用conv-deconv架構進行語義分割,Rematas等[44]則使用它預測物體的反射率圖。zhao等人[43]通過增加一個重構損失,開發了一個監督學習、非監督學習和半監督學習的統一框架。Yang等人的[46]采用了無skip connections的編解碼器架構來生成圖像。Rasmus等人[47]提出了一種用於無監督/半監督特征學習的去噪自動編碼器,它具有特殊的“modulated”skip connections。這些網絡的對稱拓撲是相似的,但操作的性質是完全不同的,因為我們沒有使用unpooling或deconv層。相反,我們依賴於簡單的最近鄰上行采樣和skip connections進行top-down處理。我們工作的另一個主要區別是,我們通過疊加多個hourglass來執行重復的bottom-up、top-down的推斷。

 

3 Network Architecture

3.1 Hourglass Design

hourglass的設計受到了從各個尺度獲取信息的需要的啟發。雖然局部證據對於識別面部和手部等特征至關重要,但最終的姿勢評估需要對整個身體的一致理解。人的方向,他們四肢的排列,和鄰近的關節的關系是圖像不同尺寸的許多線索中最容易識別的線索。hourglass是一種簡單、最小化的設計,它能夠捕獲所有這些特性,並將它們結合在一起輸出像素級預測。

網絡必須具有某種機制來有效地處理和整合跨尺度的特征。有些方法通過使用不同的管道來解決這個問題,這些管道在多種分辨率下獨立處理圖像,然后在網絡中結合特征[15,18]。相反,我們選擇使用帶有skip層的單個管道來在每個分辨率下保存空間信息。網絡的最低分辨率為4x4像素,允許使用更小的空間過濾器來比較圖像的整個空間的特征。

hourglass的設置如下:Convolutional和max pooling層的結構用於將特征下降到低分辨率。在每個max pooling步驟中,網絡分支(分為skip分支和接着下采樣的分支)並在原來的pre-pooled分辨率上應用更多的卷積(這個即下采樣分支)。在達到最低分辨率后,網絡開始top-down的上采樣序列和跨尺度的特征組合。為了將兩個相鄰分辨率的信息結合在一起,我們遵循Tompson等人[15]所描述的過程,對低分辨率進行最近鄰的上采樣,然后后面跟着一個像素級的兩特征集求和(即同分辨率的skip分支求和)。hourglass的拓撲結構是對稱的,所以每一向下層都有對應的一個向上層。

在達到網絡的輸出分辨率后,使用連續的兩輪1x1卷積來產生最終的網絡預測。網絡的輸出是一組熱圖,對於給定的熱圖,網絡預測了每個像素點上一個關點存在的概率。完整的模塊(不包括最后的1x1層)如圖3所示。

 

(很像U-Net網絡)

 

3.2 Layer Implementation

在保持整體hourglass形狀的同時,在具體的層實現中仍然有一些靈活性。不同的選擇可能會對網絡的最終性能和訓練產生適度的影響。我們探索了在我們的網絡層設計的幾個選項。最近的研究顯示了1x1卷積的簡化步驟的價值,以及使用連續的較小過濾器來捕獲更大的空間上下文的好處。例如,可以將一個5x5濾波器替換為兩個單獨的3x3濾波器。我們測試了我們的整體網絡設計,基於這些見解在不同的層模塊中進行交換。我們經歷了一個網絡性能的提升,從帶有大過濾器和沒有縮減步驟的標准卷積層切換到新的方法,如He等人[14]和基於“Inception”的設計[12]所提出的殘差學習模塊。在這些設計類型的最初性能改進之后,各種額外的探索和修改對進一步提高性能或訓練時間沒有什么幫助。

我們的最終設計充分利用了殘差模塊。大於3x3的過濾器不被使用,bottlenecking限制了每一層的參數總數,從而減少了總的內存使用。我們的網絡中使用的模塊如圖4所示。為了將其置於完整網絡設計的上下文中,圖3中的每個框表示單個殘差模塊。

在256x256的全輸入分辨率下運行需要大量的GPU內存,因此hourglass的最高分辨率(因此最終的輸出分辨率)是64x64。這並不影響網絡產生精確聯合預測的能力。整個網絡從一個stride=2的7x7卷積層開始,接着是一個殘差模塊和一輪max pooling,將分辨率從256降低到64。在圖3所示的hourglass之前有兩個接着的殘差模塊。整個hourglass的所有殘差模塊輸出256個特征。

 (右邊結構的代碼實現是:

class PoseNet(nn.Module):
    def __init__(self, nstack, inp_dim=256, oup_dim=16, bn=False, increase=0, **kwargs):
        super(PoseNet, self).__init__()
        
        self.nstack = nstack
        self.pre = nn.Sequential(
            Conv(3, 64, 7, 2, bn=True, relu=True),
            Residual(64, 128),
            Pool(2, 2),
            Residual(128, 128),
            Residual(128, inp_dim)
        )
        
        self.hgs = nn.ModuleList( [
        nn.Sequential(
            Hourglass(4, inp_dim, bn, increase),
        ) for i in range(nstack)] )
        
        self.features = nn.ModuleList( [
        nn.Sequential(
            Residual(inp_dim, inp_dim),
            Conv(inp_dim, inp_dim, 1, bn=True, relu=True)
        ) for i in range(nstack)] )
        
        self.outs = nn.ModuleList( [Conv(inp_dim, oup_dim, 1, relu=False, bn=False) for i in range(nstack)] )
        self.merge_features = nn.ModuleList( [Merge(inp_dim, inp_dim) for i in range(nstack-1)] )
        self.merge_preds = nn.ModuleList( [Merge(oup_dim, inp_dim) for i in range(nstack-1)] )
        self.nstack = nstack
        self.heatmapLoss = HeatmapLoss()

    def forward(self, imgs):
        ## our posenet
        x = imgs.permute(0, 3, 1, 2) #x of size 1,3,inpdim,inpdim, [1,3,256,256]
        x = self.pre(x) ##size is [batch_size, inp_dim=256, 64, 64]
        combined_hm_preds = []
        for i in range(self.nstack):
            hg = self.hgs[i](x)
            feature = self.features[i](hg) #size is [batch_size, inp_dim=256, 64, 64]
            preds = self.outs[i](feature) ##size is [batch_size, oup_dim=16, 64, 64]
            combined_hm_preds.append(preds)
            if i < self.nstack - 1:
                # size is [batch_size, inp_dim=256, 64, 64]
                x = x + self.merge_preds[i](preds) + self.merge_features[i](feature)

        #把nstack個[batch_size, 16, 64, 64]合並成[batch_size, nstack, 16, 64, 64]
        return torch.stack(combined_hm_preds, 1) 
View Code

1.其實就是首先將輸入x輸入到hourglass模塊self.hgs中,輸入x是[batch_size, inp_dim=256, 64, 64],輸出hg是[batch_size, inp_dim=256, 64, 64]

2.再使用一個self.features模塊,輸入hg是[batch_size, inp_dim=256, 64, 64],輸出feature是[batch_size, inp_dim=256, 64, 64]

3.到這里有兩個分支,步驟2的輸出一個分支是往下走,到一個self.outs模塊,輸入feature是[batch_size, inp_dim=256, 64, 64],輸出preds是[batch_size, oup_dim=16, 64, 64];另一個分支是往右走,到一個self.merge_features模塊,輸入feature是[batch_size, inp_dim=256, 64, 64],輸出output1是[batch_size, oup_dim=256, 64, 64]

4.然后下面的分支再接着一個self.merge_preds模塊,輸入preds是[batch_size, oup_dim=16, 64, 64],輸出output2是[batch_size, oup_dim=256, 64, 64]

5.最后將x + output1 + output2得到下一個block的輸入

6.這里步驟3的下分支輸出preds會與其他block的輸出preds合並,假設有nstack個同樣的block,把nstack個[batch_size, 16, 64, 64]合並成[batch_size, nstack, 16, 64, 64],用來計算loss)

 

3.3 Stacked Hourglass with Intermediate Supervision

通過端到端疊加多個hourglass,將一個hourglass的輸出作為輸入輸入到另一個hourglass,我們進一步構建了網絡架構。這為網絡提供了一種重復bottom-up、top-down推理的機制,允許對整個圖像的初步估計和特征進行重新評估。這種方法的關鍵是對中間熱圖的預測,我們可以據此應用損失。預測是通過每個hourglass產生的,網絡有機會處理局部和全局上下文的特征。后續的hourglass模塊允許再次處理這些高級特性,以進一步評估和重新評估更高層次的空間關系。這與其他姿態估計方法類似,這些方法在多個迭代階段和中間監督下表現出了較強的性能[18,19,30]。

考慮只使用單個hourglass模塊而應用中間監督的局限性。在管道中,什么是生成初始預測集的合適位置?大多數高階特征只在低分辨率出現,除非在最后發生上采樣。如果監控是在網絡進行上采樣之后提供的,那么在更大的全局上下文下,這些特征就無法相互重新評估。如果我們想讓網絡最好地改進預測,這些預測不能只在局部尺度上進行評估。與其他聯合預測的關系,以及總體背景和對整個圖像的理解是至關重要的。在池化之前更早地應用監督是可能的,但在這一點上,給定像素上的特征是處理相對局部的接受域的結果,因此忽略了關鍵的全局線索。

使用堆疊的hourglass進行重復的bottom-up、top-down推理可以減輕這些擔憂。局部和全局的線索被整合到每個hourglass模塊中,且要求網絡產生早期預測需要它對圖像有一個高層次的理解,同時只需要通過整個網絡的一部分就能得到這樣的效果。bottom-up、top-down處理的后續階段允許更深入地重新考慮這些特性。

這種在尺度之間來回切換的方法尤其重要,因為保留特征的空間位置對於完成最后的定位步驟至關重要。關節的精確位置是網絡做出其他決策時必不可少的線索。對於像姿態估計這樣的結構化問題,輸出是許多不同特征的相互作用,這些特征應該聚集在一起,形成對場景的一致理解。相互矛盾的證據和解剖上的不可能性是很大的證據,表明在這條路線上的某個地方犯了錯誤,通過來回切換,網絡可以在反復考慮特征的整體一致性的同時保持精確的局部信息。

我們通過一個額外的1x1卷積將中間預測映射到更多的通道,從而將它們重新整合到特征空間中。這些特性被添加回 來自hourglass的中間特性,以及來自前一個hourglass階段的特性輸出(如圖4所示)。在最終的網絡設計中,使用了8個hourglass。重要的是要注意的是,權重不是在hourglass模塊之間共享的,並且一個損失應用於所有hourglasses的預測,使用的是相同的ground truth。損失和ground truth的細節描述如下。

 

3.4 Training Details

我們在兩個基准數據集FLIC[1]和MPII Human Pose[21]上評估我們的網絡。FLIC由取自電影的5003張圖像(3987張訓練,1016張測試)組成。這些圖像被標注在上半身,大多數的人物都面對着相機。MPII Human Pose由帶有多人標注的大約25k張圖像組成,提供40k個標注樣本(28k個訓練,11k個測試)。沒有提供測試標注,所以在我們所有的實驗中,我們都是在訓練圖像的子集上進行訓練,同時在大約3000個樣本的heldout驗證集上進行評估。MPII由各種各樣的人類活動的圖像組成,帶有一個挑戰性的廣泛鉸接的全身姿勢數組。

在給定的輸入圖像中,常常可以看到多個人物,但是如果沒有圖形模型或其他后處理步驟,圖像必須為網絡傳遞所有必要的信息,以確定哪一個人值得注釋。我們通過訓練網絡來專門標注圖像中心的人來處理這個問題。這是在FLIC中根據torsobox注釋沿x軸居中完成的——不進行垂直調整或縮放歸一化。對於MPII來說,提供給所有圖像縮放和中心注釋是標准的。對於每個樣本,這些值用於裁剪目標人物周圍的圖像。然后將所有輸入圖像的大小調整為256x256像素。我們進行數據增強,包括旋轉(+/- 30度)和縮放(.75-1.25)。我們避免了圖像的平移增強,因為目標人的位置是決定網絡應該注釋誰的關鍵線索。

該網絡使用Torch7[48]進行訓練,為了優化,我們使用rmsprop[49],學習率為2.5e-4。在12 GB的NVIDIA TitanX GPU上進行訓練大約需要3天時間。在驗證精度停滯后,我們將學習率降低了1 / 5。Batch normalization[13]也用於改進訓練。網絡的一次前向傳播需要75毫秒。為了生成最終的測試預測,我們通過網絡運行原始輸入和圖像的flip版本,並將熱圖結果平均起來(在驗證上平均提高了1%)。網絡的最終預測是給定關節的熱圖的最大激活位置。

使用與Tompson等人相同的技術[15]用於監督。利用Mean-Squared Error(MSE)損失將預測的熱圖與以關節位置為中心的二維高斯分布(標准差為1 px)的ground-truth熱圖進行比較。為了提高在高精度閾值下的性能,在轉換回圖像的原始坐標空間之前,預測將在其下一個最高鄰居的方向上偏移四分之一像素。在MPII人體姿態中,一些關節沒有相應的ground-truth值標注。在這些情況下,關節要么被截斷,要么被嚴重遮擋,所以為監督提供了值都為零的ground-truth熱圖。

 

4 Results

4.1 Evaluation

評估是使用 the standard Percentage of Correct Keypoints (PCK)度量來完成的,該度量報告了在ground-truth的標准化距離內的探測的百分比。對於FLIC,距離由軀干大小歸一化,對於MPII,由頭部大小的一部分(稱為PCKh)歸一化。

FLIC:結果見圖6和表1。我們在FLIC上的結果非常有競爭力,肘部達到99% PCK@0.2,腕部達到97%。值得注意的是,這些結果是以觀察者為中心的,這與其他人如何評價他們在FLIC上的輸出是一致的。

 

MPII:我們在MPII Human Pose數據集的所有關節上取得了最先進的結果。所有數字見表2,PCK曲線見圖7。在腕部、肘部、膝蓋和腳踝等困難的關節上,我們比最新的研究結果平均提高了3.5% (PCKh@0.5),平均錯誤率從16.3%下降到了12.8%。最終肘部精度為91.2%,腕部精度為87.1%。網絡在MPII上所做的示例預測如圖5所示。

 

 

4.2 Ablation Experiments

我們探討了兩個主要的設計選擇:將hourglass模塊堆疊在一起的效果,以及中間監管的影響。這些並不是相互獨立的,因為我們在如何應用中間監督方面受到了限制,其取決於整體的建築設計。單獨應用,每一個都對性能有積極的影響,一起使用的話,我們能看到進一步提高訓練速度和最終的姿態估計性能。我們來看看幾種不同網絡設計的訓練速度。其結果如圖8所示,顯示了隨着訓練的進行,驗證集的平均准確率。精度度量考慮所有的關節,不包括那些與頭部和軀干有關的關節,以便更容易區分不同的實驗。

首先,為了探究堆疊hourglass設計的效果,我們必須證明性能的變化是架構形狀的函數,而不是歸功於更大、更深入的網絡導致的容量增加。為了進行比較,我們從一個由8個hourglass模塊堆疊在一起的基線網絡開始工作。每個hourglass在每個分辨率上都有一個殘差模塊,如圖3所示。我們可以為各種網絡安排打亂這些層。hourglass數量的減少會導致每個hourglass的容量增加。例如,一個對應的網絡可以堆疊四個hourglass,並且在每個分辨率下有兩個連續的殘差模塊(或者兩個hourglass和四個殘差模塊)。如圖9所示。所有的網絡共享相同的參數和層數,盡管在使用更多的中間監督時略有不同。

為了查看這些選擇的效果,我們首先比較在hourglass的每個階段有4個殘差模塊的two-stacked網絡(紅色,即一個hourglass由4個殘差模塊組成),以及有8個殘差模塊的單個hourglass(藍色,可見紅色效果更好)。在圖8中,它們分別稱為HG-Stacked和HG。在使用stacked設計時,盡管擁有大致相同的層數和參數,但在訓練方面可以看到適度的改進。接下來,我們考慮中間監督的影響。對於two-stacked網絡,我們按照本文所描述的程序去應用監督。將同樣的想法應用到單個hourglass中是很重要的,因為高階全局特征只在較低分辨率下出現,而且跨尺度的特征直到后期才會合並。我們探索在網絡的不同點上應用監督,例如在池化之前或之后以及在不同的分辨率下。性能最好的方法HG-Int(綠色)如圖8所示,在最后的輸出分辨率之前,以及在接下來的兩個最高分辨率上采樣后施加中間監督(所以在三個地方加了監督,即圓球標記)。這種監督確實改善了性能,但還不足以超過包含stacking(HG-Stacked_int,孔雀藍色)的改善。

在圖9中,我們比較了具有大致相同數量參數的2-、4-和8-stack模型的驗證准確性,並包括它們中間預測的准確性。最終表現均有輕微改善,由87.4%上升至87.8%再至88.1%,。這種影響在中間階段更為顯著。例如,在每一個網絡的中間部分,相應的中間預測精度分別為:84.6%,86.5%和87.1%。請注意,8-stack網絡一半的准確率,僅稍微低於2-stack網絡的最終准確率。 

觀察網絡早期所犯的錯誤以及后來所糾正的錯誤是很有趣的。圖9顯示了一些示例。常見的錯誤表現為把別人的關節搞錯了,或者把左右搞錯了。對於運行的圖形,從最終的熱圖可以明顯看出,對於網絡來說,左右之間的決定仍然有點模糊。鑒於圖像的外觀,這種混淆是合理的。一個值得注意的情況是中間的例子,網絡最初激活了在圖像中可見的手腕(即中間那行的第二列的灰圖)。經過進一步的處理,熱圖在原來的位置上完全沒有激活,而是為被遮擋的手腕選擇了一個合理的位置。

 

5 Further Analysis

5.1 Multiple People

當一個圖像中有多個人物時,一致性的問題就變得尤為重要。網絡必須決定對誰進行標注,但是在交流誰應該得到標注時,選擇是有限的。對於本工作的目的,提供的唯一信號是目標人員的中心和尺度,相信輸入將足夠清晰去解析。不幸的是,當人們非常接近或甚至重疊時,這偶爾會導致不明確的情況,如圖10所示。由於我們正在訓練一個系統來為單個人生成姿態預測,因此在不明確的情況下的理想輸出將只對一個人物的關節做出承諾。即使預測的質量較低,這也將顯示出對手頭任務的更深理解。估計手腕的位置而不考慮手腕可能屬於誰,這不是位姿估計系統所期望的行為。

圖10中的結果來自一個MPII測試圖像。該網絡必須對男孩和女孩進行預測,為了做到這一點,需要提供他們各自的中心和比例標注。使用這些值裁剪網絡的輸入圖像,得到該圖形的第一個和第三個圖像。在一幅720x1280像素的圖像中,這兩位舞者的中間標注僅相差26像素。定性地說,兩個輸入圖像之間最明顯的區別是尺度的變化。這種差異足以使網絡完全改變其估計,並預測正確數字的標注。

針對多人的更全面的標注管理超出了本工作的范圍。該系統的許多故障案例都是由多個人關節混淆導致的,但在許多人物嚴重重疊的示例中,該網絡有希望適當地挑出一個任務進行標注。

 

5.2 Occlusion

遮擋(occlusion)的性能很難評估,因為它經常分為兩種不同的類別。第一種情況是關節是不可見的,但它的位置在給定的圖像上下文中是明顯的。MPII通常為這些關節提供grouth-truth位置,並且附加注釋表明它們缺乏可視性。另一方面,另一種情況是,完全不知道某個關節的位置。例如,只有上半身可以看到的圖像。在MPII中,這些關節沒有與它們相關聯的ground truth注釋。

我們的系統沒有使用額外的可見性注釋,但是我們仍然可以看看可見性對性能的影響。在我們拉出的驗證集中,大約75%的帶有注釋的肘部和手腕都是可見的。在圖11中,我們比較了整個驗證集的平均性能、四分之三可見關節的性能和其余四分之一不可見關節的性能。當只考慮可見關節時,手腕的精度從85.5%上升到93.6%(驗證性能略低於測試集的87.1%)。另一方面,在排除的遮擋關節上的性能為61.1%。對於肘關節,可見關節的精確度從基線的90.5%上升到95.1%,而遮擋關節的精確度則下降到74.0%。遮擋顯然是一個重大的挑戰,但網絡仍然在大多數情況下作出了強有力的估計。在很多例子中,網絡預測和ground-truth標注在有效位置上可能不一致,圖像的模糊性意味着無法確定哪一個是真正正確的。

 

我們還考慮了更極端的情況,關節可能嚴重遮擋或截斷,因此沒有任何注釋。在評估位姿估計系統時使用的PCK度量並不能反映網絡對這些情況的識別程度。如果沒有為一個關節提供ground truth注釋,則不可能評估系統所做預測的質量,因此不計入最終報告的PCK值。正因為如此,即使對完全遮擋或截斷的關節的預測毫無意義,對所有關節的預測也沒有害處。在一個真實的系統中使用,一定程度的微位移是必要的,並且理解在一個特定的關節上不能做出好的預測是非常重要的。我們觀察到,我們的網絡為是否一個ground truth注釋可用於一個關節提供了一致和准確的預測。

我們使用踝關節和膝關節來進行分析,因為它們最常被遮擋。下肢經常從圖像中裁剪出來,如果我們總是想象我們網絡進行所有關節預測,在這些情況下做出的荒謬的下身預測會讓示例姿勢看起來不可接受。為了簡單地過濾這些情況,我們研究了在給定相應的熱圖激活情況下,人們如何確定關節標注的存在。我們考慮對熱圖的最大值或平均值進行閾值設定。其精確-召回曲線如圖11所示。我們發現,僅根據熱圖的平均激活度,就可以正確評估AUC為92.1%的膝關節注釋和AUC為96.0%的踝關節注釋的存在。這是對2958個樣本的驗證集進行的,其中16.1%的可能的膝蓋和28.4%的可能的腳踝沒有ground truth注釋。這是一個很有希望的結果,證明了熱圖可以作為一個有用的信號來指示圖像中截斷和嚴重遮擋的情況。

 

6 Conclusion

我們演示了stacked hourglass網絡產生人體姿態估計的有效性。該網絡通過一個簡單的機制來對最初的預測進行重新評估和評估,從而處理了一系列多樣化和具有挑戰性的姿態。對於訓練網絡來說,中間監督至關重要,在堆疊的hourglass模塊的背景下工作效果最好。雖然網絡仍然不能很好地處理一些困難的情況,但是總的來說,我們的系統對各種挑戰顯示出了強大的性能,包括嚴重遮擋和多人近距離接觸的情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM