[ComfyMaster10]ComfyUIで画像を高解像度化!Hires.fix完全ガイド #ComfyUI
もっと高画質の画像を生成したいと思いませんか?
実は、ComfyUIのワークフローを工夫することで、高画質の画像生成が可能になります!
こんにちわ、AICU media編集部です。
「ComfyUI マスターガイド」第10回目になります。
今回は、生成した画像をさらに高解像度化できる「Hires.fix」の概要から実践的な使用方法を詳細に解説していきます。
前回はこちら
1. Hires.fixの概要とメリット
Hires.fixの基本的な仕組み
Hires.fix (High-Resolution Fix、ハイレゾフィックス) は、生成された画像を元に、より高い解像度の画像を生成する技術です。具体的には、低解像度画像に含まれる情報を元に、AIが欠落している高周波成分(細部情報)を予測・補完することで、高解像度化を実現しています。これは、単なる拡大とは異なり、画像の内容を理解した上でのアップスケール(高解像度化)と言えるでしょう。
通常の画像生成との違い
通常の画像生成では、最初から目標とする解像度の画像を生成しようとします。最初から高解像度で画像生成すると、学習した低解像度の特徴を高解像度に拡大する際、適切に補間できない場合があり、アーティファクト(*1)が含まれた画像を生成する確率が高くなります。
一方、Hires.fixは、まず比較的低い解像度の画像を生成し、それを後からアップスケールするというアプローチを取ります。これにより、高解像度画像を直接生成するよりもアーティファクトの発生を抑制でき、高解像度な画像生成を実現できます。
Hires.fixを使用するメリット
高解像度化: 低解像度の画像を簡単に高解像度化できます。例えば、512x512ピクセルの画像を1024x1024ピクセル、1024x1024ピクセルの画像を2048x2048ピクセル、あるいはそれ以上にアップスケールすることが可能です。
品質向上: ディテールを保持したまま、自然な高解像度画像を生成できます。単純な拡大ではぼやけてしまう部分も、Hires.fixではより鮮明に表現されます。
2. ComfyUIでのHires.fix実装方法
ワークフローの構成
以下が今回使用するワークフローの全体像です。以下の画像には、ワークフローの情報も含まれているため、以下の画像をダウンロードし、ComfyUIにドラッグ&ドロップすれば、このワークフローを読み込むことができます。
※noteの仕様で画像をアップロードするとwebp形式に変換されてしまうので完成品のhiresfix.jsonとPNGはzip形式でお届けします。
ワークフローは、大きく分けて、標準ワークフローとHires.fixで構成されます。
標準ワークフローについては、次の記事で詳細を解説していますので、こちらをご確認ください。
ここではメニューの「Load Default」ボタンを押して、標準ワークフローを読み込みます。
次に何もないところでダブルクリックして「Upscale Latent By」をウィジェットを読み込んでください。今回の主役です。似た名前に「Upscale Latent」がありますが「By」がつく方です。
右クリックからAdd Node」→「latent」→「Upscale Latent by」でもいけます
続いて「KSampler」、「VAE Decode」、「Save Image」も配置します。これは標準ワークフローの後半で使っているものと同じウィジェットです。
①一番左のLoad CheckpointからのMODELを新しく追加したKSamplerのmodelに接続。
②既存の「KSampler」のLATENT(現在はVAEにつながっている)から、さらに新しく追加した「Upscale latent by」の左側(in側)のsampleへ接続。
③その「Upscale latent by」の右側(out側)のLATENTを新規に追加したKSamplerの左側のlatent_imageに接続
④さらにそのKSamplerの左側のpositiveから既存のCLIPのポジティブプロンプト(上)と、negativeから既存のネガティブプロンプト(下)のCONDITIONINGに接続。
※このときCLIP側からドラッグすると、既存のKSamplerへのネットワークが切られます。CLIPから2本出力を作りたいので、画面右側から左側へドラッグです。
さいごにVAEからSave Imageへの接続です。
⑤新規に追加したKSamplerの右側のLATENTから新しく追加したVAE Decodeのsamplesに接続。
⑥新しく追加したVAE Decodeの左側のvaeから、一番左にある「Load Checkpoint」のVAEへ接続(画面右から左へ伸ばさないとうまく繋がりません)
⑦VAE Decodeの右側のIMAGE→新規に追加したSave Imageのimagesへ。
これで完成です!画像を生成してサイズを確認ししてみましょう!
いつもの生成がこのサイズでした(SD1.5)。
右側に新しく作った生成画像がこれです。1.5倍になっています!
試しに「Upscale latent by」のscale_byを「4.00」にして実行してみましたら、Google ColabのT4環境でも7分ぐらいかかりました。
2048x2048のふしぎな美しさがあるボトルが生まれました。
いきなり大きな値を与えるのは制御しづらいかもしれませんね。
Hires.fix部は、以下の流れで処理されます。
標準ワークフローで生成されたLatent(潜在空間)を1.5倍にアップスケールする (ノード: Upscale Latent By)
アップスケールしたLatentを用いて、低ノイズ除去値 (denoise=0.55)で再度サンプリングし、画像の詳細度を増加させる (ノード: KSampler)
潜在空間を画像に変換する (ノード: VAE Decode)
Hires.fixで生成された画像を保存する (ノード: Save Image)
以下に各ノードの解説をします。
潜在空間のアップスケール (Upscale Latent)
Upscale Latentは、標準ワークフローで生成されたLatentを入力として受け取り、そのLatentを指定のアップスケール手法(upscale_method)および倍率(scale_by)で解像度を上げます。アップスケール手法は、以下の中から選択できます。各アップスケール手法の概要と共に紹介します。
nearest-exact
最も単純な方法で、最も近い既存のピクセル値を使用します。
エッジがシャープに保たれますが、ジャギーが目立つ可能性があります。
bilinear
線形補間を使用して新しいピクセル値を計算します。
滑らかな結果が得られますが、エッジがやや柔らかくなる可能性があります。
area
ピクセル領域のサンプリングを使用します。
ダウンスケーリングに適していますが、アップスケーリングにも使用できます。
bicubic
3次補間を使用してより滑らかな結果を生成します。
bilinearよりも細部を保持しつつ、滑らかさも実現します。
bislerp
bilinearと同様の手順で補間を行いますが、線形補間(lerp)の代わりにslerp(球面線形補間)を使用します。
従来のbilinear法よりも、より滑らかで自然な補間結果が得られる可能性があります。
今回は、アップスケール手法にnearest-exact、倍率に1.5倍を指定します。
詳細向上のための再処理 (KSampler)
「Upscale Latent By」でアップスケールしたLatentを入力「latent_image」で受け取り、そのLatentを元にノイズ除去強度(denoise)(*2)を低い値でサンプリングを試みます。他の入力「model」「positive」「negative」は、標準ワークフローと同じ接続となります。また、他のウィジェット「control_after_generate」「steps」「cfg」「sampler_name」「scheduler」も標準ワークフローと同じ値となります(「seed」はランダム値です)。
Latentから画像に変換 (VAE Decode)
アップスケールとノイズ除去したLatentを画像に変換します。入力「samples」には、KSamplerでノイズ除去したLatentを接続し、入力「vae」には、標準ワークフローでも使用しているノード「Load Checkpoint」の出力「VAE」を接続します。
画像の保存 (Save Image)
VAE Decodeで変換された画像を受け取り、画像として保存します。標準ワークフローで生成した画像と切り分けるため、filename_prefixには「ComfyUI_Upscaled」と設定しました。
3. Hires.fixを実行する
それでは、ワークフローを実行してみましょう。メニューの「Queue Prompt」をクリックしてください。
しばらくすると、生成が完了します。
以下が生成結果です。左が標準ワークフローの生成結果(オリジナル)、右がHires.fixの生成結果です。解像度は、左が512x512、右が1.5倍の768x768になります。Hires.fix後の生成結果は、解像度が向上していますが、オリジナルと比較すると、所々で異なる点があります(例えば、ボトルの形状が若干異なる)。Hires.fixは、KSamplerで再度サンプリングしているため、denoiseを抑えているとはいえ、多少画像に変化が表れてしまいます。
以下の画像は、denoiseの値ごとの生成結果の変化をまとめた画像です。denoiseの値が大きくなるほど、オリジナルからの変化が大きくなることが確認できます。denoiseの値は、生成結果を確認しながら調整することが求められます。
4. Hires.fixの効果的な使用法
Hires.fixは非常に便利ですが、一方で標準ワークフローと比べ、使い方が難しい面があります。以下の事項に注意してHires.fixを活用しましょう。
プロンプトの調整: 低解像度画像生成時のプロンプトは、高解像度化後にも影響を与えます。例えば、標準ワークフローでの低解像度画像生成時に詳細なプロンプトを使用することで、高解像度化後の詳細が向上する可能性があります。
適切な解像度の選択: 生成時間と品質のバランスを考慮して、適切な初期解像度を選択しましょう。初期解像度が低すぎると、Hires.fixでも十分な品質を得られない場合があります。逆に、初期解像度が高すぎると、アーティファクトが多く含まれた画像が生成されてしまいます。
一貫性と品質のバランス: パラメータ調整により、一貫性と品質のバランスをコントロールできます。例えば、denoiseを高く設定すると品質は向上しますが、アップスケール元画像からの変更点が多くなります。
まとめ
Hires.fixは、ComfyUIで高品質な画像を生成するための強力なツールです。この記事で紹介したテクニックを活用することで、より効果的にHires.fixを使いこなせるようになるでしょう。ぜひ、様々な設定を試して、あなただけの最高の画像を生成してみてください。
次回は、ポジティブプロンプトのノウハウを紹介します。乞うご期待!
X(Twitter)@AICUai もフォローよろしくお願いいたします!
画像生成AI「ComfyUI」マスターPlan
画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。
メンバー限定の会員証が発行されます
活動期間に応じたバッジを表示
メンバー限定掲示板を閲覧できます
メンバー特典記事を閲覧できます
メンバー特典マガジンを閲覧できます
動画資料やworkflowといった資料への優先アクセスも予定
ゼロから学ぶ「ComfyUI」マガジン
マガジン単体の販売は1件あたり500円を予定しております。
2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。
もちろん、初月は無料でお試しいただけます!
毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
退会率はとても低く、みなさまにご満足いただいております。
✨️オトクなメンバーシップについての詳細はこちら
ここから先は
応援してくださる皆様へ!💖 いただいたサポートは、より良いコンテンツ制作、ライターさんの謝礼に役立てさせていただきます!