Edited at

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の奥行き検知
補間曲線