MMDモーショントレース 自動化への挑戦:動画コメント【ver1.00】


この記事は、「MMDモーショントレース 自動化への挑戦」の動画内に記載されている文章のテキストを起こしたものです。
翻訳等にご利用下さい。

【目次】MMDモーショントレース自動化への挑戦

動画

MMDモーショントレース自動化への挑戦

コメント

00:02

【改修点】

  ■2人分トレース対応
  ■意図しない回転を軽減
  ■3D推定の精度向上
  ■バルクバッチにファイル読み込み機能版追加
  ■メジャーバージョンUP

【略称】
  【深度推定】 … FCRN-DepthPrediction-vmd
  【3D推定】 … 3d-pose-baseline-vmd + 3d_pose_gan
  【VMD生成】 … VMD-3d-pose-baseline-multi

00:05

2人分のトレースに対応しましたー!!!
きりがいいのでメジャーバージョンあげました。

00:08

Openposeでは、複数人数のトレースは出来ますが、トレース結果の順番は担保されてません。
そのため、無理矢理トレースすると瞬間移動を繰り返す謎モーションになってました。

00:11

今回のバージョンアップで、Openposeの位置XY情報と、深度推定の位置Z情報を元に、複数人の時系列トレースが概ね出来るようになりました。

00:14

人物が交差するところも、7割くらいの確率で推定可能です。

00:17

近距離での交差や、カメラに向かって前後に並ばれると、交差推定失敗する確率が高いです。
交差推定失敗対策として、強制的に人物インデックスを指定できるパラメーターを用意しました。

00:20

ただ、【深度推定】の精度が家具配置ベースなので、人物移動量程度では精度が甘い…
交差判定の精度向上と合わせて今後の課題です。

00:23

後、画面上に1人しか映っていない場合も推定失敗します。これは、指定した人数分のデータを何とか取ろうとして、Openposeが変なデータを生成しちゃうためです。

00:26

対策としては、トレース元動画で人物が常に2人映っているように編集しておくか、1人だけの部分でトレース動画を区切ってしまうか、です。

00:29

今回の複数人数トレース変更に伴い、処理順番が【3D推定】→【深度推定】→【VMD生成】から、【深度推定】→【3D推定】→【VMD生成】に変わりました。

00:32

また、推定データのフォルダ構成も変わりました。
個別バッチを実行される際には、注意してください。バルクバッチは対応済みです。

00:35

とりあえず今確認できているのは2人トレースまでです。それ以上は自己責任でお願いします。
試すと修正したくなって無限ループなので、あえて確認してませんw

00:42

背景に白い四角形があるのは、交差時に人物データとして取得されてしまう箇所があったため、可能な限り隠してます。
こういう事前準備がだんだん必要になってきました…

00:45

ここの交差は補正パラメーターなしで成功してます。

01:04

カメラに全身が映っていない場合、変なモーションになりますが、とりあえず人数分データが取れれば、このまま継続して処理可能です。

01:15

ここの交差も補正なし。

01:21

時々モーションで意図しない回転が入ってしまう問題を軽減してみました。
まだ解決できたとは言えないのですが…

01:24

これは、Openposeが裏表を誤認識して、関節推定が反転してしまう為に起きる問題です。
1Fだけなら【3D推定】で吸収できるのですが、2F以上続くとダメです。

01:27

反転範囲を指定して、その範囲内で関節位置を左右反転させて、その方が安定した移動量であれば、反転関節位置を採用します。

01:30

全身反転・上半身反転・下半身反転の3パターンを識別します。
Openposeの精度に依るので、そこが失敗していたら全然ダメですがw

01:33

話の途中ですが、ここの交差はインデックス指定での補正をかけています。

01:36

話は戻って、でリンちゃんレンきゅん召喚~こちらは反転補正なしです。

01:39

一度反転判定に失敗すると、その後ずーっと反転失敗し続けるので、明示的に指定した範囲だけ反転採用するようにしました。

01:42

ただ、範囲指定が「正常フレーム~反転フレーム~正常フレーム」のように、反転フレームを正常フレームで囲む感じで指定する必要があるので、ちょっと面倒…要検討。

01:46

そのままだとレンの足の交差が反転しちゃうのを、反転範囲指定する事で、ミクの足は反転してません。こんな感じです。

01:49

ここの腕の動き、めっちゃ綺麗に取れてて感動しました。

01:52

前屈したり、足を前方向にあげたり、Z軸の動作はOpenposeがトレース苦手なので、それを引きずって、なかなか綺麗なトレースになりません…

01:54

前後に並ばれると、Openposeはもうしっちゃかめっちゃかになります。
今回はなんとかインデックス指定補正で通しましたが、正直手動の方が早そう…

01:58

こっちのターンはインデックス指定補正なしです。
多分足首まで映っているので推定に成功したんでしょうね。

02:00

前後に並んで腕だけ動かすやつとかも、試してはいませんが駄目でしょうねー
あれどうやったらトレースできるかなぁ…

02:08

ここのシーン、元データはやっこ様(赤)が画面から消えているのですが、そうなるとトレース失敗するので、消える直前のデータを部分的に貼り付けて補正しています。

02:18

ここもOpenposeが暴れたので、インデックス指定補正入れてます。
取れないのは何とかなるのですが、変なデータ取られると判断つけづらいんですよね…

02:24

kenkra様のご協力で、【3D推定】の精度がかなり上がりました。ありがとうございます!
数センチ単位の微調整を加えていただき、MMDモデルの構造に合った数値になりました。

02:27

再びリンレン召喚~こっちはkenkra様の処理未対応です。

02:30

足の角度が、MEIKOの方が元動画に合っているのがお分かりでしょうか。
不自然な角度にならないよう、ひざの位置など、色々調整していただきました。

02:33

そして前傾姿勢の補正とセンター移動が【3D推定】の時点で出力されるようになりました。
これに伴い、【VMD出力】のXY倍率パラメーターがなくなりました。

02:36

【3D推定】の出力結果はテキストデータなので、他に流用することも可能です。
ライセンスのご確認&ご明記の上、ご自由にどうぞ。

02:42

前回追加したバルク(一括処理)機能に、ファイルに指定したパラメータを読み込み、順次処理する機能を持ったバッチを追加しました。

02:46

ファイルには複数の動画が指定可能です。
パラメーターも残るので、【深度推定】のパラメーター調整する時にも便利です。

02:49

ちなみに、このトレースのパラメーターはこんな感じです。
タブ区切りを改行してます。

02:52

C:\MMD\buster.mp4 ← トレース元動画
0 ← トレース開始位置
2 ← トレース人数
warn ← ログレベル
865-876,1098-1113,2029-2042,2065-2070,2280-2293(略) ← 反転範囲
[2661:0,1][3291:1,0][3292:0,1][3316:0,1][3333:0,1](略) ← インデックス指定

02:55

反転範囲とインデックス指定が面倒でねぇ…また考えときます。

02:59

最後の交差もインデックス指定補正してます。
もうちょっと交差の精度をあげたいのですが…PullRequesetお待ちしておりますw

03:03

アニメや特撮は?というコメントをいただきましたが、
頭身が極端でない固定カメラであれば、アニメもトレース可能です。

03:06

特撮は固定カメラを探すのが大変で確認してないです。
いいデータがあったら、テスター応募してみてください。

03:09

次回は機能のバージョンアップではなく、導入手順の簡略化を考えています。
具体的には、「Docker for Windows」を採用する予定です。

03:14

* Music *
バスター! <dezzy(一億円P)様>

* Dance *
バスター! <やっこ様×まりやん様>

* Sound *
マリオ 1UP音 <kenapo様>

* Technology *
Openpose (CMU)
FCRN-DepthPrediction-vmd (iro-cp)
3d-pose-baseline-vmd (ArashHosseini)
3dpose_gan (Dwango Media Village)
VMD-3d-pose-baseline-multi (errno-mmd)

※カッコ内は改変元の作者様

* Model *
初音ミク、MEIKO、鏡音リン、鏡音レン <あにまさ様>
フリルの見せパンツ <なつか様>

* Effect *
MultiMonitor <ビームマンP>

03:18

次回以降予定

導入手順の簡略化
深度推定の精度向上
手指のモーショントレース
頭部・ジャンプ等の追加学習(要検討)
準標準ボーンへの回転分散(上半身2導入済)
センターYの奥行き検知
補間曲線