Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@miu200521358

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の奥行き検知
補間曲線
1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What is going on with this article?