SDXLでControlNetのLineartモデルを使用する手順と生成される画像を紹介します。
SDXLのControlNetが利用できるようになり、Lineartのモデルも出始めました。
この記事では、Lineartのモデルを使用して線画をもとに画像を生成する手順を紹介しつつ、どんな画像が生成できるかを確認します。
ControlNetをインストールします。手順はこちらの記事を参照してください。
SDXL用のControlNetのモデルをインストールします。
(https://huggingface.co/lllyasviel/sd_control_collection)からダウンロードします。
今回は以下のモデルを利用します。
今回は下図の画像を利用します。この画像と同じ形状、ポーズで画像を生成します。
ControlNetの枠を開きます。[ここに画像をドロップ]のエリアに準備した画像をドロップします。
PreprocessorとModelを設定します。Preprocessorには[lineart_standard]、Modelには[t2i-adapter_diffusers_xl_lineart]または、
[bdsqlsz_controlllite_xl_lineart_anime_denoise]を設定します。
設定後、Preprocessorドロップダウンリストボックス右側の[Run preprocessor]ボタンをクリックし、プレビューを作成して、
プレビューイメージが生成できているか確認します。
[Enable]のチェックボックスをクリックしてチェックをつけ、ControlNetを有効にします。
以下のプロンプトを利用します。
次のプロンプトを指定して画像を生成します。
下図の画像が生成されます。生成結果が若干荒い印象です。
ControlNetのEnding Control Stepの値を調整します。
Ending Control Stepの値を下げるほど画像の荒れが減りますが、形状の崩れが発生します。手の形状を見るとわかりやすいです。
bdsqlsz_controlllite_xl_lineart_anime_denoiseでの結果を確認します。
Preprocessorには[lineart_anime_denoise]、Modelには[bdsqlsz_controlllite_xl_lineart_anime_denoise]を設定します。
Ending Control Step=1.0 の場合の結果です。
Ending Control Stepの値を下げるほど画像の荒れが減りますが、形状の崩れが発生します。手の形状を見るとわかりやすいです。
img2imgでControlNetのLineartを利用する例です。
img2imgで用意した画像を元画像として設定します。
Sampling method は"DPM++ 2M SDE Karras"を指定し、Resize by に2を設定し2倍にリサイズします。
ControlNetはPreprocessorに"lineart_standard"を指定し、Modelに"t2i-adapter_diffusers_xl_lineart"を指定します。
Ending Control Step は0.25に設定します。
以下のプロンプトで画像を生成します。下図の結果になります。
img2img で ControlNetとTile Diffusionを両方利用する例です。
img2imgで用意した画像を元画像として設定します。
Sampling method は"DPM++ 2M SDE Karras"を指定します。
Tiled Diffusionを有効にし、Scale Factorを2に設定し、Upscaler を "SwinIR_4x"を指定します。
[Latent tile width][Latent tile height]は128、[Latent tile overlap]は48を設定します。
ControlNetはPreprocessorに"lineart_standard"を指定し、Modelに"t2i-adapter_diffusers_xl_lineart"を指定します。
Ending Control Step は0.25に設定します。
以下のプロンプトで画像を生成します。下図の結果になります。
パラメーターの調整がやや難しい場合もありますが、元のイラストの形状を維持して、アップスケールや画像生成ができました。
今回利用した元画像が生成に利用したモデルで作成した画像ではないため、細部まで全く同じ形状でアップスケールすることはできませんでした。