?

基于循環神經網絡的人體運動模型的隱狀態初始化方法

2023-03-24 13:24李南帆司文文杜思遠王志勇鐘重陽夏時洪
計算機應用 2023年3期
關鍵詞:插值人體神經網絡

李南帆,司文文,杜思遠,王志勇,鐘重陽*,夏時洪

(1.國網北京城區供電公司,北京 100034;2.中國科學院計算技術研究所,北京 100190;3.中國科學院大學,北京 100049)

0 引言

人體運動合成是計算機圖形學中的重要問題,在自動駕駛、人機交互、目標追蹤、運動規劃、動作識別等領域被廣泛應用,為這些應用提供數據支撐。動作識別方法[1]在實際生活中有著重要的應用價值,它能自動識別人的動作類型,幫助系統對行人進行安全監測?;谏窠浘W絡的動作識別模型的性能相較于傳統的統計學習方法有了很大的提升,但是它的準確率和效率嚴重地依賴人體運動數據的數量和質量。由于傳統的運動捕獲方法費時費力,越來越多的學者開始研究如何自動高效地捕獲人體運動數據[2-3]。其中一種高效且低成本的方式就是利用已有的運動捕獲數據,構建生成模型以自動合成運動數據。不僅能提高運動捕獲數據的利用率,還能合成很多難以捕獲的人體運動,為識別算法提供數據支撐,提高識別準確率,減少運作成本。

近年來,研究者們[4-8]使用循環神經網絡(Recurrent Neural Network,RNN)進行人體運動建模與合成,并取得了較好的效果。然而,基于RNN 的人體運動模型一直都存在一個問題:運動合成結果的第一幀與輸入的最后一幀之間存在跳變[4-5,7-8]。如圖1 所示,圓圈中的膝關節和頸關節在輸入末幀與合成首幀之間存在不連續現象。由于該問題只存在于運動合成的第一幀,很多研究者忽略了這一問題。但是首幀跳變不僅影響運動合成的質量,而且無法回避運動去噪、運動插值等應用。因為RNN 模型在進行運動合成時,首幀的隱狀態通常初始化為0 或進行隨機初始化,然而隱狀態代表了RNN 單元對前面序列的記憶,理論上應該與前面的運動序列相關,正是這種簡單的初始化方法導致了跳變的出現。雖然訓練數據足夠充分和多樣時,跳變的影響會得到緩解,但是高質量的運動數據的獲取費時費力、成本高昂。

為合理估計隱狀態,在數據有限的情況下合成高質量的數據,為數據驅動的模型提供數據支撐,本文解釋了基于RNN 的人體運動合成中輸入末幀與合成首幀之間存在跳變的原因,提出一種基于優化的初始隱狀態估計的人體運動合成方法。將初始隱狀態作為自變量,利用神經網絡的目標函數作為優化目標,使用梯度下降法進行優化求解,得到一個合適的初始隱狀態,可提高運動合成結果的質量和運動預測的精確率。為驗證本文方法的效果,在常用數據集CMU(http://mocap.cs.cmu.edu/)和H3.6m(http://vision.imar.ro/human3.6m/description.php)上進行大量的定性和定量實驗,并且和經典的運動合成與預測工作進行對比。實驗結果表明,經過初始隱狀態估計的運動合成方法消除了以往基于RNN 的運動模型中輸入末幀與合成首幀間的跳變情況,得到了更連續、自然的運動,有效提高了合成運動的質量。

1 相關工作

隨著深度學習的興起,很多工作集中于使用深度神經網絡建模人體運動中的動態,實現對人體運動的合成和預測。

Holden等[9-10]嘗試了其他類型的神經網絡進行人體運動建模:1)在一個很大的數據集中訓練了一個卷積自編碼器,然后用卷積神經網絡建立一個從高層參數到角色運動的回歸模型。該方法適用于運動編輯,但是不能建模運動的分布,并且需要使用方波生成步態信息,受到的限制較大。2)建立了一個根據相位改變網絡參數的三層神經網絡,結合歷史運動軌跡和當前的控制輸入實時合成當前幀的運動姿態。Zhang等[11]使用混合權重的神經網絡模型處理四足動物的運動建模與在線控制問題。上述模型雖然能夠對控制作出響應,但是實質上仍然不是生成式模型,并且不能預測運動的分布。雖然基于其他神經網絡的方法在人體運動合成方面作出了有益的嘗試,但是由于RNN 在處理時序序列上的優勢,目前RNN 仍是主流的人體運動合成模型。

RNN 能夠處理時序動態關系和長時間的時序依賴關系,能夠很好地建模人體運動的動態。Fragkiadaki等[4]引入LSTM-3LR(3 層的長 短期記 憶(Long-Short-Term-Memory,LSTM))和編碼器-循環-解碼器(Encoder-Recurrent-Decoder,ERD),利用LSTM 單元建模人體運動的動態。Jain等[5]引入結構化的RNN 模型,將人體關節的圖結構與人體運動的序列關系一起引入運動預測。除了在運動預測方面的應用外,Harvey等[12]使用RNN 和半監督學習幫助訓練運動分類器,成功地在半監督的條件下利用運動合成結果輔助進行運動分類。

然而,現有的RNN 模型往往在合成長時間的運動時遇到困難。在生成長序列運動時,由于每一幀的誤差不斷累積,模型的誤差會不斷變大,并終止于平均姿態。此外,大多數RNN 模型都會遇到合成首幀與輸入末幀不連續的問題。Martinez等[6]提出殘 差門控 循環單 元(Residual Gate Recurrent Unit,RGRU)模型,使用一個基于殘差的序列到序列的方法減小了跳變;但是基于殘差的方法會影響系統的穩定性,導致以上方法并不能生成很長的運動序列。Zhou等[8]成功地訓練了一個自適應的RNN 模型,能夠生成很長的運動而不出現崩潰;但是該模型在初始幀處理中與傳統的RNN 模型相同,依然會在輸入的最后一幀與合成的第一幀之間出現跳變。Lee等[13]將控制參數加入運動表示,實現了可控制的運動合成;然而控制參數的引入也無法解決首幀跳變的問題。

上述工作要么忽視了首幀跳變的問題,要么在訓練時采用一些技巧回避該問題。只有Wang等[14]在構建基于RNN的人體運動模型時提到了首幀跳變問題,但是缺少詳細分析。本文將分析傳統的基于RNN 的人體運動合成模型首幀跳變問題產生的原因并給出解決方案,通過優化的方法求解合理的初始隱狀態,有效減少首幀跳變,最后通過實驗驗證該方法在運動合成、運動預測和運動插值任務中的有效性。

2 本文方法

2.1 RNN人體運動建模簡述

在使用神經網絡模型建模人體運動之前,需要把人體運動表示為計算機能夠理解的特征信號,在定義好運動表示后再針對人體運動的特點建立對應的合成模型。

2.1.1 人體運動表示與特征表示

本文使用的骨架包括18 個自由運動關節,可表示為:

其中:q為角色的關節角運動參數;tx、ty、tz是根節點的位置;rx、ry、rz是根節點的旋轉角度;θ2,θ3,…,θd是其他各個關節的三維旋轉角度。人體運動建模中使用的特征需要具有旋轉不變性和平移不變性,所以更改為如下表示:

其中:x為具有旋轉不變性和平移不變性的運動參數;Δtx、Δtz、Δry是相較于前一幀的相對平移和旋轉;其他變量的定義方式與式(1)相同。

2.1.2 RNN人體運動模型

本文創新點在于初始隱狀態問題的發現與相應估計方法的提出,該方法能夠應用于任意的RNN 模型。因此本文通過改進經典的運動合成模型ERD 以驗證方法的有效性,改進的運動模型如圖2 所示,(·)為該網絡層神經元個數。

圖2 運動模型結構Fig.2 Structure of motion model

本文采用的RNN 模型包含兩層全連接(Fully-Connected,FC)-兩層LSTM-兩層全連接的編碼-解碼結構。與ERD 不同,它能建模人體運動參數在下一幀的分布,因此可以用于多種任務,數學表達形式為:

與文獻[15]類似,本文使用協方差矩陣為對角矩陣的高斯混合模型(Gaussian Mixture Model,GMM)建模下一幀的特征分布,混合高斯分布的定義為:

其中:wi、μi、δi分別為第i個高斯分量的概率、均值和標準差。高斯分布的參數需要滿足一定條件,而神經網絡的輸出可以是任意實數。所以本文定義以下的變換以保證得到的參數符合高斯分布的定義:

在模型訓練完成后,通過如下方式實現運動生成:用戶提供若干幀的運動數據作為初始輸入,將當前幀運動數據和上一幀的隱狀態作為RNN 單元的輸入,RNN 單元經過計算得到當前幀的隱狀態和下一幀的運動參數分布;從這個分布中進行采樣,可以得到下一幀的運動參數;重復這一過程,就可以逐幀地合成一個無限長的運動序列。

生成式模型得到的并不是下一幀運動參數的準確值,而是對下一幀運動參數的分布的估計,所以模型并不能直接應用于運動預測問題。在進行運動預測實驗時,本文使用概率最大的高斯分量的平均值作為下一幀的運動預測值,然后將這個運動預測結果輸入神經網絡,從而得到運動預測結果。

2.2 首幀不連續問題分析

基于RNN 的人體運動模型中的首幀跳變現象如圖1 所示。出現首幀跳變現象的原因是在訓練中RNN 模型會將上一幀的運動參數和上一幀學習到的隱狀態作為RNN 模型當前幀的輸入,將下一幀的運動參數作為目標輸出以進行訓練。模型訓練目標表示為式(6)。一般輸入隱狀態包含對以前狀態的正確的記憶,非零。然而在計算首幀運動參數時,神經網絡無法從前一幀得到隱狀態,只能使用零初始隱狀態或隨機初始化的隱狀態作為輸入,得到的概率值為:

這樣的初始輸入與訓練時不一致,將導致輸出的第一幀與輸入的最后一幀之間出現明顯跳變,這也是在實驗中往往會發現模型在運動合成開始處出現不連續現象的原因。

文獻[4-5,8]中均指出了這個問題,但是認為首幀跳變在運動合成和預測任務中可以接受,因此選擇忽略這個問題。然而本文的研究表明,估計一個更好的初始隱狀態可以提高運動合成的質量,并降低運動預測的誤差。同時,當基于RNN 的人體運動模型被應用到運動去噪或者運動插值任務中時,首幀跳變問題的影響會被放大。例如,在運動去噪中,由于首幀跳變,即使去掉第一幀運動,后續的運動去噪結果與輸入運動仍存在一定差異,不能達到運動去噪的目的;在運動插值中,用戶給定運動序列中的若干關鍵幀,要求算法自動合成各個關鍵幀中間的運動,首幀跳變會導致運動插值結果不夠自然?;谏鲜鲈?,首幀跳變問題無法回避。

目前已經有一些方法來解決該問題,如基于序列到序列的RGRU 模型[6]采用殘差連接的方法使模型在零初始隱狀態下也被充分訓練,但是有兩個局限性:1)只能用于無約束的運動合成,無法用于運動插值、運動去噪等應用;2)序列到序列的模型只能合成一定長度的運動,無法保證訓練得到的模型能夠合成無限長的運動。這些方法本質上是一種訓練的技巧,沒有從原理層面解決這個問題。還有一些方法采用預訓練的方式,先訓練一個基本模型,然后進行最終調整(Fine-tune)。然而這些方法并不適用于初始隱狀態估計的問題。因為隱狀態是一個RNN 單元的輸入,而不是參數,預訓練并不能得到合適的隱狀態。無論是否進行預訓練,RNN模型在實際測試時,都需要給定一個初始隱狀態作為第一個RNN 單元的輸入,想要得到一個合理的非零的隱狀態,必須要進行隱狀態估計,而不是簡單地置零或者隨機初始化。

2.3 初始隱狀態估計方法

為了解決人體運動建模中的首幀不連續問題,需要給出一個對神經網絡初始狀態的估計。本文提出從RNN 運動模型的定義出發,使用第一幀隱狀態對應的高斯似然估計,利用神經網絡的誤差函數來度量隱狀態的合理性:

其中:P(xi|xi-1,hi-1,ci-1)是式(7)中描述的高斯混合模型;n表示輸入運動的長度。

如圖3 所示,本文將h1和c1視為自變量,通過優化h1和c1以最大化式(8)中的概率P。因此需要找到一個隱狀態h1和c1,在這個隱狀態和用戶給出的第一幀運動的條件下,指定運動輸入的剩余部分出現的概率最大。

圖3 隱狀態估計模型Fig.3 Hidden state estimation model

本文將上述問題作為一個優化問題來求解。該問題的導數的推導方式與神經網絡相同,只是自變量從網絡各層的參數w和b變成了神經網絡在初始時刻的因變量h1和c1。圖3 用虛線框出的h1和c1是本文需要求解的初始隱狀態,x1,x2,…,xn為輸入運動序列。本文使用梯度下降的方法求解這個問題,方法步驟如下。

步驟1 首先把初始隱狀態初始化為零狀態。

步驟2 利用當前隱狀態對神經網絡進行正向傳播,更新y1,y2,…,yn-1。

步驟3 將-lnP作為損失函數,求出損失函數的值,并進行沿時間的反向傳播[16],得到導數

步驟4 利用得到的導數更新h1和c1的值其中:lr是梯度下降法的步長。如果損失函數已經收斂,那么迭代結束,并將得到的h1和c1作為運動合成中使用的初始隱狀態;否則回到步驟2。

本文成功地通過該方法找到了合適的初始狀態,使神經網絡模型對各幀的運動參數分布預測的均值與實際的用戶運動輸入非常接近,保證了在運動輸入末幀與運動合成首幀之間的連續性。同時,由于本文方法具有一個更合理的初始隱狀態,預測結果也比傳統的零初始隱狀態方法更準確。

3 實驗與結果分析

為了驗證本文的初始隱狀態估計方法能夠提升運動模型的性能,從運動合成、運動預測和運動插值三個方面進行實驗,實驗結果表明本文方法能夠提高運動合成質量和運動預測精度,還能得到真實自然的運動插值效果。

3.1 實驗設置

為驗證本文方法的有效性,將本文方法與經典的運動模型ERD 和RGRU 進行比較,在CMU 和H3.6m 數據集上進行定性和定量實驗。實驗中,學習步長取0.002,最大迭代次數取1 000,網絡結構中FC1、FC2、LSTM1、LSTM2、FC3 的神經元個數均設為500,模型在NVIDIA GTX 1080 上運行。

在運動合成實驗中,本文使用相同的隨機數,把3 幀運動作為輸入,使用ERD 和本文方法分別進行運動合成;在運動預測實驗中,將運動的前幾幀作為輸入,隨后分別測試ERD、RGUR 和本文方法的誤差結果,以度量本文方法的準確性;同時進行運動插值實驗以驗證本文方法能夠針對給定的運動首末幀生成一段完整的運動。

3.2 運動合成實驗

圖4 為運動合成實驗的可視化結果。前3 幀為輸入的運動,后5 幀為合成的運動,將運動不連續現象用圓圈標出??梢钥闯?,本文方法明顯合成了更自然的運動,消除了首幀的不連續現象,并且后續的合成幀也受到了第一幀的影響。這種影響在后續的運動預測實驗中將體現得更加明顯。

圖4 運動合成結果比較Fig.4 Comparison of motion synthesis results

圖5(a)繪制了腳踝關節點的z方向速度曲線??梢钥闯?,經過本文方法的初始隱狀態估計的結果明顯更加平滑。同時,為了驗證本文方法能夠消除神經網絡隱狀態在運動起始階段的跳變,使用相同的隨機變量,對使用CMU 運動數據庫訓練得到的運動模型進行采樣,隱狀態值如圖5(b)所示??梢钥闯霰疚姆椒ǖ玫降那€更加平滑,而ERD 得到的曲線在起始幀存在一個跳變。這也驗證了在2.2 節中提出的理論:運動隱狀態一般情況下都不會恰好為0。以往的運動模型在運行中從零隱狀態出發,對于人體運動合成模型本身也不合適。通過估計一個初始隱狀態,本文不但從輸出的運動姿態層面得到了一個更好的首幀合成結果,而且使RNN模型本身也得到了更加連續的隱狀態。

圖5 踝關節速度與隱狀態比較Fig.5 Comparison of ankle joint velocity and hidden state curves

3.3 運動預測實驗

本文在H3.6m 數據集上進行運動預測實驗,與之前的研究[4-6]使用相同的訓練數據集和測試數據劃分方法。運動預測的評估標準是預測結果和真實值的誤差大小。將本文方法在走路運動中的預測誤差和ERD、RGRU 進行了對比,如表1 所示。實驗結果表明本文方法的首幀運動預測結果誤差更小,相較于ERD 的預測結果,在第1 幀上的誤差減小了63.51%;相較于RGRU,在第1 幀的誤差減小了6.90%。并且因為第1 幀的誤差減小,導致后續的運動預測誤差也更小,在10 幀上的總誤差相較于ERD 和RGRU 減小了50.00%、4.89%。本文方法不僅能夠顯著降低模型的第一幀運動預測的誤差,還能降低總體的運動預測誤差。

表1 走路運動的關節角預測誤差比較Tab.1 Comparison of joint angle prediction errors for walking motion

圖6 為本文方法和ERD 的運動預測的可視化比較結果,圖中實線框內的3 幀為給定的運動輸入,虛線框內的5 幀為運動預測結果??梢钥闯?,本文方法的預測結果很好地緩解了首幀跳變問題,更接近真實運動。

圖6 運動預測結果比較Fig.6 Comparison of motion prediction results

3.4 運動插值實驗

由于首幀跳動變,文獻[4-5,7,17]中的方法都無法用于運動插值問題;而文獻[6]中的方法雖然避免了跳動,但是這種方法要求一個運動序列作為輸入,在運動插值問題中往往無法滿足;本文方法可以很好地用于運動插值任務。

運動插值問題的輸入是首幀和末幀的運動姿態和位置,要求合成中間的運動。與傳統運動插值方法不同,本文在最大后驗概率的框架下,利用運動模型作為先驗來優化求解最適合的運動,使運動合成結果保持自然的同時,盡可能地符合給定的運動輸入。優化問題的誤差函數可以寫成:

其中:第1 項是運動先驗項,度量得到的運動是否滿足運動模型建模,與式(6)完全一致;第2 項是擬合項,度量得到的結果是否符合指定的運動首末幀。該擬合項可以表示為:

其中:Pn是給定的末幀關節點位置;pn是優化得到的末幀關節點位置。插值結果如圖7 所示,首幀和末幀的姿態用實線框出,虛線框中的姿態對應運動插值,圖中每隔4 幀顯示1幀。實驗結果表明,本文方法可以很好地應用于運動插值問題,能夠解決以往基于RNN 的方法都無法解決的問題。

圖7 運動插值結果Fig.7 Motion interpolation results

4 結語

針對基于RNN 的人體運動模型中首幀跳變的問題,本文分析了問題產生的原因,并通過估計RNN 模型的初始隱狀態,成功地解決了RNN 模型的首幀跳變問題,并在運動合成、運動預測和運動插值任務上進行大量實驗。實驗結果表明,本文方法在運動合成任務中得到了連續、自然的運動合成結果;在運動預測問題中得到了更準確的運動預測結果;在運動插值任務中,解決了其他基于RNN 的模型無法解決的插值問題。本文主要研究人體運動合成中的首幀跳變問題,原理上并不依賴于使用的網絡模型結構,所以任何基于RNN 的運動模型都可以通過引入本文的初始隱狀態估計方法得到更好的運動合成質量和更精確的運動預測結果。

本文方法雖然在實驗中始終有效,但還無法從理論上保證得到的初始隱狀態始終合理,求出的隱狀態有可能并未在訓練中出現,導致運動合成結果不自然。而且本文方法只適用于逐幀運動合成的網絡結構,并不適用序列到序列的模型。

猜你喜歡
插值人體神經網絡
人體“修補匠”
人體冷知識(一)
排便順暢,人體無毒一身輕
神經網絡抑制無線通信干擾探究
基于Sinc插值與相關譜的縱橫波速度比掃描方法
奇妙的人體止咳點
一種改進FFT多譜線插值諧波分析方法
基于四項最低旁瓣Nuttall窗的插值FFT諧波分析
基于神經網絡的拉矯機控制模型建立
復數神經網絡在基于WiFi的室內LBS應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合