今回は手軽に不思議なアニメを作れるDeforum Stable Diffusionを使ってみます。Tiktokなどで使っている人は使っていると思うのですが、設定が複雑なので、オンラインでも解説は多くありません。手軽に動画を作れるので、是非使ってみてはいかがでしょうか。
Defurum Stable Diffusionとは
Defurum Stable Diffusionを使うと下のようなアニメーションが簡単に作れます。
Deforumは下記のリンク先に詳しく解説されていますが、なかなか設定は難解です。今回、そんなDeforum Stable Diffusionを読み解いてみます。
Defurum Stable Diffusionのセットアップ
まずは、Stable Diffusion WebUIをセットアップします。詳しくは以前の記事で紹介しているので、ご参照ください。(Stable Diffusion WebUIをPCローカル環境へのセットアップ方法(2023年6月最新版))
また、Defurum Stable Diffusionでの動画作成にはffmpegが必要なので、ffmpegが入っていない場合はインストールします。インストール法は過去記事にありますので、ご参照ください。(Sadtalker拡張機能でStable Diffusionで音声に合わせて会話する動画を作成)
Defurum Stable DiffusionはWebUIの拡張機能としてインストールします。「拡張機能(Extentions)」の「拡張機能リスト(Available)」で「読込(Load from)」でリストを読み込んでから、「検索」に「deforum」と入れると見つかるので、「インストール(Install)」ボタンでインストールを実行します。うまく見つからない時は「タグで拡張機能を隠す(Hide extensions with tag)」のチェックをすべて外しましょう。インストール後、WebUIを再起動します。
これで、「Deforum」のタグが出てきたら成功です。
Deforumの設定
Deforumは設定するパラメーターが多いので設定は大変ですが、以下の点を考えておけば良いです。
Checkpoint
好みのCheckpointが使用できます。
実行(run)
ここでは動画の元となる画像の基本条件を設定します。パラメーターについては普通の画像生成でおなじみ項目がほとんどです。
サンプラー(Sampler):適切なサンプラーを選んでください。私は「DPM++ SDE Karras」を使っています。
ステップ数(Step):画像生成時のステップ数。20くらいで十分。
画像サイズ(幅、高さ)(Width、Height):用途に応じて。
シード(Seed):開始時のシード値
バッチ名(Batch name):生成した画像や動画が保存されるフォルダ名を設定します。生成した画像や動画は「\outputs\img2img-images」に保存されます。
その他、顔の修復(Restore faces)、タイリング用の画像を生成(Tiling)は通常の画像生成と同じです。
キーフレーム(Keyframes)
アニメーションモード(Animation mode):複数のアニメーションモードが用意されています。作りたいアニメーションに応じて選択します。
2D・・・二次元のアニメーションを作成します。画像の角度、左右上下の遷移、ズームなどが設定できます
3D・・・三次元のアニメーションを作成します。上下左右に加えて奥行き方向の回転が設定できます。
Video Input・・・動画を参照してアニメーションを作製します。
Interpolation・・・プロンプトを時間の変数を使って動的に変化させることができます。
Border mode:outpaintのモード。繰り返すか折り返すか選ぶ。
回転数(Cadence):拡散される頻度。1か2で良いと思う。
最大フレーム(Max frames):生成されるフレームの枚数。大きいほど長いアニメーションができる。
パラメーター設定の書式
各種詳細なパラメーターのスケジュールはフレームごとに設定できる。例えば、あるパラメーターを0フレーム目からは0.5で30フレーム目からは0.6、60フレーム目から最後までは0.4に設定したいケースは以下のように記載する。
0:(0.5), 30:(0.6), 60:(0.4)
例えば、最初から最後まで同じ値で良い時は、以下のように記載する。下の例では最初から最後まで1に設定している。
0:(1)
強度(Strength)
img2imgの強度を調整。前のフレームから次のフレームに影響を及ぼす存在量を表す。1にすると影響がゼロになってクリエーティブになる。小さくするほど、アニメーションの動きが小さくなる。次の式で与えられる。
ステップ数 ― (強度 × ステップ数)
CFG
プロンプトにどれだけ近づけるか。小さいほどクリエーティブになる。5~15の範囲が推奨されている。画像生成のCFGと同じ。スケジュールでフレームごとに設定可能。
シード(seed)
フレームごとのシードを設定する。
iter・・・+1ずつシードを増やす
fixed・・・シード固定(シード固定にするとバグなのかうまくアニメ生成できないので非推奨)
random・・・ランダムなシード
ladder・・・シード値が上がったのちに下がる
alternate・・・フレームごとに上下する
Schedule・・・シードスケジューラーに従って変化する
サブシード値(Subseed)
幅や高さをリサイズするシード値を設定する。また、リサイズの大きさを設定する。
ステップ数(Step)
スケジューラーを使ってフレームごとにステップ数を変えられる。
サンプラー(Sampler)
スケジューラーを使ってフレームごとにサンプラーを変えられる。
Checkpoint
スケジューラーを使ってフレームごとにCheckpointを変えられる。
動作(Motion)
2Dや3Dのアニメーションを設定した時にアニメーションに動きを持たすことができる。フレームを変数tとして、数式を使った連続的な動きも持たすことができる。
2D関連
Zoom・・・1より大きいと寄り、小さいと引く
Angle・・・反時計回りの回転角を入れる
Transform Center X, Y・・・中心を左右(X)、上下(Y)に遷移する
Translation X, Y・・・左右(X)、上下(Y)の遷移する
3D関連
Translation X, Y, Z・・・左右(X)、上下(Y)、前後(Z)への3D遷移する
Rotation 3D X, Y, Z・・・X軸、Y軸、Z軸中心での回転
ノイズ(Noise)
拡散時のノイズのかけ方をコントロールできる。専門的過ぎて良く分からないが、Perlinの方が自然なノイズが掛けれるよう。
パラメーター設定にはこの動画が参考になる。(リンク)
一貫性(Coherence)
色の一貫性をカラーマッチングにより保持する。これも専門的過ぎて良く分からない。
アンチブラー(Anti Blur)
ぼやけた画像を修復する。数値を調整することによって鮮明な画像にすることができます。
深度ワーピングと視野角(Depth Warping, FOV)
3Dにおける遠近感を調整する深度わーぴんぷ(Depth Warping)と視野角を調整するFOVを設定します。
プロンプト(Prompts)
フレームごとにJSON形式でプロンプトを入力します。共通部分はPrompts positiveとPrompts negativeに入れます。
Propmptsの例
{ "0": "white shirt", "60": "white shirt, smile", "120": "blue shirt, smile, very happy" }
上記のプロンプトは0フレーム目から「白いシャツ」、60フレーム目から「白いシャツ、笑顔」、120フレーム目から「青いシャツ、笑顔、とてもしあわせ」というプロンプトが入ります。これにより、フレームで徐々に表情が変わっていきます。
初期化(Init)
初期画像を指定できます。初期の画像を指定することによって、動画のベースを安定化できます。
ControlNet
生成にControlNetを付加することもできます。有効フレームの期間も指定できるので、OpenPoseやScribleなどで数枚のコマを組み合わせて動画を作ることも理論的にはできます。うまくstrengthなどを調整するのがポイントになるかと思います。
Hybrid Video
生成の前後にビデオの画像を混ぜてアニメーションを生成します。
出力(Output)
アニメーションのアウトプットの条件を設定します。
フレームレート(FPS):1秒当たりの画像枚数を設定します。例えば、FPSが15で最大フレームが120の時は120÷15=8秒分のアニメーションが生成する計算になります。
生成した画像や動画は「\outputs\img2img-images」に保存されます。
設定例(2Dの例)
以下に冒頭の動画の生成プロンプトを示します(有効な設定のあるタグのみ)。Zoomや軸の移動などは試行錯誤でいい塩梅にしていただければと思います。
最後に
Deforum Stable Diffusionを使うと設定は大変ですが工夫次第で面白い動画が作れそうです。自分なりのよいパターンを一つ作っておくと便利ですね。
コメント