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

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

[【目次】MMDモーショントレース自動化への挑戦](https://qiita.com/miu200521358/items/d826e9d70853728abc51)

# 動画

[![MMDモーショントレース自動化への挑戦](http://img.youtube.com/vi/eYJnXCOGuxk/0.jpg)](https://www.youtube.com/watch?v=eYJnXCOGuxk)

# コメント

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