賀亞運,彭俊清,王健宗,肖京
平安科技(深圳)有限公司,廣東 深圳 518063
如何更好地由音樂生成舞蹈是一項有意義的研究。隨著元宇宙變得火熱,其中的虛擬角色需要有更多的技能,跳舞有助于虛擬角色在元宇宙或者其他線上多媒體平臺更好地表現(xiàn)自己。然而,生成令人滿意的舞蹈動作并非易事。
當前國內(nèi)外對3D舞蹈生成的研究相對較少。目前主流的方法是將3D舞蹈生成看作一個序列生成任務,例如參考文獻[1]提出的AI編舞框架,采用全注意力機的模型交叉Transformer網(wǎng)絡(luò),將一段音樂和2 s的初始舞蹈序列作為輸入,生成后續(xù)的舞蹈動作;參考文獻[2]提出了一種先使用VQ-VAE對舞蹈動作進行編碼和量化,再使用GPT網(wǎng)絡(luò)生成舞蹈動作序列的方法,有效地對舞蹈動作空間進行降維,使生成的舞蹈動作更加自然合理。
目前舞蹈生成過程中主要存在兩個問題:①生成的舞蹈動作很難與音樂節(jié)拍保持一致;②生成長序列的舞蹈動作會出現(xiàn)一些問題,如隨著時間推移,生成的動作質(zhì)量越來越差,或者動作一直簡單地重復。
許多研究者試圖設(shè)計一個模型,這個模型將從音樂中提取的特征作為輸入,進而生成對應的舞蹈動作序列[1,3-7],但是這樣的模型通常是不穩(wěn)定的,有時生成的舞蹈動作會很奇怪。這是因為舞蹈動作空間是一個高維度的空間,而在模型訓練時并沒有對動作空間的范圍進行嚴格限制,而且舞蹈動作與音樂節(jié)拍是否一致最影響人們對生成舞蹈的直觀感受。但是直接讓模型從數(shù)據(jù)中學習音樂與動作的這種一致性是很難的。
為了解決以上問題,本文提出了一種新的3D舞蹈生成方法,此方法受到人類學習舞蹈的過程的啟發(fā)。當學習一個舞蹈時,舞蹈老師通常會先告訴學生這個舞蹈包含哪些關(guān)鍵動作,學會了關(guān)鍵動作之后,再學習如何銜接它們。非常重要的一點是,舞蹈的關(guān)鍵動作通常會出現(xiàn)在音樂節(jié)拍點上,因此通過分析舞蹈配樂的節(jié)拍,可以找出舞蹈的關(guān)鍵動作。但是,找到關(guān)鍵動作之后,它們之間是彼此孤立的,接下來需要重新掃描舞蹈數(shù)據(jù)集,建立關(guān)鍵動作的轉(zhuǎn)換圖。該圖是一個有向有權(quán)圖,通過該圖可以獲取關(guān)鍵動作的轉(zhuǎn)換關(guān)系和轉(zhuǎn)換概率。
為了避免舞蹈動作空間維度太高導致生成的舞蹈動作不穩(wěn)定,本文先使用VQ-VAE-2[8]這種無監(jiān)督的學習方式,對所有的舞蹈動作進行量化編碼,最終生成一個舞蹈動作的編碼簿。編碼簿的大小通常只有幾百個編碼向量,其中每一個編碼都表示一種唯一的舞蹈動作。通過這種方式可以對舞蹈動作空間進行降維,這保證了生成的舞蹈動作更加穩(wěn)定,并且不會有奇怪的舞蹈動作。關(guān)鍵動作的銜接也很重要,本文使用有條件姿態(tài)插值網(wǎng)絡(luò)(以下簡稱姿態(tài)插值網(wǎng)絡(luò)),以兩個關(guān)鍵動作和舞蹈風格特征為輸入,生成中間的舞蹈動作序列。
完成以上步驟,模型就具備了為一首音樂生成對應舞蹈動作的能力。首先,通過分析節(jié)拍找出音樂的節(jié)拍點,這些節(jié)拍點就是需要放置關(guān)鍵動作的位置;然后,在關(guān)鍵動作轉(zhuǎn)換圖中進行采樣,生成一串關(guān)鍵動作,并將其放置到節(jié)拍點的位置;最后使用訓練好的姿態(tài)插值網(wǎng)絡(luò),生成關(guān)鍵動作之間的銜接動作序列。
綜上所述,本文的主要貢獻如下:
● 使用VQ-VAE-2對舞蹈動作進行編碼量化,有效降低了舞蹈動作空間維度,并且這種分層的模型結(jié)構(gòu)使生成的舞蹈動作更加流暢和穩(wěn)定;
● 提出通過建立關(guān)鍵動作轉(zhuǎn)換圖的方式來生成關(guān)鍵動作;
● 提出先生成關(guān)鍵動作,再使用姿態(tài)插值網(wǎng)絡(luò)生成銜接舞蹈動作的方式來生成3D舞蹈;
● 提出基于聯(lián)合因果注意力的姿態(tài)插值網(wǎng)絡(luò),并在模型訓練中引入了新的損失函數(shù)。
如何生成更加真實的人體動作序列一直是學者研究的一個重要方向。早些時候,人們使用動作圖[9-10]生成人體動作。動作圖是在大量人體動作捕捉數(shù)據(jù)[11]上建立的有向圖,圖上的節(jié)點表示一個人體動作,邊表示不同動作之間的轉(zhuǎn)換關(guān)系。將所有的動作歸類并放到一個圖上,然后在圖上采樣,就可以得到一串連續(xù)動作。然而這種動作生成的方式可控性很差,不能針對特定的場景生成對應的動作。之后隨著深度學習的發(fā)展,一些研究者試圖從一個大的舞蹈數(shù)據(jù)集中訓練出一個深度模型,希望這個深度模型可以自動學習出音樂與舞蹈動作之間的關(guān)系。他們嘗試了很多網(wǎng)絡(luò)架構(gòu),如CNN[12-13]、GAN[14]、Transformer等,但是生成效果卻不盡如人意。生成過程中經(jīng)常會出現(xiàn)動作的簡單重復,或者幾乎靜止不動的情況,而且會生成一些奇怪的動作,這說明模型沒有很好地學習到人體正常的姿態(tài)范圍。
目前已經(jīng)有比較成熟的對人體進行建模[15]的方法,但是理論上人體動作空間是很大的。受人體結(jié)構(gòu)的限制,每個關(guān)節(jié)只能在一定范圍內(nèi)移動,因此真正的人體動作空間實際上是大的動作空間中的一個子空間,如果不對這個動作空間進行空間限制,模型最終可能生成奇怪的人體動作。但是如果人為給各種可能的舞蹈動作做劃分和編碼,工作量是巨大的,幾乎不可能實現(xiàn)。為了解決這個問題,參考文獻[2]使用VQ-VAE[16]對舞蹈動作進行了編碼和量化,此方法是一種無監(jiān)督的方式,簡潔且高效。與參考文獻[2]不同的是,本文使用了更先進的VQ-VAE-2[8]的分層結(jié)構(gòu),更好地利用了局部信息和全局信息。而且本文提出的關(guān)鍵舞蹈動作是上半身動作和下半身動作結(jié)合的一個整體動作,因此本文會對整體動作進行編碼量化。在編碼簿的基礎(chǔ)上進行后序舞蹈動作的生成時,本文在步驟和方法上均與參考文獻[2]不同。
之前的研究表明,音樂節(jié)拍和運動的空間回折點在時間上具有強相關(guān)性[1,17],因此保證生成舞蹈的運動節(jié)拍和音樂節(jié)拍的契合度尤為重要。人們在使用動畫制作工具制作動畫時,通常并不會制作動畫的每一幀,而是制作動畫的關(guān)鍵幀,關(guān)鍵幀制作完成后,就可以由此生成流暢的動畫。與此過程類似,參考文獻[18]提出了一種分兩個步驟來生成3D舞蹈的方法:第一步,分析音樂節(jié)拍信息,找出音樂的節(jié)拍點,然后將節(jié)拍點處的音樂片段截取出來,并提取頻譜特征,使用提取的頻譜特征訓練一個深度模型,使之能夠通過音樂片段生成對應的關(guān)鍵動作;第二步,預測相鄰關(guān)鍵動作之間的運動曲線參數(shù),使用多結(jié)Kochanek-Bartels樣條(multiknots Kochanek-Bartels splines)方法對每個運動曲線進行建模。此種3D舞蹈生成方式邏輯上合理,但是音樂片段與關(guān)鍵動作并沒有很強的相關(guān)性,生成的關(guān)鍵動作之間幾乎沒有關(guān)聯(lián)。而且對于沒有在訓練集中的音樂,模型可能生成比較奇怪的動作。在預測相鄰關(guān)鍵動作之間的運動曲線時,參考文獻[18]使用了比較傳統(tǒng)的建模方法,流程復雜且模型準確率較低。本文也采用了相似的分階段生成3D舞蹈動作的框架,但是在生成關(guān)鍵動作時,本文使用了更合理的關(guān)鍵動作轉(zhuǎn)化圖,并且在生成關(guān)鍵動作之間的銜接動作時使用了更先進的深度模型,保證了更好的生成效果。
節(jié)奏舞者3D舞蹈生成模型的工作流程如圖1所示。與其他舞蹈生成模型[1,3,4,7,19-21]不同,本文沒有一次性讓模型生成所有的舞蹈動作序列,而是采用了“兩步走”的方式,先生成關(guān)鍵動作,再生成關(guān)鍵動作之間的銜接動作。關(guān)鍵動作在整個舞蹈中起著至關(guān)重要的作用,關(guān)鍵動作與音樂節(jié)拍是否一致非常影響觀眾的直觀感受。而且,本文沒有直接使用原始的動作數(shù)據(jù),而是先對數(shù)據(jù)集中的舞蹈動作做了編碼和量化,在編碼量化過程中使用VQ-VAE-2[8]的包含Top層和Bottom層的雙層結(jié)構(gòu),使模型可以同時考慮到局部信息和全局信息,這個過程會在第2.1節(jié)進行介紹。然后在第2.2節(jié)會介紹如何從數(shù)據(jù)集中提取所有的關(guān)鍵動作,并生成關(guān)鍵動作轉(zhuǎn)換圖[22]。
圖1 3D舞蹈生成過程總覽
人體的運動涉及幾十個關(guān)節(jié)[15],用來表示人體動作的向量的維度很高,而且人體各個關(guān)節(jié)都有各自的運動范圍,如果不加限制就可能生成很多奇怪的動作。
一種好的解決方案是先對高維的動作向量進行降維,把數(shù)據(jù)集中所有人體的動作壓縮到一個有限的空間中,而且最好以一種無監(jiān)督的方式進行。而這正是VQ-VAE[16,23]所擅長的。為了在舞蹈生成時可以讓模型同時考慮局部信息和全局信息,從而使生成的舞蹈動作更加穩(wěn)定和流暢,本文采用了VQ-VAE-2[8]的分層結(jié)構(gòu)。
如圖2所示,一段舞蹈動作M∈RT×(J×3),T是時長,J是關(guān)節(jié)數(shù)量,可以用一段量化特征序列表示,T′=T/d,d是Bottom部分的下采樣率,2C是量化特征的通道數(shù)。本文使用一個一維時域卷積E1將動作序列M編碼成向量,可以 繼續(xù)使用一維時域卷積E2編碼為。在訓練時,共分兩步,先訓練Top部分,再訓練Bottom部分,Top部分和Bottom部分分別包含一個編碼簿。對和使用的量化方式相同。以為例,對中的每個向量選取Top編碼簿中與之最近的元素作為量化后的向量。
圖2 3D 舞蹈動作生成使用的VQ-VAE-2模型結(jié)構(gòu)
為了避免關(guān)節(jié)整體位移對動作編碼的影響(出現(xiàn)在不同位置的同一個動作應該被編碼為同一個向量),本文先將輸入的動作序列M進行歸一化,即把根關(guān)節(jié)點的位置置零。為了表示做某個舞蹈動作時身體的整體移動速度,使用速度解碼器獲取整體移動速度V。V是一個矢量,包含速度的大小和方向。
訓練時,先訓練Top部分,再將Top部分固定,訓練Bottom部分。兩者訓練的方法和使用的損失函數(shù)基本一致,只是在訓練Bottom部分時,需要將進行上采樣后與進行拼接,生成最終的量化特征。下面以訓練Top部分為例進行介紹,其損失函數(shù)如下:
其中,Lrec為重建損失。在這個重建損失中,不僅包含3D關(guān)節(jié)點的相對位置損失,而且包含關(guān)節(jié)點運動的速度和加速度損失:
VQ-VAE-2訓練完成后,Top編碼簿和Bottom編碼簿中分別包含了代表各種舞蹈動作的量化特征。因為Top部分使用了更大的下采樣率,所以Top部分相較Bottom部分信息更加濃縮。Top編碼簿中的量化特征包含更多的全局信息,而Bottom編碼簿中的量化特征包含更詳細的局部信息。在進行舞蹈動作生成時,同時考慮全局信息和局部信息,可以使生成的動作更加穩(wěn)定流暢。
音樂節(jié)拍使用音頻處理工具Librosa[25]進行提取,即用Librosa獲取一段音樂中音樂節(jié)拍出現(xiàn)的時間點,此時間點處對應的舞蹈動作即關(guān)鍵動作。找出的關(guān)鍵動作可以用第2.1節(jié)中的Top編碼簿和Bottom編碼簿中的量化特征編號表示,分別記作T_code和B_code,通過分析整個舞蹈數(shù)據(jù)集,最終可以得到任何兩個關(guān)鍵動作的轉(zhuǎn)換關(guān)系和轉(zhuǎn)換概率(數(shù)據(jù)集中相鄰的兩個關(guān)鍵動作視為具有轉(zhuǎn)換關(guān)系),并且建立一個關(guān)鍵動作的轉(zhuǎn)換圖[22]。
關(guān)鍵動作轉(zhuǎn)換圖生成后,可以為一段新的音樂生成所需的關(guān)鍵動作。方法如下:先使用節(jié)拍分析工具獲取音樂的節(jié)拍信息,即獲取此段音樂中需要插入關(guān)鍵動作的時間點和關(guān)鍵動作數(shù)量;然后在關(guān)鍵動作轉(zhuǎn)換圖上進行隨機游走采樣,采樣所得的動作序列即此段音樂所需的關(guān)鍵動作序列。
生成關(guān)鍵舞蹈動作后,可以使用姿態(tài)插值網(wǎng)絡(luò)生成兩個關(guān)鍵動作之間的銜接動作,如圖1所示。先使用姿態(tài)插值模型生成Top部分的舞蹈動作編碼Mtop,再將Mtop作為Bottom部分姿態(tài)插值模型的條件輸入來生成Bottom部分的舞蹈動作編碼Mbott。姿態(tài)插值模型如圖3所示,相比Top部分的姿態(tài)插值模型,Bottom部分的姿態(tài)插值模型只是增加了Mtop作為條件輸入,其他結(jié)構(gòu)相同。下面僅介紹Bottom部分舞蹈動作編碼的生成過程。
圖3 姿態(tài)插值模型
圖4所示是如何使用Bottom部分的姿態(tài)插值模型估計舞蹈動作的概率值。假設(shè)有一段Bottom部分的動作編碼序列Mbott,Mbott需要符合特定規(guī)則,Mbott序列的第一個元素為起始動作編碼pstart,第二個元素為終止動作編碼pend,意為模型生成的整個序列要以pstart為開始,并以pend為終止。假如現(xiàn)在已經(jīng)生成了Top部分的舞蹈動作編碼Mtop。接下來,首先將Mbott和Mtop分別轉(zhuǎn)化為可學習的特征向量B和T,并將它們與提取的舞蹈風格特征向量S沿時間維度進行拼接[27];然后將拼接的向量送入12層(該值可以調(diào)整,本文選擇層數(shù)為12)的Transformer層;最后經(jīng)過全連接和Softmax層輸出表示動作編碼概率的向量R。R的長度為Bottom編碼簿的大小。對于時刻t,計算編碼簿中每一個編碼zj在R中對應的概率值,并選取概率最大值對應的編碼作為t時刻的預測動作編碼值:
圖4 有條件姿態(tài)插值網(wǎng)絡(luò)結(jié)構(gòu)
2.3.1 Transformer層與聯(lián)合因果注意力
Transformer[26]是一個基于注意力機制的網(wǎng)絡(luò),被廣泛應用在自然語言處理和圖像識別等領(lǐng)域。Transformer中最重要的是多頭注意力機制的使用,輸入X經(jīng)過多頭注意力機制層后被轉(zhuǎn)化為新的向量U。計算過程如下所示:
其中,Q、K、V由輸入矩陣X計算而來,M是掩碼矩陣,針對不同類型的注意力機制有不同的取值。本文在預測下一個Bottom動作編碼時,應該防止模型使用未來信息,因此此處應該使用因果注意力,也就是模型只能用當前時刻之前的信息。但是本文中模型的輸入較復雜,輸入中包含由Bottom舞蹈動作編碼轉(zhuǎn)化而來的嵌入向量B、由Top舞蹈動作編碼轉(zhuǎn)化而來的嵌入向量T,以及舞蹈風格向量S。針對特殊的輸入結(jié)構(gòu),本文提出了一種新的注意力層,稱之為聯(lián)合因果注意力層,其結(jié)構(gòu)如圖5所示。因為要預測下一時刻Bottom舞蹈的動作編碼,為了避免模型使用未來信息,所以對Bottom部分使用因果注意力,而對Top部分和舞蹈風格向量部分使用全注意力,并且只允許Top部分和舞蹈風格向量部分向Bottom部分單向傳遞信息。
圖5 Transformer層結(jié)構(gòu)
聯(lián)合因果注意力層既保證了不同種類輸入之間進行充分的信息交換,同時保證了在預測下一時刻的Bottom動作編碼時,模型不會使用未來信息。
2.3.2 姿態(tài)插值模型的訓練
模型采用有監(jiān)督學習的方式進行訓練。但是因為姿態(tài)插值模型需要生成兩個關(guān)鍵動作之間的銜接動作,所以筆者希望模型可以很好地學習到如何從前一個關(guān)鍵動作開始,順滑地進行中間動作的過渡,并保證最后生成的動作一定落在后一個關(guān)鍵動作上。對于模型生成的序列,頭部序列和尾部序列的生成質(zhì)量非常重要,因此在訓練時,本文提出了一種新的損失函數(shù):
其中,N為模型預測的兩個關(guān)鍵動作之間銜接動作序列的長度,pn為動作編碼的真實值,為模型輸出的動作編碼的預測值。為二次函數(shù),當x∈[0,1]時,,并且在x= 0 和x=1處,f(x)=1,在x=0.5處,,即x∈ [ 0,1],函數(shù)呈現(xiàn)兩端大、中間小的形態(tài)。本文中α=2。損失函數(shù)中加入此函數(shù)后,會對預測動作序列的兩端給予更嚴厲的懲罰,使模型更好地保障兩端動作編碼的生成質(zhì)量。
訓練完成后,姿態(tài)插值模型可以學習到如何生成pstart和pend之間的動作序列,并根據(jù)輸入的舞蹈風格調(diào)整模型的輸出。
先生成Top部分的動作編碼,再生成Bottom部分的動作編碼,這是一個由粗略到精細的生成過程,可以同時考慮到全局信息和局部信息。
最后,可以使用生成的Top部分的動作編碼和Bottom部分的動作編碼按圖2所示的方式生成最終的舞蹈動作序列。
本文在目前公開的最大的舞蹈數(shù)據(jù)集AIST++[1]上進行模型訓練和測試。此數(shù)據(jù)集一共包含992段高質(zhì)量的3D舞蹈片段。數(shù)據(jù)集被劃分為訓練集和測試集兩個集合,其中訓練數(shù)據(jù)952條,測試數(shù)據(jù)40條。在訓練集上進行模型訓練,且只在測試集上進行模型測試。在進行數(shù)據(jù)集劃分時,需要嚴格保證訓練集和測試集沒有音樂和舞蹈動作片段的重合。
訓練完成后,模型根據(jù)給定的音樂可以輸出對應的舞蹈序列,舞蹈序列的每一幀為人體24個關(guān)節(jié)的坐標值,輸出的舞蹈序列可以導入虛擬3D引擎Unity中進行虛擬人物驅(qū)動,Unity中需要加載FinalIK資源包。本文中演示使用的UNITy版本為2019.03.11f1,F(xiàn)inalIK版本為V2.1。
本文使用3個量化指標來評估生成的舞蹈動作。這3個指標分別為舞蹈動作質(zhì)量、舞蹈動作多樣性、音樂與舞蹈節(jié)拍一致性。
● 舞蹈動作質(zhì)量:舞蹈動作質(zhì)量的獲取方法是,計算生成的舞蹈動作和數(shù)據(jù)集中所有的舞蹈動作在動力學和幾何學兩種特征上的FID[29]值,即弗雷歇距離。舞蹈動作的動力學特征和幾何學特征分別使用fairmotion[30]中實現(xiàn)的兩個運動特征提取器[31]進行提取,分別使用FIDk和FIDg表示動力學特征對應的FID值和幾何學特征對應的FID值。好的舞蹈動作質(zhì)量可以保證生成的舞蹈動作更加真實合理。
● 舞蹈動作多樣性:當給定不同的音樂時,人們希望模型可以生成更加多樣性的舞蹈。計算在AIST++測試集上生成的40段舞蹈在特征空間中的平均歐氏距離,以此衡量生成舞蹈的多樣性。在這里特征空間也分為兩種,分別為動力學特征空間和幾何學特征空間,記為Distk和Distg。
● 音樂與舞蹈節(jié)拍一致性:節(jié)拍一致性是最直接影響人們對舞蹈觀看體驗的指標,這個指標可以衡量音樂和舞蹈動作的相關(guān)性。本文按照其他論文的做法,計算舞蹈動作和背景音樂的節(jié)拍一致性得分,這個值可以評估舞蹈動作的節(jié)拍和音樂節(jié)拍的相關(guān)程度,計算式為:
其中,Bd={td}是舞蹈動作節(jié)拍,Bm={tm}是音樂節(jié)拍,σ是針對不同F(xiàn)PS(每秒幀數(shù))的歸一化參數(shù)。本文中FPS值為60,對應的σ值為3。音樂節(jié)拍可以使用音頻處理工具Librosa[25]進行提取,即通過工具分析得到音樂節(jié)拍出現(xiàn)的時間點,舞蹈動作節(jié)拍通過計算運動速度的局部最小值來獲得。
本文利用以上3個指標對比了節(jié)奏舞者模型與目前幾個較好的舞蹈生成模型。參與對比的舞蹈生成模型包括Li J M等人所提模型[32]、DanceNet[33]、DanceRevolution[34]、FACT[1]、Bailando[2]。在AIST++測試集上,每種方法都生成40段對應的舞蹈序列,然后計算上述3個指標。對比結(jié)果見表1。通過表1可以看出,節(jié)奏舞者模型在各個指標上的結(jié)果優(yōu)于絕大部分現(xiàn)有模型:在FIDk和FIDg上相較之前表現(xiàn)最好的模型Bailando有更好的效果;與Bailando相比在節(jié)拍一致性得分上提升了5%,說明節(jié)奏舞者模型生成的舞蹈與音樂更加契合。這說明先建立關(guān)鍵動作轉(zhuǎn)化圖,再從圖中采樣獲取關(guān)鍵動作的方式可以更好地保證音樂節(jié)拍與舞蹈節(jié)拍的一致性。這驗證了本文方法的有效性。
舞蹈生成的最終目的是供人欣賞。為了在人的主觀感受上更好地評估生成舞蹈的效果,本文進行了用戶體驗調(diào)查。首先從每種舞蹈生成方法生成的舞蹈中選出30個生成樣本,然后將每種方法生成的樣本與節(jié)奏舞者模型生成的樣本隨機兩兩組合,之后選擇10位觀眾,讓每位觀眾觀看每個組合的視頻文件,并標記哪個文件中生成的舞蹈效果更好,最后將結(jié)果進行匯總。詳細結(jié)果可見表1。相比之前最好的舞蹈生成模型Bailando,節(jié)奏舞者模型勝出率高達74.6%。節(jié)奏舞者模型生成的舞蹈樣例如圖6所示。
圖6 節(jié)奏舞者生成的舞蹈樣例
表1 各舞蹈生成方法的結(jié)果
本文進行了消融實驗,以驗證VQ-VAE-2和姿態(tài)插值網(wǎng)絡(luò)中聯(lián)合因果注意力層的有效性。有效性的評估使用了動作質(zhì)量(FIDk和FIDg)和節(jié)拍一致性得分兩種量化指標。除量化指標外,為了衡量不同生成結(jié)果對人產(chǎn)生的直觀感受,筆者請觀眾對生成的樣本進行了主觀感受打分。
本文比較了VQ-VAE和VQ-VAE-2對舞蹈動作進行編碼量化的效果差異,并且研究了在訓練VQ-VAE-2網(wǎng)絡(luò)時,式(3)中節(jié)點運動的速度和加速度損失的加入對結(jié)果的影響,結(jié)果見表2。從表2可以看出,相比VQ-VAE,VQ-VAE-2在FIDk、FIDg和節(jié)拍一致性得分3個指標上均有更好的表現(xiàn),說明VQ-VAE-2這種分層的結(jié)構(gòu)可以在舞蹈生成過程中兼顧局部信息和全局信息,有助于提升舞蹈生成質(zhì)量,符合實驗預期。損失函數(shù)中去除速度/加速度損失項后,F(xiàn)IDk和FIDg明顯升高,分別上升了8.17%和6.39%;損失函數(shù)中去掉速度和加速度損失項后,節(jié)拍一致性得分變低,說明速度和加速度對于舞蹈動作序列來說是非常重要的信息,丟失這部分信息會影響模型的舞蹈生成質(zhì)量。
表2 不同量化方式和速度/加速度損失對結(jié)果的影響實驗分析
對于姿態(tài)插值網(wǎng)絡(luò),首先,將聯(lián)合因果注意力層換成最簡單的因果注意力層,即圖5中嵌入向量B和嵌入向量T之間沒有進行特征交叉融合。結(jié)果發(fā)現(xiàn)FIDk和FIDg大幅上升,說明在生成Bottom部分動作編碼的過程中,特征向量T起到了關(guān)鍵的指導作用。為了探究舞蹈風格特征向量S對舞蹈生成效果的影響,實驗中將舞蹈風格特征向量S去掉,即圖5中,舞蹈風格特征向量S在注意力層中不參與特征融合,讓模型根據(jù)測試集的音樂進行舞蹈生成,最后選擇10位觀眾對舞蹈風格特征向量參與訓練的模型生成的樣本和舞蹈風格特征向量未參與訓練的模型生成的樣本分別打分(分數(shù)范圍為1~5分),并計算平均分。結(jié)果顯示,舞蹈風格特征向量參與訓練的模型生成的樣本分數(shù)更高,說明舞蹈風格特征向量在舞蹈生成時可以有效控制生成舞蹈的風格,給觀眾更好的視覺感受。詳細結(jié)果見表3。
表3 聯(lián)合因果注意力層和舞蹈風格特征向量對生成結(jié)果的影響
消融實驗結(jié)果表明,VQ-VAE-2對舞蹈的生成質(zhì)量有提升作用。將聯(lián)合因果注意力層替換為簡單的因果注意力層后,舞蹈生成質(zhì)量大幅下降,這有效驗證了Top部分舞蹈動作編碼和Bottom部分舞蹈動作編碼在舞蹈生成過程中協(xié)同配合的重要性。最后,實驗結(jié)果表明,舞蹈風格向量的加入可以有效地控制生成舞蹈的風格,統(tǒng)一的舞蹈風格讓整個舞蹈更加和諧流暢,給人更好的視覺感受。
本文提出了一種新的3D舞蹈生成框架。針對生成的舞蹈動作和音樂節(jié)拍難以契合的問題,本文提出了先構(gòu)建關(guān)鍵動作轉(zhuǎn)換圖,再生成中間銜接動作的舞蹈生成方法,有效保證了動作節(jié)拍與音樂節(jié)拍的高度一致性。針對舞蹈動作空間維度太大而導致生成的舞蹈動作怪異的問題,本文提出使用VQ-VAE-2對舞蹈動作進行編碼和量化,對舞蹈動作空間進行了有效降維,而且采用VQ-VAE-2的分層結(jié)構(gòu),讓模型在生成舞蹈時可以兼顧全局信息和局部信息,使生成的舞蹈動作更加穩(wěn)定流暢。為了更好地生成關(guān)鍵動作之間的銜接動作,本文提出了基于聯(lián)合因果注意力的姿態(tài)插值網(wǎng)絡(luò),同時在模型訓練時,引入了新的損失函數(shù)來保證生成的中間動作和兩端的關(guān)鍵動作能更好地銜接。實驗結(jié)果表明,在各量化指標上,節(jié)奏舞者模型相較之前的舞蹈生成模型均有更好的表現(xiàn)。