張騰
摘? ?要:文章利用基于OpenPose的人體姿態(tài)識別算法,將動畫或者視頻中的人物動作進行處理,實現(xiàn)對角色運動數(shù)據(jù)的捕獲;采用基于運動捕捉數(shù)據(jù)的關鍵幀提取算法來獲取角色運動的關鍵幀。實驗結果表明,該方法具較高的識別準確率,并且能夠提取出對原動畫或視頻具有概括力的關鍵幀。
關鍵詞:OpenPose;動作捕獲;姿態(tài)識別;關鍵幀提取;機器學習
人工智能時代的浪潮席卷了人們的生活,各種機器學習算法逐漸融入各行各業(yè)當中,給各個領域注入新的活力。其中,隨著人體姿態(tài)估計研究的發(fā)展,日益成熟的運動捕捉技術被廣泛應用到了游戲開發(fā)、影視制作等多個領域。由于動作捕捉技術相較于傳統(tǒng)的手動設置關鍵幀而帶來的便利性以及動作捕捉數(shù)據(jù)更高的逼真性,引起了三維動畫制作的巨大變革。但目前已有的動作捕捉技術對硬件設備、場地要求較高,依然存在一定的局限性,同時捕捉到的原始數(shù)據(jù)十分龐大而且缺乏結構化信息,使得編輯產(chǎn)生了較大的難度。與之相反,在傳統(tǒng)的動畫制作中,動畫師手動設置關鍵幀,并通過在關鍵幀中插值,從而產(chǎn)生連續(xù)動畫,但缺陷在于手動設置關鍵幀的效率低下,并且需要動畫師具有一定的從業(yè)經(jīng)驗和技術水平,門檻較高。因此,將人體姿態(tài)估計技術與傳統(tǒng)的關鍵幀提取相結合,或許能有更好的發(fā)展前景。為實現(xiàn)這個想法,本文采用國外卡內基梅隆大學開源項目OpenPose,對運動視頻源進行分析處理,提取出角色動作中的關鍵幀[1]。
1? ? 姿態(tài)估計
OpenPose是美國卡耐基梅隆大學感知計算實驗室所研究開發(fā)的開源庫,可以支持單人和多人情況下對人體、面部、手指等多個部位的姿態(tài)估計,獲得了廣泛的關注。在此之前,識別的思路基本是自上而下,即先判斷出人體,再尋找屬于該人體的部位,而OpenPose則采用了自底向上的方法,先將所有的關節(jié)點回歸出來,再通過部分仿射場(Part Affine Field,PAF)劃分給每個人。本文利用OpenPose能有效解決圖像存在部分遮擋以及復雜背景的優(yōu)良特性,提取出運動視頻源中的角色動作動畫,從而獲得后續(xù)提取角色動作的素材[2]。
Openpose算法的整體流程:先通過10層VGG19網(wǎng)絡提取出輸入的圖片的特征,并將所獲得的特征圖放入兩個卷積神經(jīng)網(wǎng)絡中進行計算,分別預測每個關鍵點的置信度和親和度向量,得到包含置信度的熱圖和包含親和字段的熱圖,然后根據(jù)圖論中的二分匹配實現(xiàn)關鍵點的聚類,由于PAF的矢量性保證了生成二分匹配的正確性,最終將同一個人的關節(jié)點拼合,合并成一個整體框架。
2? ? 關鍵幀提取算法
由于本實驗中Openpose的采樣率較高,會產(chǎn)生大量數(shù)據(jù),其中也包含不少無效數(shù)據(jù),從而增加了對數(shù)據(jù)進行其他處理的復雜程度,因此有必要提取出具有概括性的關鍵幀來表示原始的角色運動行為,并且能夠不失真,同時盡可能篩除原始數(shù)據(jù)中的冗余數(shù)據(jù)和無效數(shù)據(jù)。獲取關鍵幀最簡單的做法是等間隔提取,但該方法可能導致對高速運動的欠采樣,即關鍵幀丟失和對低速運動的過采樣,即關鍵幀冗余。因此,根據(jù)不同的理論方法和不同的運動特征,更復雜的算法便應運而生。本文將采用不同場景不同算法提取出的關鍵幀進行運動差值重建,并度量重建誤差,通過比較重建誤差得出最適合本方法的關鍵幀提取算法。目前提取關鍵幀的算法有以下幾類[3]:
(1)幀消減方法需要設定一個閾值,根據(jù)閾值并且采用一定方法對非關鍵幀進行消減或者直接對關鍵幀進行提取。此類方法操作簡單,并且由于其中使用了四元數(shù)插值重建對原始序列進行還原,從而符合人體關節(jié)旋轉運動的特點,使得提取的關鍵幀比較準確。但因為閾值需要提前設定,因此很難確定。并且由于其未考慮到后續(xù)關鍵幀與消減幀之間的關聯(lián)性,因此也比較容易導致運動邊界幀的丟失。
(2)曲線簡化方法把每一幀運動數(shù)據(jù)都當成高維曲線上的一個點,然后根據(jù)設定的閾值將曲線上的一些極值點篩選成為關鍵幀。此類方法將用來提取關鍵幀的運動特征設置為根關節(jié)和四肢骨骼的夾角,大大提高了所提取關鍵幀的運動概括能力。但因為忽略了速度變化的邊界幀,所以使用這種方法可能導致無法還原運動的節(jié)奏,并且閾值的大小會嚴重影響算法的性能。
(3)聚類方法通過設定的閾值對幀間距進行加權,從而對各幀進行聚類,并選取各聚類的首幀為關鍵幀。此類方法聚類后選出的關鍵幀具有代表性,但聚類方法得計算復雜度往往較高,很難應用在大規(guī)模的數(shù)據(jù)處理上。
(4)普通最優(yōu)化方法運用貪心算法,循環(huán)消減重建誤差最小的幀,直到達指定數(shù)目幀為止。此類方法具有貪心算法的特性,因為一直可以求得當前最優(yōu)解,因此所得關鍵幀都是根據(jù)重建誤差曲線保留了具有最大重建誤差的幀,因此較準確,但當前最優(yōu)解并不是一定是全局最優(yōu)解,在部分情況下最后結果的重建誤差并不是最優(yōu)。此外,相對于其他方法,此類方法不用設置閾值,并且能提取任意幀數(shù)的關鍵幀,但計算復雜度很高,不適合用于幀數(shù)多的場景。
(5)智能優(yōu)化算法是通過種群內部的信息交互機制來改進問題的解。但比較依賴于算法的優(yōu)劣,若智能算法比較成熟則可以取得不錯的結果,但有的算法收斂速度慢或出現(xiàn)抖動現(xiàn)象,就會對結果的穩(wěn)定性產(chǎn)生影響。
3? ? 實驗結果與分析
本文使用Python2.6開發(fā)了一個文件格式編輯程序,命名為Zten,其功能為將OpenPose運行時所保存的若干份JSON文件合并成一個BVH文件。實驗中所用數(shù)據(jù)是3段分別包含行走、跳躍、出拳的MP4格式數(shù)據(jù)文件。實驗在一臺系統(tǒng)為Ubuntu16.04的PC機上進行。實驗中對運動數(shù)據(jù)使用了多種關鍵幀提取方法并通過對比重建誤差的方法進行比較。
首先使用OpenPose對3段數(shù)據(jù)文件進行姿態(tài)估計,并使用Zten對最終產(chǎn)生的JSON文件進行合并,得到3種運動的動畫片段。其中,行走片段260幀,跳躍片段281幀,出拳浦安端324幀。結合實際情況,本研究選擇了幀消減方法、曲線簡化方法、普通最優(yōu)化方法對以上3種運動提取了確定的最優(yōu)關鍵幀數(shù)。所得結果及各關鍵幀序列的重建誤差如表1所示。通過分析可以發(fā)現(xiàn),OpenPose得到的角色動作數(shù)據(jù)較為冗余,在處理較長視頻片段時會產(chǎn)生較多數(shù)據(jù),不利于聚類方法和普通最優(yōu)化方法。另外,通過比較,實驗者也得知曲線簡化方法在處理OpenPose所產(chǎn)生的數(shù)據(jù)時相比于使用幀消減方法所產(chǎn)生的數(shù)據(jù)誤差更小。因此,實驗者得出OpenPose和曲線簡化方法的組合能得到最準確的結果。
4? ? 結語
本文以提取角色動作為研究目標,采用了OpenPose捕捉角色動作,利用曲線簡化方法提取關鍵幀的技術方案,實驗結果驗證了人體姿態(tài)估計與關鍵幀提取相結合的可行性?;诒疚脑O計的角色動作提取系統(tǒng)能夠不依賴于復雜的慣性動作捕捉設備,也能獲得足以運用在游戲開發(fā)或者影視制作中的角色運動關鍵幀,從而實現(xiàn)簡化了動畫制作的制作流程,大量節(jié)約了動畫制作成本的目的。但是在實際運算中,姿態(tài)估計仍對計算機硬件有較高要求,并且對于一次所能評估的人數(shù)也有一些制約,針對這一問題將繼續(xù)對姿態(tài)估計的算法框架進行研究。
[參考文獻]
[1]徐從洋.運動捕獲數(shù)據(jù)關鍵幀提取與檢索算法研究[D].鄭州:鄭州大學,2016.
[2]吳鈴,侯進,徐芳.BVH文件驅動三維人體動畫的實現(xiàn)[J].沈陽理工大學學報,2012(1):52-56.
[3]CAO Z,HIDALGO G,SIMON T, et al.OpenPose:realtime multi-person 2d pose estimation using part affinity fields[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2018(7):76-79.