






摘 要:【目的】為降低輕量級神經網絡模型的運算量,提高計算的準確性,本研究基于深度學習姿態估計,設計并實現一種基于單目攝像頭的虛擬人物驅動系統。【方法】首先,通過MediaPipe來分析單目相機中的人體姿態,得到基于人體骨骼的32個特征點及手部骨骼的21個特征點。其次,對神經網絡特征點的閃爍問題,使用均值濾波算法來減少誤差,從而得到流暢的運動軌跡信息。最后,把3D虛擬人體模型導入到Unity3D軟件中,為其添加基本的人體骨骼,并賦予權重,建立特征點與骨骼間的映射關系,用特征點來驅動骨骼。【結果】實現了3D虛擬人體模型實時模仿攝像頭前的真人運動的效果。【結論】經試驗驗證,本研究提出的系統可實時準確地捕捉人體姿態,并借助Unity3D出色的物理系統來實現良好的互動體驗。
關鍵詞:姿態估計;單目攝像機;MediaPipe;動作捕捉;Unity3D
中圖分類號:TP391" " 文獻標志碼:A" " 文章編號:1003-5168(2023)21-0018-05
DOI:10.19968/j.cnki.hnkj.1003-5168.2023.21.004
Virtual Character Drive System Based on MediaPipe and Unity3D
DOU Zhaoxun ZUO Zhibin
(School of Information Science and Engineering, Henan University of Technology, Zhengzhou 450001,China)
Abstract: [Purposes] In order to reduce the computational complexity of the lightweight neural network model and improve the accuracy of the calculation, this study designs and implements a virtual character drive system based on monocular camera on the basis of deep learning pose estimation. [Methods] Firstly, MediaPipe was used to analyze the human pose in the monocular camera, and 32 feature points based on human skeleton and 21 feature points of hand skeleton were obtained. Secondly, for the flicker problem of neural network feature points, the mean filtering algorithm is used to reduce the error, so as to obtain smooth motion trajectory information. Finally, the 3D virtual human model is imported into Unity3D software, and the basic human skeleton is added, and the weight is given. The mapping relationship between the feature points and the skeleton is established, and the skeleton is driven by the feature points. [Findings] The effect of 3D virtual human body model imitating the real human motion in front of the camera in real time was realized. [Conclusions] It is verified by experiments that the system proposed in this study can accurately capture human posture in real time, and achieve a good interactive experience with the help of Unity3D's excellent physical system.
Keywords: attitude estimation; monocular camera; MediaPipe; motion capture; Unity3D
0 引言
自然人機交互技術是計算機領域的重要前沿技術,與圖像識別、人工智能技術有著密切的聯系。利用動作捕捉技術捕獲的數據來驅動虛擬人物并生成動畫是人機交互中的常用場景[1]。通過穿戴相關的設備來驅動虛擬模型,但這些設備往往價值不菲,因此可利用單目攝像頭對人體動作評估的技術[2]來降低成本。常用的人體姿態估計技術有二維人體姿態估計技術和三維人體姿態估計技術。
二維人體姿態技術通過對輸入的圖像信息進行分析,得到二維上的人體關鍵點預測坐標。根據檢測人數的不同,可分為單人人體姿態估計和多人人體姿態估計[3]。多人人體姿態估計又可分為自頂向下法和自底向上法。自頂向下法是利用人體檢測器裁剪出單人子圖,再進行單人姿態估計的。這種方法能降低復雜度,并提高人體姿態估計的準確性。自底向上法先估計出原圖像中所有關鍵點的坐標,再根據人來進行劃分生成對應的二維人體姿態估計,執行一次便可完成對圖像中所有人的姿態估計。相較于自頂向下法,自底向上法的效率更高,能更好地滿足實時性要求,但其精確度卻有所下降。
通過二維人體姿態估計法無法獲得深度信息,導致其應用場景有限。隨著人機交互的要求越來越高,關于三維人體姿態估計的研究[4]也日益增多。三維人體姿態估計是根據輸入的二維圖像來生成三維關鍵點坐標的,由于引入深度信息,相較于二維人體姿態估計,三維人體姿態估計更加準確,其應用場景也更廣泛。雖然三維人體姿態估計在技術上實現更加困難,但基于深度學習的RGB輸入人體姿態估計法已有了顯著發展。
本研究采用基于三維人體姿態估計中的單目三維人體姿態估計法來研發出一套虛擬人物驅動系統,通過該系統,可借助單目RGB攝像機來實時將相機前的人物動作映射到3D虛擬模型上。
1 人體動作捕捉系統模型
本研究設計的系統總體可分為三個模塊,即人體姿態估計模塊、均值濾波模塊、虛擬模型驅動模塊。該系統的流程如圖1所示。其中,3D人物模型骨骼綁定和骨骼驅動都屬于3D人物模型驅動模塊。
2 人體姿態估計
MediaPipe為一個用于構建機器學習管道的框架,可用于處理視頻、音頻等時間序列數據[5],且該平臺框架適用于桌面/服務器、Android、IOS和嵌入式設備。MediaPipe的處理流程如圖2所示。
MediaPipe使用的BlazePose是一種輕量級卷積神經網絡模型[6],專門為移動設備實時推理而設計。推理過程中會為個人生成33個人體關鍵點,此網絡同時結合了熱圖和回歸關鍵點的坐標。BlazePose通過編碼器-解碼器網絡體系結構來預測所有關節的熱圖,并用編碼器來回歸所有關節的坐標,關鍵點為推理過程中丟棄的熱圖分支,能減少運算量,使其可以在手機上運行。
MediaPipe框架內使用的BlazePose神經卷積模型與OpenPose的對比見表1。
以OpenPose為基準,手動標注1 000個圖像的數據集,每個數據集中的人數為1~2人。表1中AR Dataset為第一個數據集,由各種野外人體姿態組成;表1中Yoga Dataset為第二個數據集,主要為各種人體瑜伽姿態。為保證試驗對比的一致性,MediaPipe使用的是和OpenPose一樣的MS Coco拓撲結構(該拓撲結構有17個人體關鍵點,MediaPipe使用的拓撲結構原有33個人體關鍵點)。PCK@0.2是指使用公差為20%的正確點百分比,即如果二維上的歐式誤差小于相應人體軀干尺寸的20%,那么就能正確地檢測出該點。
BazePose Full和BlazePose Lite為容量不同的兩個模型,BlazePose Full的容量為6.9 MFlop、3.5 MParams,BlazePose Lite的容量為2.7 MFlop、1.3 MParams。由表1可知,BlazePose Full模型在AR數據集上稍遜于OpenPose模型,在Yoga數據集上比OpenPose模型更優。二者的最大差別在性能上,在單個CPU上,BlazePose比OpenPose快了25到75倍,實現此點取決于所要求的質量。
使用MediaPipe對圖片進行分析后,會返回一個結果集,該結果集包含所需的人體特征點的三維坐標信息,以臀部中心為坐標原點。MediaPipe人體特征點分布如圖3所示。
3 均值濾波模塊
在對3D人物模型驅動過程中,神經網絡預測的特征點會出現跳閃情況,可用卡爾曼濾波器對其進行平滑處理,采用線性卡爾曼濾波器,通過比較估計誤差與測量誤差來改善跳閃現象[7]。由于卡爾曼濾波實現較為復雜,需要計算噪聲方差,誤差受實驗室數據的影響,對不同人體姿態估計模型需要重新測量誤差。
由于均值濾波法對解決神經網絡抖動問題有顯著效果,同時該方法并不局限于某一種人體姿態估計模型,因此可用動態規劃思想來改進算法,使其在實時運算中占用更少的資源,且運算量不隨需要被均值的個數增加而增加。
均值濾波器全稱為算術平均值濾波器[8],N個數據只在一個很小的范圍內浮動,如果利用最小二乘法,那么便可以找到一個y值,使該值與N個數據的偏差最小,這個y值約等于N個數據總和的平均值,見式(1)。
轉化為代碼為(sum-que.peek()+x')/n。其中,que為一個先進先出的隊列,sum為當前隊列que中的所有數之和,que.peek()為當前隊列最先進入的數據,x'為新傳入的數據,n為均值濾波設置的要被平均的數字的個數。在n個數據填充完成后,需要計算的部分只有首位和末尾,此時時間復雜度不再隨著n的增大而增加,因此不會占用過多資源。
4 虛擬3D人物模型驅動
相較于復雜的3D人體模型,人體本身作為一個模型整體,身體關節移動時,其和中心點并非保持相對不變。因此,通過模仿現實中人體結構,在3D人物模型中需要引入骨骼[9]概念,將骨骼放于模型內部,可以有多個骨骼,分為父級和子級,類似于人體關節。子級骨骼的移動不會影響父級骨骼,而父級骨骼的移動會帶動子級骨骼。除了骨骼外,還要確定模型中有哪些頂點會隨著哪些骨骼的移動而移動,又該保持多少的相對運動,在此引入了權重。
使用渲染引擎Unity3D[10]對模型進行渲染。Unity3D是Unity Technologies開發的一款實時3D軟件,其提供了一整套完善的軟件解決方案,可用于創作、運營和變現任何實時互動的2D、3D或AR、VR內容,并支持多個平臺。 Unity3D引擎內部使用C#語言作為主要腳本語言。
在配置好骨骼與權重后,通過調整骨骼的旋轉角度,便可實現對3D人體模型的驅動,將3D模型導入到Unity3D之后,Unity3D會為每根骨骼單獨生成實例,并賦予Transform組件,該組件包含物體在世界坐標系中的三維坐標、旋轉角度及縮放程度。在腳本中修改Transform中的旋轉角度便能實現對3D人體模型的驅動。把對應特征點的數據存儲到對應的骨骼上,便能計算出旋轉方向,并將其添加到骨骼上。
Unity3D采用四元數來存儲旋轉信息,骨骼一般只進行旋轉操作,子父級的關系用以實現位移。在Unity3D中,只要用子骨骼的特征點減去其父骨骼的特征點,便可得到一個方向向量,將該方向向量應用到父骨骼上,代碼為head.trans.rotation=Quaternion.LookRotation(head.child.Pos3D-head.Pos3D)。
重復這一操作,要注意的是,該方法必須從子級骨骼開始旋轉,再去旋轉該子級骨骼的父級骨骼,否則會因為父子級的特殊關系導致無法得到正確的旋轉結。此外,可使用上述方法同時實現對手部骨骼的追蹤,如圖4所示。
5 結語
本研究使用基于單目攝像頭的三維人體姿態估計技術,配合UDP網絡通信技術和Unity3D引擎,成功開發出一套人體姿態捕捉系統。其中,基于單目攝像頭的三維人體姿態估計技術使用的是谷歌MediaPipe框架,并使用BlazePose輕量級卷積神經網絡模型,因此,能極大地減輕運算量,降低對硬件的要求。對神經網絡模型帶來的抖動問題,通過使用均值濾波來平滑軌跡,進一步降低運行所需的運算量。配合Unity3D渲染引擎,渲染出3D虛擬人物模型,用于表現捕捉效果。經過測試,該系統能很好地將攝像頭前的人物動作實時映射到Unity3D的虛擬人物模型上,用來體驗虛擬現實技術。在后續開發中,可考慮將其應用到動畫、游戲等領域。
參考文獻:
[1]馮影影,楊戟.虛擬現實VR中的計算機技術的應用[J].電子技術,2022(10):174-175.
[2]SUN H X,ZHANG Y Y,ZHENG Y J,et al. G2O-pose:real-time monocular 3D human pose estimation based on general graph optimization[J].Sensors,2022(21):8335.
[3]張宇,溫光照,米思婭,等.基于深度學習的二維人體姿態估計綜述[J].軟件學報,2022(11):4173-4191.
[4]王仕宸,黃凱,陳志剛,等.深度學習的三維人體姿態估計綜述[J].計算機科學與探索,2023(1):74-87.
[5]劉德發.基于MediaPipe的數字手勢識別[J].電子制作,2022(14):55-57.
[6]BAZAREVSKYV,GRISHCHENKO I,RAVEENDRAN K,et al.Blazepose:on-device real-time body pose tracking[J].arXiv,2020.
[7]張宜春,黃一鳴,潘達.基于人體姿態估計的京劇虛擬人物互動系統[J].中國傳媒大學學報(自然科學版),2022(6):43-49.
[8]江友華,曹以龍,唐忠.基于平均值算法的有源濾波器設計及應用[J].電力電子技術,2010(2):42-43.
[9]鄭一然,紀濱,陶威遠.基于Kinect的骨骼算法的研究[J].信息記錄材料,2020(6):163-164.
[10]朱晴.Unity3D開發工具在3D游戲開發中的應用[J].電子技術與軟件工程,2019(22):58-59.
收稿日期:2023-06-05
基金項目:河南省科技攻關項目(232102210132)。
作者簡介:竇朝勛(2000—),男,本科生,研究方向:計算機視覺處理。
通信作者:左志斌(1979—),男,博士,講師,研究方向:計算機網絡、人工智能。