CCTVの路地の棒人間から始まったミッションの最後である。「踊って」のひと言が単語袋を通って棒人間のダンスになり、そのダンスがポーズマップになって助手の姿をまとう。実際の動画をフレーム単位で開いてみて、画面に表示された「動作一致率76.5%」が何を語り、何を語らないのかを検討する。
5-4までで、棒人間は言葉を聞き取って踊った。しかし、まだ骨組みだけである。最後のミッションは、この骨組みに人の姿をまとわせて動画にすることだ。モデルになるのは助手である。
マスを押すと、その段階を説明する。1〜4段階はこのシリーズで実際に作った計算で、5〜6段階は与えられた動画が示している。
| 段階 | 入るもの | 出てくるもの | このシリーズの回 |
|---|---|---|---|
| 1〜2 言葉じょうご | 「踊って」 | 共有マップの点1つ(8マス) | 5-4 セクション2・3 |
| 3 動作生成 | 地図の点 | 棒人間の動作(フレーム × 関節13個) | 5-3 セクション6、5-4 セクション5 |
| 4 ポーズマップ | 関節座標 | 黒い背景にカラーの棒を描いた絵(フレームごと) | 5-1 セクション3の逆方向 |
| 5 ポーズに基づく生成 | 参照画像 + ポーズマップ | 助手がその姿勢をとったフレーム | この回のセクション3 |
| 6 動画 | フレームの列 | ダンス動画 | この回のセクション4 |
ポーズに基づく動画生成モデルの多くは拡散モデルである。ランダムなノイズから始めて段階ごとに少しずつ取り除きながら、「外見は参照画像のように、姿勢はポーズマップのように」という2つの条件を参考にする。スライダーを動かしてノイズを取り除いてみよう。
| 外見エンコーダ | 参照画像の顔・髪・服の特徴を取り出し、描いている間ずっと参考にさせる(ReferenceNet系) |
| ポーズガイダー | ポーズマップを小さな畳み込みニューラルネットワークでたたみ、ノイズの上に加える。「ここに腕」が最初から決まる |
| 時間層 | 前後のフレームを互いに参考にさせ、服の色や髪がちらつかないようにする |
この画面は、完成したフレーム(動画の中の助手)にノイズを割合どおりに混ぜて、「段階ごとに残る元の信号の割合」を見せたものである(√ᾱ の計算は実際の拡散モデルのスケジュールに従った)。実際のモデルは画像を小さくたたんだ潜在空間でノイズを扱い、段階ごとに「ここのノイズはこれだけ」を予測して差し引く[R1]。参照画像とポーズで人を動かす構造は、Animate Anyone[R2]系が代表的である。与えられた動画がどのモデルと設定で作られたのかは、動画に表記されていない。
動画は2つのダンスを並べたのではなく、前後につなげている(0〜4.96秒が棒人間、4.96〜10秒が助手)。「並べて見る」を押すと、同じファイルを2つの画面に表示して、同じ瞬間どうしを突き合わせる。右画面のずれを動かして、2つのダンスが合う瞬間を探してみよう。
最初は音がオフになっている。「音をオンにする」で音楽を聞ける。「並べて見る」で、ずれを0.9秒付近に動かしてみよう。
まず動画の中の数字が何なのかを確かめ、次に一致率を自分で測ってみる。同じダンスでも、どう測るかによって数字は大きく変わる。
| 確かめたこと(コード2) | 結果 | 意味 |
|---|---|---|
| 数字の欄はフレームごとに変わるか | 最初のフレームとのピクセル差は最大0.07 | 240フレームずっと76.5%のままである。フレームごとに計算し直した値ではない |
| 前の場面と後の場面の一致率ボックス | 同じ時刻どうしの平均差0.16 | 同じオーバーレイを2つの場面で1回ずつ再生した。下のピンクのバーの揺れも飾りである |
| 計算方法の表記 | なし | 何と何をどんなスコアで比べたのか、動画だけではわからない |
左は5秒の振り付け(手を振る → 指さす → 腕を広げて膝 → 両腕を上げる)、右は同じ振り付けを遅れてまねするダンスである。関節距離スコアは骨盤をそろえたあと関節ごとの exp(−距離²/2·0.1²) を平均したもの、手足の向きスコアは骨8本の向きのコサイン類似度を平均したものである。
| 状況 | 関節距離スコア | 手足の向きスコア |
|---|---|---|
| 同じダンス、同じ時刻 | 100.0% | 100.0% |
| 0.33秒遅れてまねする | 90.8% | 96.4% |
| 1.0秒遅れてまねする | 77.6% | 87.8% |
| 左右が反転したダンス | 82.5% | 88.6% |
| 1.0秒遅れ、左右も反転 | 78.7% | 86.5% |
| 1.0秒遅れたダンスを15フレーム前に詰めて合わせる | 100.0% | — |
| 動的時間伸縮法(DTW)で合わせる | 99.6% | — |
| 左右まで反転したダンス:時間だけ合わせる / 左右も戻す | 79.6% / 100.0% | — |
CCTVの路地の棒人間1体が特徴になり、生成の材料になり、たたまれては広げられ、言葉とペアを組み、最後に助手のダンスになった。カードを押すとその回へ移動する。
画面の数字600万個 → 関節26個 → 特徴4個 → 判定
手首の速度のルール → 特徴4個 + 学習
5-2 生成見分けるから作るへ矢印を逆にすると、正解ではなく分布を学ぶ
座標サイコロ → つまみ(潜在変数)引きの骨の長さの誤差
5-3 圧縮エンコーダ・デコーダ数字1,196個を16個にたたんで広げる
数字16個に詰まった動き
5-4 テキスト単語から動作へ言葉と動作を同じ地図に置く対照学習
ペア合わせ損失、400ステップ
5-5 最終「踊って」からダンス動画へポーズマップに助手をまとわせて動画に
動画に表示された一致率(計算方法は未表記)
どちらのコードも、Colabに標準でインストールされているライブラリだけを使う。「ノートブック(.ipynb)をダウンロード」したあと、Colabでファイル → ノートブックをアップロードから開くか、コピーして新しいノートブックのセルに貼り付ける。
5秒の振り付けを作り、遅れてまねしたダンスや左右を反転したダンスと、2種類のスコアで比べる。時間合わせと動的時間伸縮法(DTW)も含まれている。自分のデータに替えるには dance_seq の代わりに、2つの動画から姿勢推定で取り出した関節座標(フレーム, 13, 2)を A と B に入れる。
動画の解像度・長さ、場面の切り替わり、一致率の数字欄の変化、2つの場面の時間のずれを測る。セクション4・5の動画分析の数字はここから出たものである。動画ファイルは、このページに入っているものと同じ match_score_video.mp4 を Colab にアップロードして使う。
ChatGPT、Qwen、ClaudeのようなAIアシスタントに貼り付けるプロンプトである。「コピー」を押すと、プロンプトの後ろに選んだコードが一緒に付く。〔 〕の中を自分の状況に書き換えて使えばよい。
AIの答えは出発点にすぎない。提案された論文・数値・ライブラリ関数は、必ず原文と公式ドキュメントで確認する。実在の人物が映る映像を使うときは、撮影の同意と個人情報の取り扱い規定をまず確認する。
本文の黄色い点線下線と同じ辞書である。セクション名を押すと、最初に出てきた場所へ移動する。
たとえは理解の第一歩だが、誤解の種にもなる。人の知覚と比べたたとえには強さを示した。直接 実際に同じ働きをするという根拠がある · 部分 一部の性質だけが似ている · なし 対応するものが知られていない
| 概念 | 日常のたとえ | 人の知覚のたとえ | たとえが外れるところ |
|---|---|---|---|
| ポーズに基づく生成 | マネキンにポーズをとらせておき、その上に服を着せて写真を撮る | 部分的人が動作を見て、その動作をする特定の人物を思い浮かべること | マネキンの服はずっと同じだが、生成モデルはフレームごとに服や顔を新しく描くので、少しずつ変わることがある |
| 参照画像 | 俳優のプロフィール写真 | なし | プロフィール写真にない後ろ姿や指は、モデルが想像で作り出す。作り出した部分が本人と違うことがある |
| ポーズマップ | 舞踊譜(振り付けの記録) | なし | 振り付けの記録は人が読んで解釈するが、ポーズマップは関節の位置しか持たない。表情・指・リズムは抜け落ちる |
| 動作一致率 | カラオケの採点 | なし | カラオケの採点のように計算方法が隠されていると、数字だけではうまくできたのかわからない。何と何をどう比べたのかが先である |
| 時間合わせ(DTW) | 拍がずれた2人のダンス動画を、拍に合わせて編集し直す | 部分的人は拍が少しずれても「同じダンス」だと見分ける | DTWは順序を変えず、伸ばしたり縮めたりするだけである。動作の順序が入れ替わったダンスは合わせられない |
E-1 著者紹介 · E-2 学術参考文献 · E-3 図と数字の出典
講師、実務OJT担当者、チューター向けの運営ガイドである。時間は目安なので、実際の授業に合わせて調整する。この回はシリーズのまとめの授業としても使える。
| 対象 | 5-1〜5-4を終えた大学生・社会人。生成動画や「AIスコア」を業務で扱う企画者・実務者 |
|---|---|
| 前提知識 | 5-1の姿勢推定、5-4の言葉 → 動作、拡散モデルの基本的な考え方(ノイズを取り除く) |
| 学習目標 | ① プロンプトから動画までの6つの段階を順に説明できる ② 参照画像とポーズマップがそれぞれ何を決めるのかを言える ③ 一致率のような数字を見たときに「何を、どう比べたのか」を問い、時間のずれがスコアをどう変えるのか例を挙げられる |
| 目安時間 | 読む30〜40分・動画デモ20分・Colab実習25分(コード1 12分、コード2 13分) |
導入5分(セクション1)→ セクション2の6段階10分 → セクション4の動画を並べて見る10分 → セクション5の一致率実験12分 → セクション6のシリーズマップ8分 → 確認問題5分。
セクション4・5 25分 → チームごとに「自分たちの業務のAIスコア」を1つ選び、何をどう比べたのかを逆にたどる25分 → コード2で動画を実際に測定20分 → セクション3の衣装の違いをもとに、生成物の表示・同意について討論20分。
初心者はセクション2・4・6だけ。中級者にはコード1の score_dist を1フレーム分だけ手で計算させ、DTWの表の埋め方を 3 × 3 でたどらせる。
| セクション | 立ち止まって問いかける質問 | 操作のコツ |
|---|---|---|
| 2 一行で | 「このうち、どの段階がこのシリーズで実際に計算したもので、どの段階が与えられた動画か?」 | マスを1つずつ押して、下の説明の最後の文を読む |
| 3 助手を描く | 「参照画像は白衣なのに、なぜ動画はアイドル衣装なのか?」 | 段階を0 → 25に動かし、下のソロ12カットと比べる |
| 4 動画 | 「2つのダンスの回転は何秒に起きるか?」 | 「並べて見る」でずれを0 → 0.9秒に動かす |
| 5 一致率 | 「同じダンスなのに、なぜ77.6%なのか?100%にするには?」 | 遅れ1.0秒で「時間合わせ」を押す |
| 6 まとめ | 「5つの回で最も重要だった数字を1つ選ぶとしたら?」 | カードを押して、その回に戻ってみる |
| 誤解 | 正しい説明 | 見せる場面 |
|---|---|---|
| 「踊って」と言えば、AIがダンスを理解して動画を作る | いくつもの段階が数字を受け渡していく流れである。言葉 → 地図の点 → 関節座標 → ポーズマップ → フレーム | セクション2 |
| 動画に表示された一致率は信頼できる測定値である | この動画の76.5%は240フレームずっと同じ値で、計算方法が表記されていない | セクション5の上の表 |
| 一致率が低ければ、ダンスをまねできていないということだ | 同じダンスでも1秒遅れると77.6%である。タイミングと左右を合わせれば100%になる | セクション5「自分で測ってみる」 |
| 参照画像の姿がそのまま出てくる | 原則はそうだが、参照画像にない部分(後ろ姿など)は想像で作られ、この動画のように衣装が違うこともある | セクション3の下のノート |
| ポーズマップさえあれば誰でも踊らせられるので問題ない | 実在人物の外見で動画を作るときは、本人の同意と生成物であることの表示が必要である | セクション6「人の役割」 |
24 × 10 = 240フレーム。119 ÷ 24 ≈ 4.96秒。
exp(−0.01 / 0.02) = exp(−0.5) ≈ 0.607。距離がσだけ離れると、その関節は約61点である。
そのままだと77.6%、前に詰めて合わせると100.0%。遅れが「間違い」として数えられていたのである。
数字欄のピクセルが240フレームずっと最初のフレームとほぼ同じで(差は最大0.07)、2つの場面の一致率ボックスが同じ時刻どうしでほぼ同じだった(平均差0.16)。同じオーバーレイを2回再生したのである。
参照画像は外見(顔・髪・服)、ポーズマップは姿勢。ノイズを取り除く前半(大きな輪郭)ではポーズマップが、後半(顔・飾り・模様)では参照画像が大きく働く。
コード1でσを0.05、0.1、0.2に変えて、「1.0秒遅れてまねする」の関節距離スコアを比べる。σがスコアにどんな影響を与えるのか、一致率を発表するときにσも明示すべき理由を2文で書く。
MediaPipeでこの動画の2つの場面から関節座標を取り出し(助手の場面は失敗するフレームも記録する)、コード1の score_dist と best_shift で実際の一致率を計算する。時間を合わせる前と後のスコア、左右を戻したスコアを76.5%と比べて報告する。
| 入門者 | セクション4の「並べて見る」とセクション5の「時間合わせ」ボタンだけで、この回の要点がつかめる |
|---|---|
| 発展 | Animate Anyone論文の構造図をセクション3の表(外見エンコーダ・ポーズガイダー・時間層)と対応づけて発表させる |
| シリーズの復習 | セクション6の5枚のカードの数字(60.7% → 99.7%、44.2% → 0.0%、99.8%、1.90 → 0.01、76.5%)がそれぞれ何を測ったのか、1行ずつ説明させる |
『5-5「踊って」からダンス動画へ』まで、5つのミッションをすべて終えました。研究室の仲間たちの最後のひと言です。