← 網誌 · 静止画1枚が6秒のループ動画になるまで:実装の詳細と踏んだ落とし穴

静止画1枚が6秒のループ動画になるまで:実装の詳細と踏んだ落とし穴

これは仕組みの解説ではなく実装の話です。写真が入ってから動画が出るまで、各工程が何をしているのか。そして「もっともらしく見える」やり方のうち、実測すると間違いだったものはどれか。

2026-08-20 作者 William Hsu

這篇講什麼
  1. 全工程
  2. ピンポンループ
  3. 実測して初めて間違いと分かった3つ
  4. 失敗の処理のほうが手間がかかる

全工程

  1. 受け取りと検査:形式とサイズを確認し、内容の安全チェックを1回。人物向けの動きでは顔検出も走ります。 写真が鳥なのに人物向けの動きを選ぶと、モデルは存在しない人物を生成してしまいます。
  2. エンコード:写真と動きの指示をまとめて符号化。いちばん時間がかかる工程で、20秒近く。
  3. サンプリング:turbo LoRAのおかげでたった4ステップ。
  4. デコード:結果を画面に戻して73フレームを得ます。
  5. 後処理:24fpsの73フレームは3.04秒。順再生と逆再生をつないで、6.08秒の継ぎ目のないループに。

なぜ73フレームなのか。このモデルのフレーム数は17n+5でなければならず、3秒付近で使える値は73だけでした。 論文には書かれておらず、実装中にぶつかって知りました。

失敗例:写真は鳥なのに人物向けの動きを選んだため、モデルが存在しない人物を生成してしまった(動物向けの動きを選んだほうは正常)

ピンポンループ

生成した3秒の動画は頭と尻がまず揃わないので、そのままループさせると明らかに飛びます。 順再生のあとに逆再生をつなげば両端が同じになり、継ぎ目が見えなくなります。

完成例:6.08秒のピンポンループ、継ぎ目なし

代償として行ったり来たりした感じが出るので、方向のはっきりした動きは避ける必要があります。 「手をふる」は問題ありません。手はもともと戻ってきます。「振り向く」は、振り向いたあと止まる設計にしないと、 逆再生で顔をそむけることになります。

実測して初めて間違いと分かった3つ

一、「カメラを動かすな」と言うほど画面が寄る

指示に「camera does not move」と足したくなります。実測は逆で、その一文を入れると背景の変位量が 6.6から39.2に悪化しました。おそらくその表現自体が、モデルの注意を「カメラ」という概念に向けてしまうのです。 最終的な指示ではカメラに一切触れず、人物の動作だけを書いています。

二、モデルに額縁を描かせると歪む

当初は成果物にレトロな額縁を入れたいと考えていました。モデルは描けますが、毎回違う形になり、しかも左右非対称です。 ウェブ側のCSSで重ねる方式に変えたところ、額縁は常に正確で、利用者はいつでも変更や解除ができ、 ダウンロードされるファイルもきれいなままになりました。

三、低解像度の写真でも壊れるとは限らない

小さすぎる写真では作れないと思い込み、説明ページにもそう書いていました。実際に96ピクセルの写真で試すと、 ちゃんと動きました。細部がぼやけるだけです。自分の主張を自分で覆し、説明ページも書き直しました。

失敗の処理のほうが手間がかかる

モデルを動かすのに使った時間はごく一部で、残りは現実世界の事故への対処でした。

どれもモデルの問題ではありませんが、どれも利用者から見れば「このサイトは壊れている」と見えます。

這篇文章寫的是本站實際的實作與量測。工具本身在老照片動起來與變老變年輕,都可以直接試。

← 上一篇為什麼你上傳的照片不該留在雲端:一天被掃描 417 次的實際紀錄

看其他文章