肖澳文 ,劉 軍*,張蘇沛 ,杜 壯 ,孫思琪
1.智能機器人湖北省重點實驗室(武漢工程大學),湖北 武漢 430205;
2.武漢工程大學計算機科學與工程學院,湖北 武漢 430205
三維人體姿態估計是非常難的一個研究課題,通常如果不借助一些穿戴設備無法直接獲取三維的人體姿態[1],而三維人體姿態的估計在人體行為的理解方面有著不可估量的研究價值[2]。人體姿態估計的研究從二維到三維的轉換過程,可以看作是一個三維重建的過程,目前已有的三維重建方法[3-5]在這一過程中可以得到好的應用。由于卷積神經網絡(convolutional neural network,CNN)的優秀學習能力[6-9],通過該網絡訓練模型是最好的選擇之一。隨著計算機動畫和計算機視覺等多媒體技術的快速發展,對人體姿態進行準確的三維預測估計,在智能監控、體育訓練、醫療看護以及影視制作等領域具有較大的應用價值[10]。
Bogo等[11]在2016年的ECCV會議上首次提出一種三維人體姿態估計方法,該方法首先預測二維人體關節位置,然后使用SMPL模型來創建三維人體形狀網格,該網格能同時捕捉人體姿態和形狀。Zhou等[12]在2016年的CVPR會議上提出一種全序列的期望-最大化算法,先訓練一個深度完全卷積神經網絡預測二維人體關節位置的不確定性映射,然后通過該算法實現三維人體姿態估計。2017年的CVPR會議上,Pavlakos等[13]提出一種端對端訓練的方法,先輸入一張彩色圖像,輸出人體三維姿態信息,然后采用CNN進行端對端訓練,將人體姿態看作N個關節點,每個關節點有一個三維坐標(x,y,z),根據關節點坐標估計整體的三維姿態。2016年CVPR會議上,卡內基梅隆大學Shih-En Wei團隊[14]提出了卷積姿態機(Convolutional Pose Machines,CPM)方法,該方法先計算每一尺度下的部件置信度,然后累加所有尺度的置信度,最后取每個部件圖中置信度最大的點做為部件位置。
本文提出一種面向視頻的三維人體姿態估計方法,首先調用攝像頭拍攝人體視頻做為CNN輸入,對視頻中的人體進行檢測定位。然后對檢測到的人體單獨進行二維姿態估計,獲取人體二維關節點位置,將二維人體姿態估計結果與三維人體姿態重建相結合,用網格劃分三維空間。通過將二維位置坐標提升為三維,投射到有效的三維姿勢空間,估計出每個人的三維姿態,各自建立對應的三維人體姿態模型。相比傳統人體姿態估計,本文研究結果更加立體,視覺效果明顯增強。相比傳統的三維人體姿態估計方法,本文方法比Ionescu等[15]和Zhou等[12]在人體行為上的測試平均誤差分別提高了31.8%和5.7%,對于視頻中的人體檢測,二維姿態識別,三維姿態重建均有良好的效果。
CNN是一種含有深度結構的前饋神經網絡模型,包含輸入層、隱含層和輸出層,其核心隱含層的基本結構包括卷積層、池化層和全連接層,卷積層利用卷積核提取輸入數據的抽象特征,通過局部連接和權值共享來減少參數數量,輸出特征圖至池化層。池化層進行特征選擇和信息過濾,通過下采樣來進一步減小神經元個數,簡化網絡計算復雜度。全連接層負責連接所有的特征。卷積核的工作原理為:

其中,(i ,j) ∈{0 ,1,…Ll+1} ,b是偏差量,Zl和Zl+1表示第l+1層的卷積輸入和輸出特征圖,Ll+1為Zl+1的特征圖尺寸。Z(i,j)對應特征圖的像素,K為特征圖的通道數,卷積層參數中,f是卷積核大小、s0是卷積步長,p是填充層數。
采用一種新的多階段卷積神經網絡,通過端到端的訓練,估計二維和三維人體關節點的位置。在 Shih-En Wei團隊[14]的 CPM 卷積神經網絡模型基礎上引入了二維融合層和三維人體姿態概率預測模型,將二維人體姿態提升為三維,并將骨骼結構的三維信息傳播到二維卷積層,根據已編碼的三維信息庫完成三維人體姿態的預測估計。
三維人體姿態估計模型由特征提取、二維姿態預測、二維融合層、最終轉換等4個不同的模塊組成,如圖1所示。

圖1 三維人體姿態估計模型結構圖Fig.1 Structure diagram of three-dimensional human pose estimation model
1)特征提取:對單幀視頻的三原色(red-green blue,RGB)圖像進行關節點估計獲得人體的骨骼特征,將基于CNN的置信圖的輸出作為一個新層的輸入,該層使用預訓練的三維人體姿態概率預測模型將投影的二維姿態轉換為三維。
2)二維姿態預測:將前一層估計的三維姿態投影回圖像平面,生成一組新的投影姿態置信圖,上述映射封裝了人體姿態間的三維依賴關系。其中,基于CNN的預測置信圖沿用CPM方法提出的計算思想,使用一組卷積層和池化層,將從圖像學習中提取的特征與前一階段獲得的置信圖相結合,預測更新后的二維人體關節點的置信圖。
3)二維融合層:在每個階段的最后一層學習權重,將通過CNN預測的二維姿態置信圖和投影后的三維姿態置信圖映射融合成一個置信圖傳遞到下一階段的單一評估。
4)最終轉換:將最終階段輸出產生的置信圖投影至三維空間,并使用三維人體姿態概率預測模型將二維姿態轉換為三維,從而給出最終的三維姿態估計圖像。
整個人體三維姿態估計的過程包含有6個上述的結構,代表訓練的不同階段,每個階段都會輸出一組置信圖來映射二維關節點的位置坐標。每一階段的輸出置信圖映射及圖像都做為下一階段的輸入。在三維人體姿態概率預測模型中,三維姿態層負責將二維關節點的位置坐標提升為三維,并將它們投射到有效的三維姿勢空間中。然后,將通過CNN預測的二維姿態置信圖和投影后的三維姿態置信圖合并輸出一組針對每階段的二維關節點坐標位置。二維和三維坐標位置的準確性在各階段都會逐步提高。每個階段的損失只需要用二維位姿的注釋來表示,而不需要三維。整個網絡架構完全可逆,并可以通過反向傳播實現端到端的訓練。
Human3.6M數據集[11]的數據采集包括4個校準攝像機的高分辨率50 Hz視頻,其通過高速運動捕捉系統精確的三維人體關節位置和關節角度,包含24個像素級身體部位標簽,保證了準確的捕獲和同步圖像數據。數據集使用Human Solutions的3傳感器3D掃描儀掃描所有演員,稱為Vitus Smart LC3。此數據集還包含TOF數據、演員的3D激光掃描圖像、準確的背景減法和人物邊界框等等。應用領域為預先計算的圖像描述,可視化和判別性人體姿勢預測的軟件,以及測試集的性能評估。數據集根據骨架給出姿勢數據,使用相機參數投影三維人體關節位置并獲得非常準確的二維人體姿態信息。為保證數據的一致性和使用方便性,使用相同的32個人體關節骨架。在測試集中,為減少相關的關節數量,每只手和腳只保留一個關節。獲得的網格由Human Solution ScanWorks軟件預處理。
模型在Human3.6M數據集上進行訓練和測試,該數據集由360萬個精確的三維人體姿態組成。這是一個由5名女性和6名男性受試者組成的視頻和mocap數據集,從4個不同的角度拍攝,顯示他們進行的典型活動(坐、走路、打招呼、吃東西等)。動作示范如圖2所示。

圖2 Human3.6M數據集動作示范:(a)打招呼,(b)吃東西,(c)坐,(d)走路Fig.2 Demonstration of Human 3.6 M dataset:(a)greeting,(b)eating,(c)sitting,(d)walking
模型利用Human3.6M數據集進行訓練,其中包含視頻圖像的訓練,該估計模型訓練完成后,測試也通過視頻圖像進行。本文獲取視頻圖像的方法是直接調用攝像頭,利用攝像頭拍攝下的包含人體的視頻圖像,測試模型的三維人體姿態估計效果,其中包括單人和多人的視頻場景。
實驗運行環境:服務器配置為:CPU[Interl(R)Core(TM)i7-8700 CPU@3.20 GHz],顯卡(NVIDA GeForce GTX 1080Ti),系統:64位 Ubuntu 16.04 LTS,內存:16 GB,磁盤:(3 TB),固態硬盤(256 GB)。
實驗平臺為:Tensorflow 1.4.0,OpenCV 3.0,Python 3.5。
實驗數據集:Human3.6M數據集。
實驗采用攝像頭拍攝獲得視頻作為輸入,并獲得二維關節點和三維姿態估計結果,實驗結果如圖3所示。由圖3(a)和圖3(b)可以看出本文結果在復雜場景下首先能準確識別出目標人體,并獲得人體二維姿態的關鍵關節點及骨骼線條,不同的部位用不同顏色的線條表示,展示出了頭部和四肢的關節點位置。
三維人體姿態估計結果如圖3(c)和圖3(d)所示,結果能準確反映人體三維關節姿態及三維網格空間中人體各部位所在位置的三維空間坐標,三維人體估計模型一共有16個關鍵關節點,均在圖3(c)和 3(d)中標出,不同部位用不同顏色的線條表示,方便區分。

圖3 視頻的三維人體姿態估計:(a)輸入視頻,(b)關節點演示圖,(c)左邊人體三維估計,(d)右邊人體三維估計Fig.3 Three-dimensional human pose estimation of videos:(a)input videos,(b)demonstration of joint points,(c)three-dimensional pose estimation of left person,(d)three-dimensional pose estimation of right person
基于概率主成分分析(probabilistic principal component analysis,PPCA)方法[16],對該三維人體姿態估計模型做出了在Human3.6M數據集上部分人體動作行為的姿態估計測試,跟傳統的方法估計的誤差對比結果如表1所示。Ionescu等[15]提出Human3.6數據集,并對該數據集進行了傅里葉核近似測試。Zhou等[12]用二維姿勢標注來訓練CNN聯合回歸量和單獨的3D mocap數據集,從而學習三維稀疏基礎來建立三維估計模型。本文模型的姿態估計測試在各個人體動作行為上的誤差均為最低值,在吃東西行為上誤差為79.12 mm,在坐行為上誤差為118.96 mm,在走路行為上誤差為78.28 mm,在打招呼行為上為95.17 mm,性能相比前兩種方法均有不同程度的提升,平均誤差達到92.88 mm,相比Ionescu等[15]的傅里葉核近似法提高了31.8%,相比Zhou等[12]的三維稀疏回歸法提高了5.7%,估計效果明顯更加優越。3種方法平均誤差對比如表1所示。

表1 不同行為下姿態估計測試誤差對比Tab.1 Comparison of test errors of human pose estimation in different behavior videos mm
本文提出了一種基于CNN的人體姿態識別方法,從視頻中估計三維的人體姿勢,在估計誤差上優于傳統的解決方案。該方法能有效地將視頻圖像中的人體姿態從二維升級到三維空間,可以在單人和多人場景下識別出每一個人的三維人體姿態,輸出三維人體模型圖。后續在三維人體姿態估計領域的研究中,會重點關注對輸入圖像的預處理,減弱圖像陰影對圖像識別的影響,使得識別效果更加準確。同時,做到實時的視頻人體姿態識別也將是今后研究的方向之一。