1 minute read

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 のディレクトリで以下コマンドを実行し、起動します。

python3 main.py

ブラウザで UI を開けることを確認します。

生成

ComfyUI_example の 2 Pass Txt2Img (Hires fix) Examples にある、各画像を ComfyUI の画面にドラッグアンドドロップすると、ワークフローが読み込めます。3 つの違いは、

  1. latent をアップスケールする方法。ワークフローはシンプルで比較的処理は早いけど、最終的な出力は標準的
  2. アップスケール用のモデルを使ってアップスケールする方法。追加のモデル読み込みなどがあり、ワークフローは複雑で処理も遅くなるが、アップスケール用のモデル次第で仕上がりが変わってくる。latent のみより良くなることが期待できる
  3. 2 種類のモデルを使ってアップスケールする方法。それぞれ異なるプロンプトを使うので、複雑な画像を出力することも可能っぽい

どれを使っても、モデルを所定のパスに配置すればそのまま実行できると思います。アップスケール用のモデルを使うワークフローの場合は、それ用のモデルを用意する必要があります。

今回は2番目のワークフローをベースに、以下 2 点を追加してみました。

  1. 日本語でプロンプトを入力できるようにする
  2. アップスケーリング前で画像をプレビューしたうえでアップスケーリングを実行するかどうか選択できるようにする

一つ目の、日本語でプロンプトを入力できるようにする方法です。

ComfyUI でプロンプトを日本語入力する [AlekPet/ComfyUI_Custom_Nodes_AlekPet] の内容に沿ってカスタムノードを導入します。そのうえで以下のように Deep Translater CLIP Encode Node を追加します。また、以前の記事ではやっていませんが、STRING の先に Preview Text Node を追加して、英語に翻訳したプロンプトを表示できるようにしています。これで、よさそうなプロンプトができたら直接入力することで、翻訳の応答にかかる時間を短縮できます (生成にかかる時間と比べると微々たるものですが、何度も繰り返すことなので徐々に効いてきます)

日本語プロンプト

二つ目の、アップスケーリング前で画像をプレビューし、よさそうであればアップスケーリングする、そうでもなければそこで処理を終了できるようにします。

プレビュー

少々複雑になりますが、Save Intermediate image グループの VAE Decode の出力先に Preview Chooser (※) を追加します。また、Preview ChooserLatents を、KsamplerDecode to Pixel Space グループの VAE Decode の間に挟み、Preview ChoosermodeAlways pause にしておけば、サンプルを生成したところで処理が中断します。Preview Chooser ノードの中からアップスケーリングする画像を選択すると、アップスケーリングが実行されます。

これで、ある程度よさそうなものを狙って高画素化できるようになるので、時間の節約になりそうです。

※補足

Preview Chooser がない場合、ComfyUI Manager より chooser 等で検索し、Image chooser をインストールします。

Imagechooser

更新日時: