こんばんは、スタジオ真榊です。今回は、Wan2.2でのimage to video(i2v)が簡単にできるアプリ「EasyWan22」特集の第2回。第1回では導入方法からプロンプト記述までの基本を見ていきましたが、今回は動画生成の実践編です。

前回の記事がまだの方は、先にこちらをお読みください。(Refiner機能の追加や各種アップデートを踏まえて大幅に加筆修正しています)

第2回では、EasyWan22を使った基本的なi2vのやり方に始まり、アップスケールなどによる高品質化、ループ動画化、各種プロンプト補助機能、そして画風保持のやり方などについて紹介しています。さらに、無料動画編集アプリ「Shotcut」を使って背景を透過・合成する「クロマキー合成」のやり方についても触れています。高品質な動画を快適に生成するためには「VRAM16GB/メインメモリ64GB~」となかなかなスペックを求められますが、思い入れのあるイラストが実際に動き出すと本当に楽しいので、環境構築する価値は十分にあると思います!

実践1:キャラクター回転

さて、まずは基本的なimage to videoのやり方から見ていきます。こちらの1枚絵をi2vして、定番の「くるっと回るダンス動画」を作ってみましょう。たっぷりしたスカートの動きを自然に再現できるかや、顔立ちの保持、入力画像にない背面の自然な推論ができるかどうかがポイントです。

実践1:キャラクター回転:図版1

実践を始める前に、update.batを実行しておきましょう。デフォルトのワークフロー「00_i2v(ImagetoVideo).json」は日々更新されているので、レイアウトが毎日変わっています。この記事では、25年8月7日現在の同ワークフローをベースに検証していきます。

最新版にアップデートできたら、まずは「00_i2v(ImagetoVideo).json」を開き、Output欄をチェック。webpとmp4、最終フレームのpng画像を出力する設定になっているか確認します。

実践1:キャラクター回転:図版2

プロンプトはいつも通り、ChatGPTにこのように画像参照させて作ってもらいます(このときは4oを使っていますが、現在はGPT-5が登場していますね)。どんな動きをするかをできるだけ具体的に書き込むとよいのですが、あえてシンプルな指示にしてみます。

実践1:キャラクター回転:図版3

こちらが生成されたプロンプト。ちょっと雑な指示でしたが、きちんと女の子の容姿や表情、動きをとらえた英語プロンプトにしてくれました。これをこのままPositive Promptノードにコピペします。

実践1:キャラクター回転:図版4

最初の生成設定はこのような感じ。Seed値ランダム(-1)、長辺は小さめの640px、秒数5、UseEndImageオフ(開始画像だけ)。その上で、テストとして「SelectPrompts」機能をすべてオン(yes)にしてみます。

実践1:キャラクター回転:図版5

・SelectPrompts機能

SelectPrompts機能はプロンプトの自動翻訳や拡張をcomfyUI上で行ってくれる機能です。

詳しくは前回記事を参照いただくとして、これを使うとどんな風にプロンプトが変化するかを見てみます。PositiveInput欄にはさきほどChatGPT4oが作ってくれた英語プロンプトを入力し、TranslatePrompt欄にはさきほど4oに渡した雑な日本語指示を入れます。

・SelectPrompts機能:図版1

実行ボタンを押した後、しばらくするとFinalPositivePrompt欄が右下のように変化し、中国語や英語の翻訳結果やExtended(プロンプト拡張)が行われていることが分かります。詳しく見ていきましょう。

・SelectPrompts機能:図版2

1行目が自分で入力したPositivePrompt欄の内容。次がTranslatePromptに入力した日本語。その次にそのローカル翻訳(LocalEn)が記述されています。が、よく見ると「無表情でくるくるまわる」を「くるみのような表情(it looks like a walnut)」と誤訳しており、ChatGPTによるプロンプト作成に比べるとちょっと頼りにならないかも…という感じですね。

次の行はグーグル英語翻訳(GoogleEn)と中国翻訳(GoogleCn)。Google翻訳は主語が「He(彼)」になっていますね。その次の短い英文は、「ImageToPrompt」機能でメイドさん絵から自動検出された説明文ですが、「メイド服の女の子が写真のポーズを取っている」としか検出されていないので、あまり効果はなさそうですね。最後に、メインプロンプトを踏まえた英語・中国語のプロンプト拡張が追記されています。

自動翻訳ゆえの心許なさもありますが、とりあえず、これらのプロンプト補助機能を全部オンの状態で生成してみましょう。

・生成開始

生成設定は、「長辺640px」「5秒」「Seed:-1(ランダム)」としました(下図)。右の方の「PostProcess(後処理)」欄を使うとアップスケールやフレーム補間もできますが、今回はなし。webpとmp4両方を生成します。

・生成開始:図版1

・長辺640pxでテスト生成

VRAM16GB、メインメモリ64GBの環境では、100秒ほどでこちらのmp4動画が生成されました。

0807_221354_I2vMp4_00001

360度くるりと回ってほしいのに、途中で逆方向の回転になってしまっていますね。また、瞳や髪の毛のまわりにはジャギー(低品質なけば立ち)が目立ち、品質の悪さが気になります。640pxでアップスケールもしていないと、おおむねこれくらいの画質です。

この動画のような「逆回し」や、謎の光が映る「フラッシュ」、不自然に場面や動作が変化する「ジャンプ」といった現象は、プロンプト指示が適切でなかったり、秒数が長すぎたり、エンドフレームとの整合性が取りにくかったり、長辺サイズが小さかったりすると発生確率が上がるようです。

上の生成結果を見る限り、プロンプトにさまざまな翻訳やプロンプト拡張が入り乱れていることが「逆回し」の原因かもしれません。そこで、より動画内容を具体的にしたプロンプトをこのように組んでみました。

・生成開始:図版2

さらに、プロンプト翻訳は使わず、「ExtendedCn(中国語拡張)」のみをオンにしてみます。TranslatePrompt欄は空欄でOK。最終的なプロンプトは下図のようにシンプルになりました。(※この機能はときどきなぜか中国語でなく英語になることがあります)

・生成開始:図版3

長辺サイズやSeed値などの設定は前回と全く同じで、ポジティブプロンプトだけが異なる状態です。生成結果がこちら。

0807_224205_I2vMp4_00001

今度はイメージ通りに回転できました。単に「くるくる回る」でおしまいにするより、「目を閉じてにこっと笑う」「首をかしげる」など、具体的かつ時系列が明らかになるよう記述すると、より狙った生成結果に近づけることができるようですね。

・長辺1024pxでテスト生成

次に気になるのは、全体的な品質の低劣さや、表情があまり自然でないところ。今度は、Seed値は同じで、長辺640pxだった部分を1024pxに変更して生成してみます。アップスケールやRefinerなしだと、どのようになるでしょうか。

0807_224558_I2vMp4_00001

生成時間は3倍の約290秒。Seed値やプロンプトが全く同じでも、長辺サイズが違うと生成結果も変わることが分かるかと思います。画質は各段によくなりましたが、やっぱり「逆回し」現象は起きてしまいました。

ガチャをやり直すときれいに1回転できましたが、印象に残ったのは、640pxと1024pxで比べたところ、1024pxのほうが打率が高い結果になったことです。長辺のサイズ設定は画質だけでなく、動画自体の品質(プロンプト再現度)にも関わっていることが推測されます。

0807_114533_I2vMp4_00002

また、この動画のように「指示していないのに口パクをしがち」という問題もWan2.2の特徴の一つです。「talking,speaking,moving mouth」などをネガティブプロンプト欄に入れるのが有効かと思いますが、それでも防げないようなら、ポジティブプロンプトでも「口を閉じたまま」などと指示する必要があろうかと思います。

・翻訳機能のみで生成する場合

ChatGPTに頼まず、自分で書いた日本語で動画生成をすることももちろん可能です。このように各種翻訳・拡張を有効にし、TranslateInput欄で日本語指示をするだけです。

・生成開始:図版4

FinalPP欄を見ると、きちんと翻訳されていることが確認できます。単に「1回転する」ではなく「時計回りに回ってまず背中を見せる」「その勢いのままもう半回転してカメラに向く」と分割して書くことで、逆回し現象を起こしにくくする狙いがあります。こういうところは、ChatGPTに頼むよりも自分で細かく書いたほうがより効きやすくなる感覚があります。

こちらが一発生成結果。(1024px・5秒)

0812_144727_Share_00001

・最終フレームのみ指定

8月20日付アップデートで追加された、動画の最終フレームのみを指定する生成を試してみます。生成設定やプロンプトは上記と同じで、BasicSettings(基本設定)ノード群に追加された「SwapStartEnd」をONにするだけです。

・最終フレームのみ指定:図版1

こうしておくと、StartImageに指定した画像が最終フレームとして扱われます。UseEndImageをオンにしてしまうと、単純にそれぞれが入れ替わるだけですので、基本的に最終フレームのみ指定するときにだけ使う機能です。

こちらが生成結果。

0822_123033_Share_00001

最終フレームを元に、「過去の5秒間」が推論されました。表情などはプロンプト指示で「満面の笑顔を浮かべる」ことになっていますが、最終フレームが無表情なので、このテストではすぐ笑顔が消え、指定した表情とポーズにたどり着いています。

この1枚だけの画像から過去の5秒と未来の5秒をそれぞれ生成してつなぎあわせることで、計10秒の続き動画を作るなどの用途が考えられるところです。