讓3D動畫人物做一連串很平滑的動作,需要手動算繪多久?
現在交給AI,輸入幾句話就能搞定(不同顏色代表不同動作): 看向地面並抓住高爾夫球杆,揮動球杆,小跑一段,蹲下。
在這之前,AI控制的3D人體模型基本只能「每次做一個動作」或「每次完成一項指令」,難以連續完成指令。
現在,無需剪輯或編輯,只需按順序輸入幾條命令,3D人物就能自動完成每一套動作,全程很平滑的完成沒有停頓。
這個新AI的名字叫TEACH,由馬普所和古斯塔夫·艾菲爾大學所開發。
網友們開始發揮各種想像開:
顯然,遊戲和模擬行業可以考慮一下了。
More grist to the mill in the 「text-to-graphic output」 world… impressive stuff.
— Chris McKibbin (@ChrisMcKibbin) September 13, 2022
Gaming and simulations an obvious application. I’m not going say the metaverse word… 😂 https://t.co/65iZEcjdf1
那麼,這樣的3D人物動作神器是怎麼來的呢?
用編碼器「記住」前一個動作
TEACH的架構,基於團隊不久前提出的另一個3D人體運動產生框架TEMOS。
TEMOS基於Transformer架構設計,利用人體真實運動資料進行訓練。
它在訓練時會採用兩個編碼器,分別是動作編碼器(Motion Encoder)和文本編碼器(Text Encoder),同時透過動作解碼器(Motion Decoder)輸出。
但在使用時,原本的動作編碼器就會被「扔掉」、只保留文本編碼器,這樣模型直接輸入文本後,就能輸出對應的動作。
與其他輸入單一文本、輸出確定性動作的AI不同,TEMOS能透過單一文本,產生多種不同的人體運動。
例如「人繞圈」和「站著走幾步路停下來」這種單一指令,就能產生好幾種不同的運動方式:
TEACH的架構正是基於TEMOS設計,動作編碼器直接就從TEMOS那兒移植過來。
但TEACH重新設計了文本編碼器,其中包括一個名叫Past Encoder的編碼器,它會在產生每一個動作時,提供前一個動作的上下文,以增加動作與動作之間的連貫性。
如果是一系列指令中的第一個動作,就禁用Past Encoder,畢竟沒有前一個動作可以學了。
TEACH在BABEL資料集上進行訓練,這是一個時長43小時的動作捕捉資料集,包含過渡動作、整體抽象動作、以及每一格的具體動作。
在訓練時,BABEL的這一系列動作捕捉資料會被切分成很多個子集,每個子集中包含一些過渡動作,讓TEACH能學會過渡並輸出。
至於為什麼不用另一個資料集KIT進行訓練,作者們也給出了自己的看法。
例如在動詞類型上,BABEL出現要比KIT更具體,相比之下KIT更喜歡用do/perform這種「模糊的」詞彙。
研究人員將TEACH與TEMOS就連續動作產生效果進行了對比。
比TEMOS效果更好
先來看看TEACH產生一系列動作的效果,連續不重複:
隨後,研究人員將TEMOS與TEACH進行了對比。
他們使用兩種方法對TEMOS模型進行了訓練,並分別將它們稱之為Independent和Joint,區別在於訓練用的資料上。
其中,Independent直接用單個動作訓練,在產生時將前後兩個動作用對齊、球面線性插值等方式融合在一起;Joint直接用動作對和分隔開的語言標籤作為輸入。
Slerp是一種線性插值運算,主要用於在兩個表示旋轉的四元數之間平滑插值,讓變換過程看起來更流暢。
以產生「揮揮右手,舉起左手」連續兩個動作為例。
Independent的表現效果最差,人物當場坐下了;Joint效果好一點,但人物並沒有舉起左手;效果最好的是TEACH,在揮動右手後又舉起了左手,最後才放下。
在BABEL資料集上測試表明,TEACH的產生誤差是最低的,除此之外Independent和Joint的表現都不太好。
研究人員還測了測使用上一個動作的最佳格數,發現當使用前一個動作的5格時,產生的過渡動作效果最好。
作者介紹
目前TEACH已經開源,有興趣的人可以透過下方連結閱讀更多資料。
GitHub連結:
論文連結:
- TEACH: Temporal Action Composition for 3D Humans
- TEMOS: Generating diverse human motions from textual descriptions