この記事は、「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の奥行き検知
補間曲線