Phase-Functioned Neural Networks for Character Control [Holden 2017]

theorangeduck.com

www.youtube.com

今年の SIGGRAPH の論文。ざっくり読んだのでメモ。

ユーザの入力や周囲の環境に合わせた歩行アニメーションを いい感じ且つリアルタイムに生成するというのが目標。 そこで 実際の人間からキャプチャした多量のモーションデータを教師データとして 学習したニューラルネットを使う。

歩行モーションには位相という概念を考えることができ、 右足が着地した時点を0、左足が着地した時点をπとすると 歩行中の任意のタイミングは位相p(0≦p<2π)で表現できる。 この位相を考慮しないモデルでは 右足を出している瞬間と左足を出している瞬間がごっちゃに学習されることになるので上手くいかない。 そこで、 この論文では 位相によって異なる重みを取れるニューラルネットワークとして Phase-functioned Neural Network というモデルを提案している。

Phase-functioned Neural Network では ニューラルネットワークの重み Φ が位相 p により変化し、 p を取って Φ を返す関数 Θ を Phase Function と呼ぶ。 この論文中では、 特定の4つの位相での Φ (α0, α1, α2, α3) をコントロールポイントとして持ち、 それを p によって補間する関数として Phase Function は実装されている。 ネットワークの学習時にはこの α0, α1, α2, α3 の値が更新されることになる。 ニューラルネットの入出力については、 入力はユーザの操作や、キャラクタの現在の姿勢や周囲の地形の情報、 出力はキャラクタの姿勢の変化や位相の変化としている。

学習データには、 60FPSで1時間分のモーションキャプチャデータを使用している。 容量にして1.5GB。 前処理として、 このモーションデータに位相情報や 歩き方ラベル(歩いてるか走ってるか、など)、 地形データの付与などを行っている。 前処理として地形データ付与を行っているのは、 モーションキャプチャと地形のキャプチャが同時に行えないためである。 地形データ付与は まず、多量に用意したハイトマップから モーションにフィットしたものが選択され、 さらにそれがモーションによりフィットするようにハイトマップ側の修正を行う、 という流れになっている。

大体以上のような感じで Geforce GTX 660 上で 30 時間学習させたら上記の動画のようなのができるらしい。すごい~。

普通のニューラルネットワークの入力に位相の値を加えても 他の入力から結果を推測するようになってしまうのに対し、 Phase-functioned Neural Network ではきちんと位相を考慮した学習ができるとのこと。 いかにも応用が効きそうな感じがする。音声処理とか?