最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

基于學(xué)習(xí)的動(dòng)作匹配

2021-09-28 22:19 作者:有木乘舟  | 我要投稿

??

? 動(dòng)作匹配是一種簡(jiǎn)單而強(qiáng)大的為游戲角色添加動(dòng)畫的方法。和其他方案相比,動(dòng)作匹配有了基本配置就不需要太多的人力工作:無需在圖形中進(jìn)行結(jié)構(gòu)剪輯、精確剪輯或同步,也不用在狀態(tài)轉(zhuǎn)換之間去單獨(dú)制作新的過渡動(dòng)畫。?

? 然而,動(dòng)作匹配在與大量運(yùn)動(dòng)捕捉數(shù)據(jù)結(jié)合使用時(shí)效果最佳,但也要付出代價(jià):占用大量?jī)?nèi)存,且隨著系統(tǒng)和應(yīng)用增多會(huì)占用更多內(nèi)存。在這里,我們提出了一個(gè)解決這個(gè)問題的方案,稱為學(xué)習(xí)動(dòng)作匹配,它利用機(jī)器學(xué)習(xí)來大幅減少基于動(dòng)作匹配的動(dòng)畫系統(tǒng)的內(nèi)存使用。

Motion Matching

? 首先讓我們理解一下動(dòng)作匹配的工作原理。我們最好從數(shù)據(jù)開始研究 —— 長(zhǎng)段的、非結(jié)構(gòu)化的動(dòng)畫 —— 通常來自動(dòng)作捕捉數(shù)據(jù)集。這是這種數(shù)據(jù)集中的一個(gè)典型動(dòng)畫:

? 思考一下這個(gè)問題:如何使用這個(gè)源數(shù)據(jù)構(gòu)建一個(gè)新的動(dòng)畫,讓角色跟隨這個(gè)路徑?

? 有好的動(dòng)畫數(shù)據(jù)集,動(dòng)作匹配就可以解決這個(gè)問題。動(dòng)作匹配的原理是,在數(shù)據(jù)集中重復(fù)搜索一個(gè)滿足這個(gè)條件的片段:該片段能從當(dāng)前位置開始播放,且比當(dāng)前片段更好的滿足需求。原始結(jié)果就是一些動(dòng)畫片段的拼湊,大概就是這樣:

??這里的關(guān)鍵是,決定什么時(shí)候開始播放新的動(dòng)畫而不是繼續(xù)當(dāng)前已經(jīng)播放的動(dòng)畫。選擇新的片段意味著跳到數(shù)據(jù)集里某個(gè)動(dòng)畫的某個(gè)幀,這要求系統(tǒng)能衡量這一行為帶來的后果優(yōu)劣。要確定具體如何做到這一點(diǎn)并不容易,因?yàn)橐粋€(gè)動(dòng)畫中的單獨(dú)一個(gè)幀包含了很多信息 —— 有些信息可能對(duì)做出這個(gè)決定幫不上忙。

? 一個(gè)好的解決方案是手動(dòng)挑選一些信息----特征,之后使用這些特征去判斷一個(gè)動(dòng)畫的某一幀匹配當(dāng)前任務(wù)的效果如何。在這個(gè)情形中,我們需要特征表達(dá)兩個(gè)信息:

  • 首先,角色將要跟隨的路徑,這樣我們就能看到和需要的路徑相似程度

  • 其次,當(dāng)前角色的姿勢(shì),這樣如果我們播放新的片段,角色姿勢(shì)不會(huì)發(fā)生太大的變化。

? 通過一些實(shí)驗(yàn),可以發(fā)現(xiàn)僅僅需要雙腳位置、雙腳速度、臀部位置、未來軌跡和方向的一些采樣,就可以完成這個(gè)路徑跟隨的工作:

? 這些信息就更加簡(jiǎn)單、易于管理,對(duì)人類以及要在運(yùn)行環(huán)境中不停搜索匹配的算法來說也是。如果將每個(gè)動(dòng)畫幀的所有特征值收集到一個(gè)數(shù)組中,我們將獲得一個(gè)向量,稱之為特征向量(上圖中的彩色數(shù)組)。這是該框架執(zhí)行任務(wù)的能力的簡(jiǎn)單數(shù)字表示。我們對(duì)數(shù)據(jù)集中的所有幀都提取這些特征,并將結(jié)果向量堆疊成一個(gè)大矩陣。我們把它稱之為匹配特征數(shù)據(jù)庫(kù)。當(dāng)要決定是否切換新片段時(shí),算法從當(dāng)前動(dòng)作和路徑的未來片段生成一個(gè)查詢特征向量,之后從數(shù)據(jù)庫(kù)中查詢匹配最佳結(jié)果。找到后,在動(dòng)畫數(shù)據(jù)集中查找相應(yīng)的完整動(dòng)作,開始播放。搜索以及找到的最佳匹配可視化是這樣的:??

? 切換到下個(gè)片段時(shí)出現(xiàn)煩人的抖動(dòng)咋辦?盡管我們有一些可以捕捉當(dāng)前姿勢(shì)的特征,我們也有一些要體現(xiàn)未來軌跡的特征。接受了這些軌跡特征,就像接受一些運(yùn)動(dòng)不連續(xù)性,以換取對(duì)路徑的跟隨。如果姿勢(shì)變化不是太劇烈,這種不連續(xù)性可以使用一些常用技術(shù)輕松消除,比如一個(gè)短的淡入淡出混合,或者通過衰減過渡動(dòng)畫的源和目標(biāo)幀中的差異,也叫做慣性化技術(shù)。慣性化混合應(yīng)用之后,效果是這樣的:

? 最后,通過腳部鎖定和反向動(dòng)力學(xué)來制作出一個(gè)漂亮、順滑的動(dòng)畫:

? 通過選擇不同的特征進(jìn)行匹配,我們可以開發(fā)出能完成不同任務(wù)的動(dòng)畫系統(tǒng),比如和道具交互的、在崎嶇地面上行走的,甚至對(duì)其他角色產(chǎn)生反應(yīng)的。這是當(dāng)今很多游戲中杰出動(dòng)畫系統(tǒng)的背后的秘密武器。

The Scalability Problem

? 現(xiàn)在你已經(jīng)了解了動(dòng)作匹配的原理了,那考慮一下一個(gè) AAA 游戲的制作可能需要多少數(shù)據(jù)。取決于設(shè)計(jì),有很多因素需要考慮,比如需要支持的運(yùn)動(dòng)類型(空閑、走、小跑、跑、疾跑、慢速下身移動(dòng)、快速下身移動(dòng)、跳躍、跳步、下蹲……),可用的動(dòng)作和他們的參數(shù)(開門、坐在椅子上、拿起物品、上馬……),組合(行走,拿著輕武器行走,拿著雙持重武器行走),這些運(yùn)動(dòng)類型可能還因?yàn)樵惋L(fēng)格(比如平民版,士兵版)和游戲狀態(tài)(受傷、醉酒,等等)要進(jìn)一步合成??赡苣氵€沒反應(yīng)過來,系統(tǒng)里面就已經(jīng)有了幾百 MB 甚至 GB 的數(shù)據(jù)?,F(xiàn)在,讓我們強(qiáng)調(diào)一下關(guān)于動(dòng)作匹配特別重要的一點(diǎn):動(dòng)作匹配為你進(jìn)行數(shù)據(jù)組合。如果你有兩個(gè)動(dòng)畫,一個(gè)在走路,一個(gè)在喝酒,動(dòng)作匹配是不會(huì)幫你生產(chǎn)出一個(gè)角色一邊走路一邊喝酒的場(chǎng)景的。動(dòng)作匹配只會(huì)播放你提供的數(shù)據(jù)。

? 而且,我們?cè)趦?nèi)存中要存的不僅僅是動(dòng)畫數(shù)據(jù),還有匹配特征數(shù)據(jù)庫(kù),而這個(gè)數(shù)據(jù)庫(kù)的大小和特征的數(shù)量、動(dòng)畫數(shù)據(jù)量成正比。自然而然,在更大的數(shù)據(jù)庫(kù)中進(jìn)行搜索,就意味著運(yùn)行性能會(huì)有所下降。這就是我們?yōu)槭裁凑f,動(dòng)作匹配在數(shù)據(jù)方面,擴(kuò)展性很差。

? 我們這項(xiàng)研究的目標(biāo)很簡(jiǎn)單:用其他方法替代動(dòng)作匹配機(jī)制,在產(chǎn)生同樣的結(jié)果的同時(shí),不要求在內(nèi)存中存這么多的數(shù)據(jù)。動(dòng)畫師的工作流程應(yīng)該不變:動(dòng)畫師應(yīng)該使用動(dòng)作匹配和系統(tǒng)和盡可能多的數(shù)據(jù),來制作他們喜歡的任何系統(tǒng)。在動(dòng)畫師完成工作之后,接入一個(gè)新的系統(tǒng),該系統(tǒng)能生成相同的結(jié)果,但內(nèi)存消耗更低,CPU 消耗恒定。這就是基于學(xué)習(xí)的動(dòng)作匹配。

3?基于學(xué)習(xí)的動(dòng)作匹配

? 首先,我們要更抽象地思考我們的動(dòng)畫系統(tǒng),把動(dòng)畫系統(tǒng)作為一個(gè)邏輯系統(tǒng),這個(gè)系統(tǒng)接收的輸入是一些控制查詢(可能是想要跟隨的路徑,或者搖桿位置、按鍵按下等等),產(chǎn)生的輸出是連續(xù)的、流暢的動(dòng)畫。如我們所見,一個(gè)基于動(dòng)作匹配的動(dòng)畫系統(tǒng),是通過提供給他的動(dòng)畫數(shù)據(jù)以及定期搜索特征數(shù)據(jù)庫(kù)來完成這項(xiàng)任務(wù)的。

? 更具體地說,動(dòng)畫是由一系列完整姿勢(shì)描述的,每一個(gè)姿勢(shì)都由一個(gè)幀索引來進(jìn)行引用,幀索引指向的是在動(dòng)畫數(shù)據(jù)集中姿勢(shì)存儲(chǔ)的地點(diǎn)。播放一個(gè)片段,意味著每過一幀,就對(duì)當(dāng)前索引進(jìn)行遞增,并在動(dòng)畫數(shù)據(jù)集中查詢匹配的完整姿勢(shì)。動(dòng)作匹配搜索每隔幾幀進(jìn)行一次,并把查詢特征和匹配特征數(shù)據(jù)庫(kù)中的每一個(gè)條目比較,來找到最佳匹配的幀索引。最佳匹配的幀索引替換掉當(dāng)前索引,然后從這里繼續(xù)播放。下圖總結(jié)了這個(gè)邏輯:

? ?讓我們首先考慮能簡(jiǎn)化掉此圖中的動(dòng)畫數(shù)據(jù)集。一種思路是嘗試并重新使用為在搜索中使用而計(jì)算出的匹配特征數(shù)據(jù)庫(kù)。畢竟,存儲(chǔ)在該數(shù)據(jù)庫(kù)中的特征涵蓋了動(dòng)畫的許多重要方面的信息。我們訓(xùn)練一個(gè)稱為解壓縮器的神經(jīng)網(wǎng)絡(luò),將匹配特征數(shù)據(jù)庫(kù)中的特征向量作為輸入,并生成相應(yīng)的完整姿勢(shì)作為輸出。有了這個(gè)網(wǎng)絡(luò),每幀邏輯現(xiàn)在看起來像這樣:

? ?讓我們看看與標(biāo)準(zhǔn)姿勢(shì)查找相比,它的表現(xiàn)如何。下面的對(duì)比視頻中,可以看到灰色是使用姿勢(shì)查找生成的姿勢(shì),紅色是使用解壓縮器生成的姿勢(shì)。

? 可以看出,雖然動(dòng)畫相似,有時(shí)候會(huì)看出一些錯(cuò)誤(看左邊線骨架上手的位置)。這是因?yàn)槠ヅ涮卣鳑]有攜帶足夠的信息,我們無法在所有情況下重建姿勢(shì)。盡管如此,重建動(dòng)畫的質(zhì)量還是出奇地好。如果我們給解壓縮器一些額外的信息,比如多一些附加的特征,而不是僅僅依賴匹配的特征數(shù)據(jù)庫(kù)呢?

? 事實(shí)上,我們可以使用自動(dòng)編碼網(wǎng)絡(luò)自動(dòng)提取附加特征,而不是手動(dòng)選擇(更多信息請(qǐng)參見論文)。訓(xùn)練這個(gè)自動(dòng)編碼器為我們提供了每幀的附加特征向量,這些附加特征是自動(dòng)選擇的,以提高解壓縮器的準(zhǔn)確性。我們必須將所有幀的附加特征,和匹配特征數(shù)據(jù)庫(kù)一起,存進(jìn)一個(gè)附加特征數(shù)據(jù)庫(kù)。讓我們看看這對(duì)我們的邏輯意味著什么:

? 下面就是有了這些附加特征帶來的質(zhì)量提升,姿勢(shì)查詢的結(jié)果為灰色,解壓縮器和解壓縮器的結(jié)果是綠色。

? 非常好!現(xiàn)在的輸出結(jié)果和原始動(dòng)畫幾乎完全一樣了。在這個(gè)過程中我們節(jié)約了多少內(nèi)存?

? 現(xiàn)在動(dòng)畫數(shù)據(jù)集不需要存在內(nèi)存中了,我們大幅減少了內(nèi)存消耗,而輸出結(jié)果的質(zhì)量變化幾乎無法察覺。同時(shí),我們也讓原始的動(dòng)作匹配行為不變。

? 不盡如人意的是,擴(kuò)展性問題并沒有完全消失:剩余的匹配和附加特征數(shù)據(jù)庫(kù)的大小,依然會(huì)和動(dòng)畫數(shù)據(jù)集的大小一起增長(zhǎng)。首先,我們通過把匹配特征數(shù)據(jù)庫(kù)和附加特征數(shù)據(jù)庫(kù)合并在一起,組成合并特征數(shù)據(jù)庫(kù),來簡(jiǎn)化我們的流程圖。這樣,一個(gè)給定的幀的合并特征向量,就是匹配和附加特征向量的結(jié)合。

? 下一步就是解決在每一幀上對(duì)于合并特征數(shù)據(jù)庫(kù)的依賴。這里,我們不對(duì)當(dāng)前幀進(jìn)行遞增然后再進(jìn)行特征查找,而是訓(xùn)練一個(gè)新的神經(jīng)網(wǎng)絡(luò),叫做步驟器,用步驟器去通過當(dāng)前幀的合并特征向量,去預(yù)測(cè)下一幀的合并特征向量。因?yàn)槲覀兿M軌蛱峁└哳l率的過渡(比如每秒 5 次),步驟器僅需要學(xué)習(xí)短時(shí)間的預(yù)測(cè)即可,這樣,步驟器的大小可以很小,但預(yù)測(cè)依然準(zhǔn)確。使用步驟器的新邏輯如下所示:

? 非常好!現(xiàn)在我們不再需要每一幀都用合并特征數(shù)據(jù)集了。但在過渡階段,還有兩個(gè)最終的操作依賴于內(nèi)存中的合并特征數(shù)據(jù)庫(kù):實(shí)際的動(dòng)作匹配搜索和緊接著的特征查詢。這里,我們不再搜索最佳匹配的特征、查詢相應(yīng)的附加特征、返回合并向量,而是訓(xùn)練第三個(gè),也是最后一個(gè)神經(jīng)網(wǎng)絡(luò) —— 叫做投射器?—— 來直接通過查詢向量來預(yù)測(cè)合并特征,本質(zhì)上是模擬搜索和查找。現(xiàn)在我們可以完全不依賴任何數(shù)據(jù)庫(kù)了:

? 訓(xùn)練完所有這些網(wǎng)絡(luò)之后,完整的基于學(xué)習(xí)的動(dòng)作匹配邏輯是這樣的:

? 這個(gè)邏輯不僅非常簡(jiǎn)單,而且正如我們?cè)诮鈮嚎s器中發(fā)現(xiàn)的那樣,如果每一個(gè)單獨(dú)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練的地精確度都足夠高,基于學(xué)習(xí)的動(dòng)作匹配和基本的動(dòng)作匹配的區(qū)別非常難以察覺。我們展示一下基于學(xué)習(xí)的動(dòng)作匹配應(yīng)用到我們一直使用的路徑跟隨的例子中的效果:

這是內(nèi)存使用:

? 在這個(gè)例子中,基于學(xué)習(xí)的動(dòng)作匹配將內(nèi)存消耗縮小到了十分之一 —— 不錯(cuò)!

? 不過,如果我們想看到巨大的收益,我們需要大幅增加動(dòng)畫數(shù)據(jù)集的內(nèi)容。在實(shí)驗(yàn)中,我們?yōu)榻巧砑恿?47 個(gè)新的關(guān)節(jié),包括手和手指,還向數(shù)據(jù)集添加了三十多種新的運(yùn)動(dòng)風(fēng)格,所有這些都可以通過開關(guān)進(jìn)行控制。下面是在我們添加所有數(shù)據(jù)和所有神經(jīng)網(wǎng)絡(luò)后,互動(dòng)式的基于學(xué)習(xí)的動(dòng)作匹配動(dòng)作控制器的樣子:

這是內(nèi)存使用:

? 盡管我們添加了大量的數(shù)據(jù),包括很多的關(guān)節(jié)和特征,并讓動(dòng)作匹配的內(nèi)存消耗達(dá)到了半個(gè) GB,基于學(xué)習(xí)的動(dòng)作匹配的內(nèi)存消耗依然相對(duì)較小。最后,我們需要存儲(chǔ)的僅僅是大概 17MB 的神經(jīng)網(wǎng)絡(luò)權(quán)重。我們甚至發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)權(quán)重也可以通過量化為 16 位整數(shù),進(jìn)一步壓縮一倍到兩倍,而不會(huì)對(duì)結(jié)果產(chǎn)生任何可見的影響。如果把這個(gè)壓縮也包括在內(nèi),我們可以將內(nèi)存消耗降低到原先的 1/70 ——將 590MB 的控制器壓縮成 8.5MB!

因此,基于學(xué)習(xí)的動(dòng)作匹配是一種非常強(qiáng)大的、可通用的、系統(tǒng)化的方法,可以將基于動(dòng)畫系統(tǒng)的動(dòng)作匹配進(jìn)行壓縮,并可為非常大的數(shù)據(jù)集進(jìn)行擴(kuò)展。使用基于學(xué)習(xí)的動(dòng)作匹配,可以在制作預(yù)算有限的情況下,實(shí)現(xiàn)非常復(fù)雜的、需要大量數(shù)據(jù)的動(dòng)畫控制器,比如如下視頻中,角色在不平的地面上行走,并且和其他角色、道具無縫地進(jìn)行交互。這個(gè)場(chǎng)景中的每一個(gè)角色的動(dòng)畫都使用了基于學(xué)習(xí)的動(dòng)作匹配。

? 我們希望基于學(xué)習(xí)的動(dòng)作匹配,能從根本上擴(kuò)展基于動(dòng)畫系統(tǒng)的動(dòng)作匹配的可能性,讓美術(shù)、設(shè)計(jì)師、程序員完全發(fā)揮自己的創(chuàng)造力,開發(fā)出能夠?qū)τ螒蛑懈鞣N情形做出上千種真實(shí)、獨(dú)特反饋的角色,而不用擔(dān)心對(duì)內(nèi)存或者性能的影響。

? 有關(guān)詳細(xì)信息和結(jié)果,請(qǐng)?jiān)谶@里查看這個(gè)補(bǔ)充視頻:

? 以及這里的完整論文:https://static-wordpress.akamaized.net/montreal.ubisoft.com/wp-content/uploads/2020/07/09154101/Learned_Motion_Matching.pdf

Other Animation Research

Ubisoft La Forge 的其他研究:

Automatic In-Betweening for Faster Animation Authoring

Making Machine Learning Work: From Ideas to Production Tools?

Ubisoft La Forge Animation Dataset


基于學(xué)習(xí)的動(dòng)作匹配的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
浙江省| 永兴县| 兴业县| 邯郸县| 庄浪县| 无极县| 泸定县| 清水县| 乌兰浩特市| 阿拉善右旗| 高密市| 隆昌县| 台江县| 阳城县| 从江县| 渝北区| 兰考县| 江城| 海伦市| 万山特区| 上蔡县| 呼玛县| 华蓥市| 高碑店市| 大埔区| 富川| 木里| 锡林浩特市| 榆中县| 长武县| 根河市| 平罗县| 宁海县| 井研县| 平昌县| 新竹县| 南皮县| 神木县| 岚皋县| 陈巴尔虎旗| 土默特左旗|