ComfyUI で Hires fix する
Stable Diffusion では、解像度が縦横それぞれ 512 ピクセルから 1024 ピクセルの範囲内ぐらいが適切だと思います。それ以上にすると絵が破綻しやすいなどの不具合があります。
しかし、もう少し高解像度の絵が欲しい時に、アップスケーリングというモデルを使って低解像度で出力した絵の解像度を上げることが可能です。これを、Stable Diffusion の定番 WebUI、AUTOMATIC1111 では「Hires. fix」というオプションになっていたので、その呼び方が定着した、と理解しています。
そのため?、ComfyUI のワークフロー例、ComfyUI_example に 2 Pass Txt2Img (Hires fix) Examples と、Hires fix をかっこ書きで記載しています。また、ComfyUI はもともと Txt2Img と Img2Img が同じ (Txt2Img のときも空の画像を入力して生成している、らしい) ため、ワークフローは同じフローを 2 回繰り返すような形になります。特段、追加のカスタムノードは必要ありませんが、アップスケーリング用のモデルを場合によっては別途用意する必要があります。
ComfyUI に追加でインストールなどは必要ありませんが、ワークフローは少々複雑になります。しかし、きれいな画像を出力するためには効果的な手法です。
ComfyUI 環境準備 & 起動
Stable Diffusion 3 Medium を実行する環境を ComfyUI で用意した手順 を実行し、コンテナで ComfyUI を実行できるようにします。
その後、ComfyUI のディレクトリで以下コマンドを実行し、起動します。
ブラウザで UI を開けることを確認します。
生成
ComfyUI_example の 2 Pass Txt2Img (Hires fix) Examples にある、各画像を ComfyUI の画面にドラッグアンドドロップすると、ワークフローが読み込めます。3 つの違いは、
- latent をアップスケールする方法。ワークフローはシンプルで比較的処理は早いけど、最終的な出力は標準的
- アップスケール用のモデルを使ってアップスケールする方法。追加のモデル読み込みなどがあり、ワークフローは複雑で処理も遅くなるが、アップスケール用のモデル次第で仕上がりが変わってくる。latent のみより良くなることが期待できる
- 2 種類のモデルを使ってアップスケールする方法。それぞれ異なるプロンプトを使うので、複雑な画像を出力することも可能っぽい
どれを使っても、モデルを所定のパスに配置すればそのまま実行できると思います。アップスケール用のモデルを使うワークフローの場合は、それ用のモデルを用意する必要があります。
今回は2番目のワークフローをベースに、以下 2 点を追加してみました。
- 日本語でプロンプトを入力できるようにする
- アップスケーリング前で画像をプレビューしたうえでアップスケーリングを実行するかどうか選択できるようにする
一つ目の、日本語でプロンプトを入力できるようにする方法です。
ComfyUI でプロンプトを日本語入力する [AlekPet/ComfyUI_Custom_Nodes_AlekPet] の内容に沿ってカスタムノードを導入します。そのうえで以下のように Deep Translater CLIP Encode Node
を追加します。また、以前の記事ではやっていませんが、STRING
の先に Preview Text Node
を追加して、英語に翻訳したプロンプトを表示できるようにしています。これで、よさそうなプロンプトができたら直接入力することで、翻訳の応答にかかる時間を短縮できます (生成にかかる時間と比べると微々たるものですが、何度も繰り返すことなので徐々に効いてきます)
二つ目の、アップスケーリング前で画像をプレビューし、よさそうであればアップスケーリングする、そうでもなければそこで処理を終了できるようにします。
少々複雑になりますが、Save Intermediate image
グループの VAE Decode
の出力先に Preview Chooser
(※) を追加します。また、Preview Chooser
の Latents
を、Ksampler
と Decode to Pixel Space
グループの VAE Decode
の間に挟み、Preview Chooser
の mode
を Always pause
にしておけば、サンプルを生成したところで処理が中断します。Preview Chooser
ノードの中からアップスケーリングする画像を選択すると、アップスケーリングが実行されます。
これで、ある程度よさそうなものを狙って高画素化できるようになるので、時間の節約になりそうです。
※補足
Preview Chooser がない場合、ComfyUI Manager より chooser
等で検索し、Image chooser
をインストールします。