張宜春,黃一鳴,潘達(dá)
(1.中國藝術(shù)科技研究所,北京 100007;2.中國傳媒大學(xué)媒體融合與傳播國家重點實驗室,北京 100024)
人體姿態(tài)估計(Human Pose Estimation,HPE)是計算機視覺領(lǐng)域的高級任務(wù)之一,它通過對計算機輸入一幅含有人體的圖像或者一段視頻,從而使人們獲得圖像或視頻中人體骨架關(guān)鍵點位置[1]。人體姿態(tài)估計在現(xiàn)實生活中的應(yīng)用十分廣泛,它可以應(yīng)用于多個領(lǐng)域,例如:動作識別、姿態(tài)跟蹤以及基于計算機視覺的人體動作捕捉等。
人體動作捕捉技術(shù),簡稱動捕(Mocap),意為記錄并處理人的動作行為的技術(shù)。目前人體動作捕捉技術(shù)應(yīng)用廣泛,例如在體育、娛樂、醫(yī)療健康等領(lǐng)域動捕技術(shù)都有所涉及。根據(jù)使用設(shè)備與實現(xiàn)技術(shù)的不同,主流的人體動作捕捉技術(shù)可分為以下三種類型——光學(xué)動捕、慣性動捕和視覺動捕。光學(xué)動捕需要較大捕捉空間且設(shè)備昂貴、部署繁瑣,但是其優(yōu)點是精度極高,發(fā)展成熟。慣性動捕由慣性傳感器組成,優(yōu)點是使用靈活、性價比較高、便攜性強;缺點是易受干擾,長時間使用易產(chǎn)生估計偏移量,不夠精確[2]。視覺動捕是一種僅需要攝像頭和計算機便可實現(xiàn)的動捕方法,典型實現(xiàn)方法是使用Kinect深度相機進(jìn)行人體捕捉[3]。目前只使用普通攝像頭實現(xiàn)動作捕捉的技術(shù)也日益發(fā)展,這使得視覺動捕成本更加低廉、部署更加便捷、前景更加廣闊。
本文主要研究基于姿態(tài)估計技術(shù)的視覺動捕技術(shù)。目前人體姿態(tài)估計技術(shù)根據(jù)輸出結(jié)果的維度劃分,可以分成二維人體姿態(tài)估計和三維人體姿態(tài)估計。
二維人體姿態(tài)估計,即給計算機輸入圖像信息后可以得到圖像中人體關(guān)鍵點的二維預(yù)測坐標(biāo)。二維人體姿態(tài)估計根據(jù)同一幅圖中估計出的最多人數(shù),進(jìn)一步劃分為單人二維姿態(tài)估計和多人二維姿態(tài)估計;二維人體姿態(tài)估計根據(jù)檢測關(guān)鍵點的方式,又分為自頂向下(Top-Down)以及自底向上(Bottom-Up)的方法。自底向上的方法是先通過人體檢測器判斷出人體檢測框,然后通過多次剪裁修正,最后對每個檢測框進(jìn)行人體關(guān)鍵點識別,這種方法的精度往往較高,但是識別的速度較慢。自底向上的方法則是首先根據(jù)人體關(guān)鍵點熱力圖預(yù)測人體關(guān)鍵點可能存在的區(qū)域,再利用諸如匈牙利算法等方法去將關(guān)鍵點組合成一個完整的人體骨架,這種方法的實時性較優(yōu),但是難以達(dá)到較高的檢測精度,應(yīng)用場景受到一定的限制。
由于二維人體姿態(tài)估計無法預(yù)測出人體深度信息,因此,越來越多的研究者著眼于三維人體姿態(tài)估計。三維人體姿態(tài)估計旨在通過輸入的二維圖像或視頻,尋求三維空間上的人體關(guān)節(jié)點的位置信息。隨著深度學(xué)習(xí)技術(shù)的發(fā)展以及人們對人機交互要求的提高,三維人體姿態(tài)估計越來越成為了姿態(tài)估計領(lǐng)域研究者熱衷的課題。在三維姿態(tài)估計中,人體的表示形式一般分為兩種:骨架圖表示和參數(shù)化表示。
第一種表示方式是Skeleton方式,這種表示方式如圖1所示,即通過人體關(guān)鍵點以及相鄰關(guān)鍵點之間的連線組成相應(yīng)的人體姿態(tài)[4]。
圖1 姿態(tài)估計人體三維骨架圖
第二種表示方式是參數(shù)化的人體模型(如SMPL),這種表示方法使用身形參數(shù)、姿態(tài)參數(shù)來控制mesh網(wǎng)格表示人體姿態(tài)、高矮、胖瘦等信息,多用于人體三維重建。
由于三維人體姿態(tài)估計能夠預(yù)測圖像中人的深度信息,因此,三維人體姿態(tài)估計具有更加廣泛的應(yīng)用前景。
基于三維人體姿態(tài)估計技術(shù),本文研發(fā)了基于人體姿態(tài)估計的京劇虛擬人物互動系統(tǒng),使用該系統(tǒng)可以通過單目攝像機實現(xiàn)京劇藝術(shù)家表演動作的實時捕捉并將之遷移到虛擬的人物身上。
本章主要介紹虛擬人物互動系統(tǒng)的四大模塊,即姿態(tài)估計方法模塊、虛擬人物驅(qū)動模塊、卡爾曼濾波模塊和視覺動捕設(shè)計模塊?;谌梭w姿態(tài)估計的京劇虛擬人物互動系統(tǒng)框圖見圖2。其中,虛擬人物骨骼綁定以及關(guān)鍵點角度限制均屬于虛擬人物驅(qū)動模塊。
圖2 虛擬人物互動系統(tǒng)流程圖
VNect是一種針對單人且實時性較好的三維人體姿態(tài)估計方法,該算法能夠通過攝像頭視頻流捕獲人體信息,且人體關(guān)鍵點的預(yù)測精度較高,并實時預(yù)測出人體的三維姿態(tài)[5]。因此,本文使用VNect姿態(tài)估計算法,將之應(yīng)用在人體視覺動捕和虛擬人物驅(qū)動上。此外,出于對非物質(zhì)文化遺產(chǎn)——京劇的發(fā)揚和保護(hù),本文使用時下流行的游戲開發(fā)引擎Unity3D,實現(xiàn)了對京劇藝術(shù)家動作的捕捉,并將京劇藝術(shù)家的動作遷移到了Unity3D的虛擬人物形象上,使得虛擬人物也可以做出京劇的動作,有助于增強人們對于京劇的興趣,對傳統(tǒng)京劇進(jìn)行“新創(chuàng)造”。
VNect模型較好地解決了三維姿態(tài)估計中的空間歧義性問題,即解決了二維人體姿態(tài)估計結(jié)果提升到三維空間時,一個二維姿態(tài)會對應(yīng)多個三維姿態(tài)的問題。VNect通過圖像特征直接進(jìn)行學(xué)習(xí)、提取三維隱含特征,不再分階段提取,而是聯(lián)合訓(xùn)練人體的二維姿態(tài)和三維姿態(tài)。
VNect模型的算法流程如圖3所示,整個流程分成多階段,依次為人體邊界框提取,CNN回歸,時域濾波,以及骨骼綁定,最終可以實現(xiàn)三維姿態(tài)估計的效果。其中最重要的就是CNN回歸,用于回歸人體關(guān)鍵點坐標(biāo)和人體關(guān)鍵點熱力圖。
圖3 VNect模型流程圖
VNect算法的目的是能夠?qū)崿F(xiàn)高質(zhì)量且快速的三維人體姿態(tài)估計。因此,VNect采用了聯(lián)合訓(xùn)練的方式,計算出每個網(wǎng)絡(luò)的熱力圖以及回歸出每個關(guān)節(jié)點相對于根節(jié)點的三個方向的位移。卷積神經(jīng)網(wǎng)絡(luò)回歸部分的結(jié)構(gòu)如圖4所示:
圖4 VNect模型結(jié)構(gòu)圖
VNect的主干網(wǎng)絡(luò)是ResNet50,僅使用到Conv4的最后一層res4f,到res4f開始進(jìn)行結(jié)構(gòu)修改,將連續(xù)多幀單目RGB圖像(可看成視頻流)作為網(wǎng)絡(luò)輸入,輸出則是預(yù)測每個關(guān)鍵點二維坐標(biāo)點熱力圖H和三維相對于根節(jié)點的坐標(biāo)XYZ,從而以向量的形式輸出。
VNect的損失函數(shù)通過關(guān)鍵點區(qū)域xjyjzj和ground truth的差異進(jìn)行L2范數(shù)計算:
其中,j表示關(guān)節(jié)點的索引值,Xj表示第j個關(guān)鍵點在X方向的位移,是關(guān)鍵點的ground truth,?代表Hadamard積。
此外,對于VNect的網(wǎng)絡(luò)訓(xùn)練超參數(shù)等條件的設(shè)置同VNect保持一致。
虛擬人物驅(qū)動,即使用三維姿態(tài)估計技術(shù)預(yù)測人體關(guān)鍵點的運動信息,并將關(guān)鍵點信息遷移到已經(jīng)綁定骨骼的三維虛擬人物形象上,讀取運動數(shù)據(jù)并使用姿態(tài)估計算法回歸出的運動數(shù)據(jù)驅(qū)動虛擬人物,使之進(jìn)行運動。
2.2.1 blender人物模型骨骼綁定
虛擬人物實時運動需要對人物模型進(jìn)行骨骼綁定,然而各個關(guān)節(jié)點的旋轉(zhuǎn)限制角度不盡相同,為了使得虛擬人物的肢體動作更加真實且自然,除了使用已預(yù)測的人體關(guān)鍵點數(shù)據(jù)之外,還需要對虛擬人物不同關(guān)鍵點的旋轉(zhuǎn)角度進(jìn)行設(shè)置。虛擬人物關(guān)鍵點旋轉(zhuǎn)角度設(shè)置主要依靠制作人物模型的軟件進(jìn)行骨骼限制,不同關(guān)鍵點的旋轉(zhuǎn)角度的設(shè)置詳情見表1。
表1 人體主要關(guān)節(jié)點旋轉(zhuǎn)角度限制
本文人物模型綁定使用建模軟件blender,人物模型綁定的流程見圖5。其中,人物模型綁定需要用到正向運動學(xué)(Forward Kinematics,FK)和反向運動學(xué)(Inverse Kinematics,IK)[6]。正向運動學(xué)的原理是父骨骼帶動子骨骼進(jìn)行運動,例如膝關(guān)節(jié)帶動踝關(guān)節(jié)運動,可以實現(xiàn)腿部彎曲的效果。反向運動學(xué)的原理是子骨骼帶動父骨骼進(jìn)行運動,例如手部帶動肩部進(jìn)行揮手運動等。
圖5 骨骼綁定流程圖
2.2.2 Unity3D游戲開發(fā)引擎
本文選用的虛擬人物驅(qū)動引擎是Unity3D。Unity3D是由Unity Technologies研發(fā)的3D游戲引擎,Unity3D開發(fā)功能強大,兼容性好,使之受到越來越多的開發(fā)者青睞[7]。Unity3D支持全平臺,應(yīng)用廣泛且具有逼真的物理模擬系統(tǒng),因此本文選擇Unity3D作為基于人體姿態(tài)估計的京劇虛擬人物演藝系統(tǒng)的開發(fā)平臺。
2.2.3 開放神經(jīng)網(wǎng)絡(luò)交換格式
本文使用開放神經(jīng)網(wǎng)絡(luò)交換格式(Open Neural Network Exchange,ONNX)存儲深度學(xué)習(xí)模型并將之遷移到Unity3D中[8],實現(xiàn)運動信息的傳遞。
2.2.4 骨骼數(shù)據(jù)處理與表示
基于VNect的姿態(tài)估計算法得出的人體關(guān)鍵點數(shù)量和Unity3D中虛擬人物驅(qū)動的關(guān)鍵點數(shù)量是不相同的。因此,需要對骨骼數(shù)據(jù)進(jìn)行處理才可以讓深度學(xué)習(xí)網(wǎng)絡(luò)得到的人體數(shù)據(jù)應(yīng)用于Unity3D中。
本文使用三維建模軟件blender綁定虛擬人物的骨骼,通過增加子節(jié)點關(guān)節(jié)來提升虛擬人物運動的真實性(例如不止關(guān)注于手部位置,還關(guān)注于指關(guān)節(jié)位置)。VNect三維姿態(tài)估計算法所計算出的骨骼關(guān)鍵點熱力圖都是人體的重要關(guān)鍵點,算法識別到的僅為骨骼兩端節(jié)點的坐標(biāo),在三維旋轉(zhuǎn)角度方面沒有涉及,因此卷積神經(jīng)網(wǎng)絡(luò)沒有涉及到的關(guān)鍵點只能通過臨近涉及到的關(guān)鍵點進(jìn)行定位。神經(jīng)網(wǎng)絡(luò)預(yù)測出的二維關(guān)鍵點表示見圖6。與關(guān)鍵點圖相對應(yīng)的關(guān)鍵點名稱見表2。
圖6 神經(jīng)網(wǎng)絡(luò)預(yù)測骨架圖
表2 預(yù)測關(guān)鍵點編號及名稱
在游戲開發(fā)引擎Unity3D中,骨骼轉(zhuǎn)動有多種表示方法,例如通過方向余弦、歐拉角、四元數(shù)表示等。其中,四元數(shù)是使用頻率最高的一種表示方法,四元數(shù)計算高效,可以表示狀態(tài)和旋轉(zhuǎn)動作,且能通過歐拉角轉(zhuǎn)換。因此,本文選用Unity3D游戲開發(fā)中最常用的四元數(shù)來表示。
在完成人物模型的骨骼綁定、開發(fā)平臺的選擇、深度學(xué)習(xí)模型的遷移以及三維骨骼數(shù)據(jù)的四元數(shù)表示后,基本可以實現(xiàn)虛擬人物的運動,但是此時由于可能會有一些幀沒有捕捉到所有的人體關(guān)鍵點、背景環(huán)境的干擾以及遮擋難題的存在,會對連續(xù)幀的姿態(tài)估計造成干擾,因而并不會令每一幀圖像都能預(yù)測出平滑的運動表示。如果沒有人為處理,神經(jīng)網(wǎng)絡(luò)預(yù)測出的骨骼運動就會發(fā)生閃跳現(xiàn)象,因此需要后續(xù)的進(jìn)一步處理。
卡爾曼濾波器(Kalman filter)是一種常用的連續(xù)信號跟蹤濾波器,且卡爾曼濾波器是一種純粹的時域濾波器,無需在頻域設(shè)計后再在時域?qū)崿F(xiàn),因此,該濾波器占用的內(nèi)存很小,適用于視覺動作捕捉的平滑處理[9]。
2.3.1 卡爾曼濾波器原理
卡爾曼濾波器分為非線性方程直接法和線性方程間接法。人體姿態(tài)可視為域內(nèi)線性運動,因此,選用線性卡爾曼濾波器作為運動平滑的優(yōu)化器。
線性卡爾曼濾波器公式為:
2.3.2 卡爾曼濾波器在動捕方面的應(yīng)用
在虛擬人物驅(qū)動過程中,神經(jīng)網(wǎng)絡(luò)預(yù)測出的人體關(guān)鍵點跳閃現(xiàn)象通過卡爾曼濾波得到緩解,針對人體運動數(shù)據(jù)在各個坐標(biāo)軸上的規(guī)律,通過卡爾曼濾波進(jìn)行處理,為視覺動捕系統(tǒng)開發(fā)的算法性能穩(wěn)定性提供了保障。
基于人體姿態(tài)估計的京劇虛擬人物互動系統(tǒng)除了由姿態(tài)估計算法模塊、虛擬人物驅(qū)動模塊、卡爾曼濾波模塊組成外,還有一個重要組成模塊即為視覺動捕系統(tǒng)模塊。以下將主要介紹本文研發(fā)的視覺動捕系統(tǒng)的實現(xiàn)功能、系統(tǒng)界面UI設(shè)計等方面。
2.4.1 動捕系統(tǒng)實現(xiàn)的功能
本文基于人體姿態(tài)估計技術(shù)研發(fā)出的視覺動捕系統(tǒng)同傳統(tǒng)京劇的結(jié)合可以實現(xiàn)京劇表演動作的“遷移”,即將京劇藝術(shù)家展示的京劇動作進(jìn)行捕捉,并“遷移”給虛擬人物,從而實現(xiàn)姿態(tài)估計和京劇表演的有機結(jié)合。Unity3D游戲引擎支持計算機攝像頭調(diào)用[10]。本文采用的姿態(tài)估計算法模型可以實現(xiàn)使用計算機攝像頭對于三維人體關(guān)鍵點的捕獲。通過攝像頭進(jìn)行的虛擬人物驅(qū)動見圖7。
圖7 攝像頭實時的虛擬人物驅(qū)動
2.4.2 動捕系統(tǒng)的界面設(shè)計
在視覺動捕系統(tǒng)的UI設(shè)計中,本工程采用了模塊化的設(shè)計思想,動捕系統(tǒng)主界面見圖8所示。
圖8 攝像頭實時的虛擬人物驅(qū)動
主要分為三部分——舞臺、虛擬人物、視頻窗口以及選項框。其中,舞臺選用了傳統(tǒng)的京劇舞臺圖片,人物模型采用的是NicoNico網(wǎng)站中的人物形象,選項框分為兩大部分,依次是視頻源和人物模型,視頻源可以選取網(wǎng)上或電腦本地的京劇動作視頻,或者通過同計算機連接的攝像頭捕獲的視頻數(shù)據(jù),對之進(jìn)行讀取并驅(qū)動。
以下為對本文提出的基于姿態(tài)估計算法的視覺動作捕捉系統(tǒng)的性能進(jìn)行實驗分析。
基于人體姿態(tài)估計的京劇虛擬人物互動系統(tǒng)開發(fā)所用相關(guān)工具、使用的編程語言等條件見表3。
表3 動捕系統(tǒng)開發(fā)環(huán)境表
精度評價實驗是視覺動捕系統(tǒng)中最重要的實驗,它主要的考慮因素是姿態(tài)估計算法的精確性,姿態(tài)估計算法的精確性越高,則視覺動捕系統(tǒng)的可靠性就越高。
3.2.1 評價指標(biāo)
姿態(tài)估計領(lǐng)域的精度實驗最常見的姿態(tài)估計算法性能評價指標(biāo)就是平均關(guān)節(jié)位置誤差(Mean Per Joint Position Error,MPJPE)[11]。平均關(guān)節(jié)位置誤差是預(yù)測關(guān)鍵點同ground truth之間的平均歐氏距離,單位是毫米。MPJPE的公式如下:
其中,N代表骨骼圖中關(guān)鍵點的數(shù)量,pij為預(yù)測出的關(guān)鍵點位置,表示標(biāo)簽中關(guān)鍵點的實際位置。
3.2.2 數(shù)據(jù)集
本文精度實驗選用的是Human 3.6M數(shù)據(jù)集。Human3.6M數(shù)據(jù)集中含有360萬三維人體姿勢及對應(yīng)圖像。該數(shù)據(jù)集由11個實驗者的動作組成,依次存放于S1-S11文件夾。本文選用S1、S5、S6、S7、S8作為訓(xùn)練集,S9和S11作為測試集,且主要選用測試集中的Walk、Smoke、Wait作為測試姿態(tài)。三維姿態(tài)估計算法精度實驗的結(jié)果見表4。
表4 三維姿態(tài)估計算法精度比較表
表4所示實驗選用的比較指標(biāo)為平均關(guān)節(jié)位置誤差,單位為毫米。表中最后一行加粗的結(jié)果所對應(yīng)的方法為本文所使用的姿態(tài)估計方法,可以看到在三個精度實驗的結(jié)果中,VNect所得到的平均關(guān)節(jié)位置誤差是最小的,證明VNect算法具有更高的姿態(tài)估計精度。
實時性實驗主要是以算法達(dá)到的幀率(Frame rate)來進(jìn)行衡量。幀率是指位圖圖像連續(xù)出現(xiàn)在顯示器上的頻率,單位是幀每秒。本文選用另外兩個主流的姿態(tài)估計算法(DconvMP和StructNet)訓(xùn)練的模型,將之嵌入到視覺動捕系統(tǒng)中進(jìn)行性能對比。實時性實驗的結(jié)果見表5。
表5 三維姿態(tài)估計算法實時性比較表
實時性實驗比較表中最后一行加粗的數(shù)值最大,表示VNect姿態(tài)估計算法的實時性最好,30FPS已經(jīng)可應(yīng)用于視覺動作捕捉。
本實驗主要檢驗卡爾曼濾波是否對驅(qū)動的虛擬人物運動具有平滑作用。對于京劇演示視頻中同一幀的動作,有無卡爾曼濾波的效果對比圖見圖9。根據(jù)三幅圖圖中紅色框標(biāo)明的腳部細(xì)節(jié)可知,未經(jīng)卡爾曼濾波處理的腳部會因為噪聲干擾而翹起,經(jīng)過卡爾曼濾波處理的腳部姿態(tài)會更加貼近視頻圖中的原始姿態(tài)。由此可知,使用卡爾曼濾波算法的虛擬人物驅(qū)動可以避免單幀的預(yù)測錯誤,提升虛擬人物動作的正確性。
圖9 卡爾曼濾波效果對比圖
本實驗主要用于測試使用者對于此虛擬人物互動系統(tǒng)的主觀交互體驗感。實驗邀請了5位受試者,依次在攝像頭前做站立、揮手、行走、側(cè)身動作,受試者通過觀察視覺動捕系統(tǒng)中的虛擬人物的運動效果以及體驗到的虛擬人物驅(qū)動系統(tǒng)的交互感受,根據(jù)虛擬人物運動的精確度、流暢度等主觀感受進(jìn)行評分。受試者編號為1-5,分?jǐn)?shù)區(qū)間設(shè)置為0-100分,實驗結(jié)果見表6。
表6 視覺動捕系統(tǒng)性能主觀實驗評價表
五位受試者對于站立動作、揮手動作和側(cè)身動作的打分均在90分以上,證明站立、揮手和側(cè)身動作的表現(xiàn)較好;行走動作分?jǐn)?shù)略低于90分,效果不如前兩個動作效果,但是分?jǐn)?shù)依然較高,證明本文視覺動捕系統(tǒng)帶給使用者較好的體驗。主觀評價受試者1的站立動作、揮手動作、行走動作、側(cè)身動作實驗效果圖見圖10。
圖10 主觀評價實驗效果圖
綜合以上四個實驗的結(jié)果,可以發(fā)現(xiàn)基于VNect姿態(tài)估計算法的虛擬人物互動系統(tǒng)的精度、速度、平滑性、受試者評價都較優(yōu),基于人體姿態(tài)估計的京劇虛擬人物互動系統(tǒng)的性能較好。
本文研發(fā)了一種基于人體姿態(tài)估計的京劇虛擬人物互動系統(tǒng),僅通過向計算機輸入京劇教學(xué)視頻或單目普通相機捕捉的視頻流,即可將京劇藝術(shù)家的動作遷移到虛擬人物身上,并實時驅(qū)動虛擬人物進(jìn)行京劇表演。本動作捕捉系統(tǒng)在可靠性和實時性方面均達(dá)到了較好的效果。在未來的開發(fā)中,可以考慮將之遷移到移動設(shè)備中,在保證精度和速度的前提下,讓基于此姿態(tài)估計算法的應(yīng)用更加普及。