1. 程式人生 > >【姿態估計】DeepPose: 基於深度神經網路的人體姿態估計 Human Pose Estimation via Deep Neural Networks

【姿態估計】DeepPose: 基於深度神經網路的人體姿態估計 Human Pose Estimation via Deep Neural Networks

Alexander Toshev Christian Szegedy
Google
1600 Amphitheatre Pkwy
Mountain View, CA 94043
toshev,[email protected]

原文地址: https://arxiv.org/abs/1312.4659
引用請註明出處。

摘要

作者提出了一種基於深度神經網路(DNN)的人體姿態估計方法。姿態估計被公式化為針對身體關節的基於DNN的迴歸問題。作者提出了一系列這樣的DNN迴歸量。這種方法能夠產生高精度的姿態估計。該方法具有以整體方式推理姿態的優點,利用了深度學習的最新進展,並且具有簡單但強有力的表述。作者在各種各樣的真實世界影象的四個學術benchmark上與經典方法進行了比較,提供了詳細的實證分析,有更好的表現。

1. 引言

人體姿態估計的問題(定義為人體關節的定位問題)在計算機視覺社群中受到了極大的關注。如 圖1 所示,人們可以看到這個問題的一些挑戰 :有些關節很大,而有些關節小到幾乎不可見,有些關節被遮擋(occlusions),此外還有捕捉背景的需要。該領域的歷史工作的動力主要源於第一個挑戰,即需要在大空間中搜索所有可能的關節姿態。基於部件的模型可以自然地模擬關節模型([16, 8]) 。近年來,已經提出了各種具有有效推理的模型([6, 19])。

fig1
圖1 除了關節的極端可變性外,許多關節幾乎看不見。在左圖中可以猜測右臂的位置,因為能看到人體的其餘部分並預測到人的動作或活動。同樣,右側人的左半身完全看不見。這些是整體推理需求的例子。DNN可以自然地提供這種推理。

然而,上述效率是以有限的表現力——區域性檢測器的使用為代價實現的,它在許多情況下檢測單個部件,並且最重要的是通過僅對身體部位之間的所有相互作用的一小部分進行建模。這些限制,如圖1所示,已經被發現,並提出了以整體方式推理姿態的方法[15, 21]但在現實問題上取得的成功有限。

在這項工作中,作者歸納了人類姿態估計的整體觀點,並利用深度學習的最新進展提出了一種基於深度神經網路(DNN)的新演算法。DNN在視覺分類[14]和目標定位[23, 9]等任務方面表現出色。然而,將DNN應用於鉸接物體的精確定位的問題在很大程度上仍未得到解決。在本文中,作者試圖闡明這個問題,並基於DNN提出簡單而強大的整體人體姿態估計方法。

作者將姿態估計表示為聯合迴歸問題,並展示如何在DNN設定中成功對映它。這種方法使用完整影象和7層通用卷積DNN作為輸入將每個身體關節的位置進行迴歸。這種彷彿有兩個優點。首先,DNN能夠捕獲每個身體關節的完整背景——每個關節迴歸器使用完整影象作為訊號。其次,該方法比基於圖形模型的方法更容易制定 - 無需明確設計零件的特徵表示和檢測器;無需明確設計模型拓撲和關節之間的互動。相反,作者表明可以為這個問題學習通用的卷積DNN。

此外,作者提出了一系列基於DNN的姿態預測器。這種級聯能提高聯合定位的精度。從初始姿態估計開始,基於完整影象,作者學習基於DNN的迴歸量,通過使用更高解析度的子影象來改進聯合預測。

作者對他們state of art級別的結果,或者超過state of art的結果顯示於四種廣泛使用的基準測試。作者表明,作者的方法在人的影象上表現良好,這些人在外觀和關節方面表現出很強的變化。最後,作者通過跨資料集評估展示了泛化效能。

2. 相關工作

從計算機視覺的早期就提出了一般性地表達鉸接物體,特別是人體姿態作為部件圖形的想法[16]。Fishler和Elschlager提出了Pictorial Strictures(PSs)[8]方法,由Felzenszwalb和Huttenlocher [6] 使用距離變換技巧讓這個方法易於實現。隨後研究人員開發了具有實際意義的各種基於PS的模型。

然而,上述易處理的模型也具有以下限制:基於樹的姿態模型具有簡單的binary potential,這不依賴於影象資料。因此,最近的研究專注於豐富模型的代表能力,同時保持易處理性。之前這一目標的嘗試是基於更豐富的部分探測器[19, 1, 4]。最近,研究人員提出了表達複雜關節關係的各種模型。楊和Ramanan [27] 使用部件的混合模型。Johnson和Everingham研究了在全模型尺度下具有多個PS的混合模型[13]。Tian等人在層次模型中捕獲了更豐富的高階空間關係[25]。捕獲高階關係的一種不同方法是通過依賴於影象的PS模型,這可以通過全域性分類器來估計[26, 20, 18]。

由於以整體方式推理姿態的理論已經顯示出有限的實用性。Mori和Malik [15] 嘗試為每個測試影象找到一組標記影象中最接近的樣本並轉移關節位置。Shakhnarovich等人使用區域性敏感雜湊採用了類似的最近鄰設定[21]。最近,Gkioxari等人 [10] 提出用於零件配置的半全域性分類器。這個公式在在真實資料上已經顯示出非常好的結果,但是,它基於線性分類器,其表達方式比作者的表達更少,並且僅在手臂上進行測試。最後,Ionescu等人採用了姿態迴歸的思想[11], 他們嘗試去推理3D姿態。

與作者最接近的工作是使用卷積NN和鄰域分量分析來回歸代表姿態的嵌入點[24],但是,這項工作不採用級聯網路。級聯DNN迴歸已被用於面部特徵點識別的定位[22]。關於面部姿態估計的相關問題,Osadchy等 [17] 使用對比度損失採用基於NN的姿態embedding訓練。

3. 姿態估計的深度學習模型

作者使用以下符號。為了表達姿態,作者在定義的姿態向量中編碼所有 k k 個身體關節的位置 y = ( . . . , y i T , . . . ) T , i { 1 , . . . , k } y =(..., y_i^T,...)^T,i\in \{1,...,k\} ,其中 y i y_i 包含第i個連線點的 x x y y 座標。帶標籤的影象是用 ( x , y ) (x,y) 表示,其中 x x 代表影象資料, y y 是ground truth。

此外,由於關節座標是絕對影象座標,因此要將它們標準化為限制人體或其部分的框 b b 。在一個簡單的情況下,框可以表示完整的影象。這樣的方框由其中心 b c R 2 b_c\in\R^2 以及寬度 b w b_w 和高度 b h b_h 定義: b = ( b c b w b h ) b =(b_c,b_w,b_h) 。然後連線點 y i y_i 可以通過框中心進行平移,並通過框大小進行縮放,作者將其稱為 b b 的歸一化:

(1) N ( y i ; b ) = [ 1 / b w 0 0 1 / b h ] ( y i b c ) N(y_i;b)=\left[\begin{matrix}1/{b_w}&0\\0&1/b_h\end{matrix}\right](y_i-b_c)\tag{1}

此外,作者可以對姿態向量 N ( y ; b ) = ( . . . , N ( y i ; b ) T , . . . ) T N(y;b)=(...,N(y_i; b)^T ,...)^T 的元素應用相同的歸一化,從而得到歸一化的姿態向量。最後稍微濫用以下符號,作者使用 N ( x ; b ) N(x; b) 來表示邊界框 b b 對影象 x x 的裁剪,這實際上是通過框來規範化影象。為簡潔起見,作者用 N ( ) N(·) 來表示歸一化, b b 是完整的影象框。

fig2
圖2 左:基於DNN的姿態迴歸的示意圖。作者用相應的尺寸視覺化網路層,其中卷積層為藍色,而完全連線的層為綠色。作者不顯示引數自由的層。右:在s個階段,將精細化迴歸應用於子影象以改進前一階段的預測。

3.1 基於DNN迴歸的姿態估計

在這項工作中,作者將姿態估計的問題視為迴歸,其中作者訓練並使用函式 ψ ( x ; θ ) R 2 k ψ(x;θ)\in \R^{2k} ,對於影象 x x ,該函式迴歸歸一化的姿態向量,其中 θ θ 表示該模型的引數。因此,使用方程(1) 進行歸一化變換,絕對影象座標中的姿態預測 y y^∗ 可以被這樣得到:

(2) y = N 1 ( ψ ( N ( x ) ; θ ) ) y^∗=N−1(ψ(N(x); θ))\tag{2}

儘管這個式子很簡單,但該方法的功效和複雜性是 ψ ψ 決定的,它基於卷積深度神經網路(DNN)。這種卷積網路由幾個層組成——每個層都是線性變換,但最後一層是非線性變換。第一層將預定義大小的影象作為輸入,並且其大小等於三個顏色通道乘以畫素數。最後一層輸出迴歸的目標值,在作者的例子中是 2 k 2k 個座標。

作者將 ψ ψ 的結構建立在Krizhevsky等人[14] 用於影象分類的工作基礎之上。它在目標定位方面也顯示出優異的結果[23]。簡而言之,該網路由7層組成(見 圖2左 )。 C C 表示卷積層, L R N LRN 表示區域性響應歸一化層, P P 表示池化層, F F 表示完全連線層。只有 C C F F 層包含可學習的引數,而其餘的引數是自由的。 C C F F 層都包括線性變換,並且線上性變換後是非線性變換,在作者的例子中的非線性變換是整流線性單元。對於 C C 層,它的大小定義為寬度×高度×深度,其中前兩個維度具有空間含義,而深度是濾波器的數量。如果作者在括號中寫出每層的大小,那麼可以簡潔地描述網路: C ( 55 55 96 ) L R N P C ( 27 27 256 ) L R N P C ( 13 13 384 ) C ( 13 13 384 ) C ( 13 13 256 ) P F ( 4096 ) F ( 4096 ) C(55*55*96)-LRN-P-C(27*27*256)-LRN-P-C(13*13*384)-C(13*13*384)-C(13*13*256)-P-F(4096)-F(4096)