SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用

がもう
質問: SDXLでのアップスケール
SDXLで生成された画像をアップスケールして大きいサイズの画像にしたいです。ただ、VRAM不足になることが多いです。 どのようにすればよいでしょうか?

SDXLでのアップスケール

SDXLで画像をアップスケールする場合、2025年時点では、画像の構図や形状を崩さずにアップスケールする方法としてControlNetを利用する方法が主流です。 (参考記事) しかし、ControlNetを利用して大きい画像を生成する場合には、VRAMの使用量も増える問題があります。

この記事では、VRAMの使用量を抑えられるComfyUIを使用してControlNetを利用した画像のアップスケール手順を紹介します。

事前準備: ComfyUIのインストール

ComfyUIをインストールして、最新バージョンに更新します。
インストール手順はこちらの記事のPortable版のインストールを参照してください。 アップデート手順はこちらの記事を参照してください。

事前準備: ControlNetモデルのダウンロードと配置

ControlNetのモデルをダウンロードして配置します。

アップスケールで使われるモデルとして代表的なものは以下があります。


ダウンロードしたsafetensorsファイルを次のパスに配置します。

(ComfyUIの配置ディレクトリ)\models\controlnet\sdxl\

ワークフロー

下図のワークフローを作成します。
SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像1


モデルの読み込みノード部分です。SDXLのVAE,SDXLのモデル,ControlNetのモデルを指定します。
SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像2

Kサンプラーノードは下図です。ノイズ除去は"1.0"としています。
SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像3

ControlNetのノードです。[強度]は"1.0"としています。
SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像4

入力画像を設定します。
SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像5

プロンプトには、入力画像を生成した際に入力したプロンプト、または、入力画像を表現するプロンプトを入力します。
SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像6

なお、ControlNetのモデルでUnionモデルを利用する場合は、[Union ControNetタイプを設定]のノードを追加し、[タイプ]に"Tlle"を指定します。
SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像7
SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像8

[実行する]ボタンをクリックして処理を開始します。結果は右側の[画像を保存する]ノードに表示されます。
SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像9


結果を確認します。モデルによっては若干彩度が下がってしまう傾向があります。

入力画像 1024x1440
入力画像 1024x1440 - SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像10
2xアップスケール 2048x2880
2xアップスケール 2048x2880 - SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像11
ControlNetのモデル:illustriousXL_tile_controlnet
2xアップスケール 2048x2880
2xアップスケール 2048x2880 - SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像12
ControlNetのモデル:xinsir_controlnet-union-promax-sdxl-1.0
3xアップスケール 3072x4368
3xアップスケール 3072x4368 - SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像13
ControlNetのモデル:xinsir_controlnet-union-promax-sdxl-1.0
注意
解像度が高い場合、モデルによっては色が乗らない場合があります。この場合はモデルを別のものに変えることで対処できる場合があります。
3xアップスケール 3072x4368
3xアップスケール 3072x4368 - SDXL ControlNetを利用して画像をアップスケールする - ComfyUIを利用:画像14
ControlNetのモデル:illustriousXL_tile_controlnet

ComfyUI で実行するメリット - WebUI A1111との違い

ComfyUIで実行した場合、VRAMの使用量が抑えられるため、WebUIより大きい解像度のアップスケールができます。
WebUI A1111 の場合は、2048x2880 のアップスケールでもメモリ不足で失敗する場合がありますが、ComfyUIでは実行可能で、さらに大きいサイズの 3072x4368 のアップスケールも成功します。

補足
ComfyUIでも、さらに大きい 4xの4096x5760では、32GB VRAMの場合、VAEでコードの段階でVRAM不足となり失敗する場合が多いです。

参考:ワークフローJSON

ControlNet Union を利用した場合

AuthorPortraitAlt
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。 最近は生成AIの画像生成の沼に沈んでいる。
作成日: 2024-02-13