今回はStable Diffusion web UIの拡張機能に関する話題で、タイトルの通り
を一通りまとめてみるという内容になっています。
Stable Diffusion web UIで画像を生成していると高解像度の画像を生成したくなる時があります。しかし使っているグラフィックボードによっては大きいサイズの画像を生成できない場合も多く、悩んでいらっしゃる方も多いのではないでしょうか。
しかしそんな悩みを解決してくれる拡張機能「Tiled Diffusion」が話題になっていたので私も実際に使ってみることにしました。
ここではこの拡張機能について
- 概要やインストール方法
- 基本的な使い方
をご紹介していきますね。
「Tiled Diffusion with Tiled VAE」の概要
公式ページ
Tiled Diffusionとは?
「Tiled Diffusion」(※名称が何度か変わってるっぽいのですが、以下ではとりあえずTiled Diffusionと呼びます)は、VRAM使用量を節約して巨大な画像を生成できるようになるStable Diffusion web UIの拡張機能です。これを使うと、それほど高性能ではないグラフィックボードでも高解像度の画像を生成できるようになります。
この拡張機能は次の2つの機能を持っており、併用またはどちらか片方だけを使うこともできます。
- Tiled Diffusion:
MultiDiffusionもしくはMixture of Diffusersという技術を使用した機能。 - Tiled VAE:
画像をタイル状に分割して各タイルを個別にエンコードし、結果を再び結合するという独自のアルゴリズムを採用した機能。
実際に生成した高解像度画像のサンプル
ではここで私がこの拡張機能を使って実際に生成した画像のサンプルを掲載しておきます。横長のパノラマ画像を作ってみたのでご覧ください(※ただしサーバーの都合上フルサイズではなく縮小版になっています。本来は幅4096pxの画像です)。
Tiled Diffusionを使えばこのように大きな画像を簡単に生成することができます。
Stable Diffusion web UIへのインストール方法
web UIへのインストールは簡単で、他の多くの拡張機能と同様に拡張機能一覧からインストールすることができます。
web UIの拡張機能タブ→「拡張機能リスト」→「読込」ボタンを押すと、一覧にTiled Diffusionが出てくるので「インストール」ボタンを押しましょう(※もちろん無料です)。あとはweb UIを再読み込みすればOKです。
Tiled Diffusionの基本的な使い方
さてTiled Diffusionの主な使い方は次の3通りがあります。
- img2imgで元画像をアップスケール(=高解像度化)する方法
- txt2imgで巨大な画像を生成する方法
- Regional Prompt Controlで登場させるキャラクター等を制御する方法
それぞれ詳しく見ていきましょう。
img2imgで元画像をアップスケール(=高解像度化)する方法
まずはimg2imgを使ったアップスケールのやり方についてです。
アップスケール前後の比較
Tiled Diffusionを使ったimg2imgでは、元画像の特徴を生かしつつ高解像度化することが可能です。アップスケール前後の比較は次のとおり。
元画像 | アップスケールした画像 |
---|---|
(ノイズ除去強度:0.55) |
ノイズ除去強度の設定次第では全く同じ画像にはならず、多少変化しますがきれいに高解像度化することができます。イメージとしては単なる拡大というよりは描きなおしという感じですね。
アップスケールの設定
ではアップスケール用の具体的な設定値についてご説明します。上のサンプルでは下の画像のように設定してあるので参考になさってください。
- Tiled Diffusion(下記以外はデフォルトでOK)
- 有効化:チェックを入れる。
- Method:「MultiDiffusion機能」を選択
- アップスケーラー:好みのものを選択
- 倍率:好きな拡大率を入力
- Tiled VAE:有効化にチェックを入れるだけ。あとはデフォルト
その他、通常のimg2imgと同様にノイズ除去強度の設定も行ってください。元画像にあまり手を加えたくない場合はノイズ除去強度を低めにしておくのがオススメです。
txt2imgで高解像度の画像を生成する方法
次は後述する「Regional Prompt Control」を使わずに、単純に巨大な画像を生成する方法についてです。この方法は最初のほうでサンプルとして挙げたパノラマ画像のように、大きな風景画像を生成するのに適しています。設定例は下記の画像のとおり。
- Tiled Diffusion(下記以外はデフォルトでOK)
- 有効化:チェックを入れる。
- Method:「MultiDiffusion機能」を選択
- 現在の画像サイズで上書き:チェックを入れる。
- 画像の幅・高さ:好きな画像サイズを入力
- Tiled VAE:有効化にチェックを入れるだけ。あとはデフォルト
注意点としては、この方法はキャラクター等を登場させるのには向いていません。なぜなら分割したタイルの全てにプロンプトが適用されてしまうので下の画像のようなイラストになってしまうからです。
登場させるキャラクターの人数などを指定したい場合は↓で説明する「Regional Prompt Control」機能を使う必要があります。
Regional Prompt Controlで登場させるキャラクター等を制御する方法
最後はRegional Prompt Control機能を活用して、登場させるキャラクターの人数などを制御しつつtxt2imgで高解像度の画像を生成する方法についてです。この機能を使えば、例えば下記のように女の子が一人だけいる大きなイラストを生成することができます(※ただし私が試した限りでは「謎の人」が映り込んでしまう場合も結構ありました…)。
基本的には先ほどの「txt2imgで巨大な画像を生成する方法」の設定を踏襲するのですが、今度はTiled Diffusionの中の「Region Prompt Control」の項目を展開して追加の設定を行っていく必要があります。主な手順は次のとおり。
- 既存の参考画像をアップロードするか空のキャンバスを作成する
- キャラクター等を登場させる領域のサイズや、その領域に適用する呪文を入力する
既存の参考画像をアップロードするか空のキャンバスを作成する
まずは領域を指定する際の参考にする画像をアップロードするか、空のキャンバスを作成します。
既に参考にする背景画像等がある場合はそれをアップロードしてください。ない場合は「Create txt2img canvas」ボタンを押して空のキャンバスを作る必要があります。
この手順を飛ばすと領域を設定する項目が無効化されてしまい値をいじることができません。私はここで引っかかって「なんで操作できないんだ??」としばらく混乱しました…。
キャラクター等を登場させる領域のサイズや、その領域に適用する呪文を入力する
次にキャラクター等を登場させる領域のサイズを指定し、その領域に適用する呪文を入力していきます。領域は最大で8つまで指定できるので必要なだけ設定しましょう。
ここでは例として
- 領域1:女の子
- 領域2:背景
という風に設定してみます。設定例は下の画像のとおり。
領域1:女の子
まず、先ほどの画像の赤枠部分が領域1の範囲です。女の子は背景の手前に描きたいので、「Foreground」を選択しておきます。この領域には次の呪文を記入しました。
これで指定した領域内に女の子が登場するようになります。
領域2:背景
次にオレンジの枠部分が背景です。背景は「Background」にしておきましょう。この領域には次の呪文を記入しました。
その他の設定
あとはメインのプロンプトに
という風に画面全体に適用する呪文を記入して画像を生成すればOKです。
おわりに
以上、高解像度の画像を生成できる拡張機能「Tiled Diffusion」をご紹介しました。この拡張機能を使えば簡単に高解像度の画像を生成できるようになって便利なのでぜひ試してみてください。
この記事が何かしらお役に立てば幸いです。