Stable Diffusionで2つの画像を結合して一つの画像を生成する方法の一つを紹介します。
Stable Diffusionで生成する画像の構成によっては、別々に生成した画像を結合して一つのイメージにしたほうが良い場合があります。 画像編集ソフトで結合する方法もありますが、重なりなどがある場合はStable Diffusion上で結合した画像を生成したほうが良い場合もあります。
この記事では、2つの画像を結合して、1つの画像として生成する手順を紹介します。
今回、P(プロデューサー)から指定された構図です。2人のキャラクターが背中合わせになっており、
左側が黒髪で黒ドレス、右側が白髪で白ドレスを着ている構図です。さらに、手をつないでいる指定も入っています。
今回は手をつなぐ部分は後追いで対応するとして、2人のキャラクターが背中合わせに立っている部分までを作成します。
方針は黒ドレスのキャラクターと、白ドレスのキャラクターを作成して、2つの画像を結合する方法を試してみます。
黒ドレスのキャラクターを作成します。以下のプロンプトで生成します。
下図の画像が生成されます。
黒ドレスのキャラクターを作成します。以下のプロンプトで生成します。
下図の画像が生成されます。
生成された画像から選定します。今回は下図の画像を選択しました。
レースの描画が細かく透け感も表現されています。手で描くのはかなり大変そうです。
画像編集ソフトで大きさを合わせて重ねます。重ねた画像をファイルとして書き出します。
このまま完成にしてもよさそうですが、2つの画像の背景色が微妙に違うことや重なった部分をさらにうまく処理できることを期待して、
再度Stable Diffusionで結合した画像を生成させたいです。うまくすれば手をつないでくれるかもしれない期待もあります。
Stable Diffusionを起動し、画像編集ソフトで重ねた画像をControlNetの入力画像に指定します。
一つ目はControlNet Lineartを指定します。プリプロセッサは"lineart_realistic" モデルは "bdsqlsz_controllllite_xl_lineart_anime"を利用します。
Control Weightを0.8に下げています。
2つ目は、IP-Adapter Plusを利用します。プリプロセッサは"ip-adapter_clip_sdxl_plu_vith" モデルは "ip-adapter-plus_sdxl_vit-h"を利用します。
IP-Adapterの導入についてはこちらの記事を参照して下さい。
さらに、Regional Prompterを設定して、左右のキャラクターにプロンプトを適用します。
[Active]のチェックボックスにチェックをつけます。[Use base prompt]のチェックボックスにチェックをつけます。
分割モードは[Matrix]に設定し、[Columns]を選択します。[Divide Ratio]は"1,1"とし、画面の左右で分割します。
プロンプトを設定します。以下のプロンプトとします。BREAK部分はRegional Prompterのプロンプトです。
詳しくはこちらの記事を参照してください。
画像を生成します。下図の画像が生成されました。
黒いほうのドレスに白いレースが描画されています。
また、Pから一言「しろちゃんが手前にいたほうが良いね」との指摘がありました。
画像編集アプリで、重ねる画像の位置関係を変更します。
変更した画像を、ControlNetの入力に設定します。
画像生成を試しながらプロンプトを調整します。以下のプロンプトの変更しました。
以下の画像が生成されました。
こちらを選択しました。
選択した画像をさらにTiled Diffusion + Regional Promptで2倍にアップスケールしたいのですが、
VRAMが30GB以上のGPUが必要とのことで、いったんここまでとします。
また、以下の課題があります。
DALL-E3での生成結果です。良い感じで出力できそうでしたが、手をつなぐ部分を画面に含めようとすると、ポリシーエラーが発生しました。謎です。
「背中合わせ」は難しいようです。狙った構図にはなりにくいです。
右上が構図的にはかなり近いです。