ComfyUI の Ultimate SD Upscale ノード
Ultimate SD UpscaleはESRGANモデルで画像を拡大し、その後プロンプトを使って低いデノイズでタイルごとに拡散モデルで再サンプリングします。これによりVRAMを使い切ることなく2倍から4倍のリアルなディテールを追加します。
Ultimate SD Upscale の役割
ComfyUI_UltimateSDUpscaleパックのノード(A1111スクリプトの移植版)は2つのアイデアを組み合わせています。まずピクセルアップスケーラーで画像を拡大し、その結果をtile_width x tile_heightのタイルに分割します。各タイルは低デノイズ(0.2-0.4)でサンプラーによって再レンダリングされ、モデルがテクスチャや肌、布、葉のディテールを描き込みます。重なり合うタイルとオプションのシーム修正パスでつなぎ目を隠します。
各タイルはモデル解像度での通常のサンプラーパスなので、最終サイズに関係なく単一画像をレンダリングできるGPUならどれでも動作します。メインのKSamplerと同じMODEL、ポジティブ、ネガティブ、VAEに加えアップスケールモデルを使い、Tile ControlNetと組み合わせて元画像に忠実なタイルを維持することが多いです。
入力
名前 | 型 | 意味 |
|---|---|---|
image | IMAGE | アップスケールする画像。 |
model / positive / negative / vae | MODEL, CONDITIONING, VAE | KSamplerと同じ接続。 |
upscale_model | UPSCALE_MODEL | 最初のピクセルアップスケール用のESRGANモデル。 |
upscale_by | FLOAT | 最終倍率、通常は2.0。 |
seed / steps / cfg / sampler_name / scheduler / denoise | sampler settings | デノイズ0.2-0.4で画像を保持。高い値は再描画。 |
mode_type | COMBO | Linear、Chess(推奨)、またはNone(アップスケールのみ)。 |
tile_width / tile_height / mask_blur / tile_padding | INT | タイルサイズ(SDXLは1024、SD1.5は512-768)、ぼかしと重なり。 |
seam_fix_mode | COMBO | None、Band Pass、Half Tile、Half Tile + Intersections。 |
force_uniform_tiles / tiled_decode | BOOLEAN | 均等なタイルにするか、低VRAM用のタイルVAEデコード。 |
出力
名前 | 型 | 意味 |
|---|---|---|
IMAGE | IMAGE | アップスケールされてディテールが追加された画像。 |
Ultimate SD Upscale の使い方
- ComfyUI Managerでパックをインストール("Ultimate SD Upscale"で検索)。
- デコード済みIMAGE、サンプラーと同じmodel/positive/negative/VAE、アップスケールモデルを接続。
- upscale_byを2.0、denoiseを0.3、stepsを20、modeをChess、タイルサイズをSDXLなら1024に設定。
- 必要ならApply ControlNetでTile ControlNetをこのノードの前のポジティブに追加。
- キューに入れて実行後、100%ズームで入力と比較。ディテールを増やしたければdenoiseを上げ、忠実度を上げたければ下げる。
設定とコツ
- プロンプトは一般的に("highly detailed, sharp focus"など)か元のものを使うのがいい。詳細な被写体のプロンプトはタイルごとに被写体が繰り返されることがある。
- Tile ControlNetなしでdenoiseを0.45以上にするとタイル内に顔や物体が勝手に出てくる。
- ChessモードとHalf Tileのシーム修正でほとんどのつなぎ目が隠れる。
- 4倍アップは一度に4倍より2倍アップを2回実行するほうがいい。
- tiled_decodeは8GBのVRAMで最終デコード時にVRAM節約になる。
Ultimate SD Upscale のトラブルシューティング
テクスチャ(草や壁)に顔や物体が現れる
原因
プロンプトに対してデノイズが高すぎて、Tile ControlNetがないため内容が固定されていない。
対処法
デノイズを0.25-0.35に下げるか、プロンプトを短くするか、Tile ControlNetを強さ0.5-0.8で追加する。
タイルのグリッドが見える
原因
seam_fix_modeがNone、小さいtile_padding、または強いデノイズのLinearモード。
対処法
Chessモード、tile_paddingを32-64、mask_blurを8-16、シーム修正をHalf Tileにする。
非常に遅い:タイルが何百枚もある
原因
大きなupscale_byに小さいタイルサイズでサンプラーパスが膨大になる。
対処法
モデルが対応する最大タイル(SDXLなら1024)を使い、2段階の2倍アップで拡大する。
インポート後にノードがない(赤いノード)
原因
パックがインストールされていないか、依存関係不足でインポートに失敗。
対処法
ComfyUI Managerで"ComfyUI_UltimateSDUpscale"をインストールし、再起動してコンソールのインポートエラーを確認。
Ultimate SD Upscale に関する質問
Tile ControlNetは必要?
必須ではないけど、内容のズレを防ぎつつ高いデノイズを使える。SDXLならTileかTTPlanetのタイルモデルを使うといい。
アップスケールモデルなしで使える?
使える。upscale_modelをNoneに設定するか、すでに拡大済みの画像にUltimate SD Upscale (No Upscale)を使う。
Flux対応は?
対応してる。cfg1.0でポジティブのコンディショニングにFlux Guidanceを使い、タイルは1024、denoiseは約0.3が目安。
関連ノード
Upscale Image (using Model)
ComfyUI core
Upscale Image (using Model) は ESRGANスタイルのアップスケーラー(4x-UltraSharp、RealESRGAN、4x_NMKD-Siax、4x_foolhardy_Remacri)をIMAGEにかけて、モデルの固定倍率で拡大し、ディテールを追加して返します。
Apply ControlNet
ComfyUI core
Apply ControlNetは、ガイド画像と読み込んだControlNetを正負のCONDITIONINGに強さや開始・終了の割合で付け加えて、サンプラーがガイドのエッジや深度、ポーズに従うようにします。
KSampler
ComfyUI core
KSamplerはノイズ除去のループを実行します。モデル、プロンプト、潜在変数を受け取り、シード、ステップ数、cfg、サンプラー、スケジューラー、denoiseで制御された完成した潜在画像を出力します。
Upscale Latent and Upscale Latent By
ComfyUI core
Upscale Latentは潜在表現のサイズを新しいサイズ(または倍率)に変えて、2回目のKSamplerが高解像度でディテールを追加できるようにするもの。いわゆるクラシックな高解像度修正方法だよ。
FaceDetailer (Impact Pack)
ComfyUI-Impact-Pack
FaceDetailerはYOLO検出器で顔(または手や目)を見つけて、それぞれを切り取り、モデルとプロンプトでフル解像度で再レンダリングし、元に戻して、広い画面の小さくぼやけた顔を直します。
その他の ComfyUI ノード
CLIP Text Encode (Prompt)
ComfyUI core
CLIP Text EncodeはテキストプロンプトをモデルのテキストエンコーダーでCONDITIONINGに変換します。1つのノードがポジティブプロンプトを、もう1つがネガティブプロンプトを持ちます。
ComfyUI Manager
ComfyUI-Manager
ComfyUI Managerは、インターフェース内からカスタムノードパックやモデルのインストール、更新、修正を行い、インポートしたワークフローの不足ノードを解決し、設定のスナップショットを作成する拡張機能です。
Load Checkpoint
ComfyUI core
Load Checkpoint(CheckpointLoaderSimple)は、.safetensorsまたは.ckptのモデルファイルを開いて、ワークフローで必要な3つのパーツ、つまりdiffusion MODEL、CLIPテキストエンコーダー、VAEを出力します。
Save Image
ComfyUI core
Save ImageはIMAGEテンソルをPNGとしてComfyUI/outputに保存します。ファイルのメタデータにワークフロー全体が埋め込まれているので、その画像をComfyUIにドラッグするとグラフを復元できます。
VAE Decode
ComfyUI core
VAE DecodeはサンプリングされたLATENTをVAEを使ってピクセルのIMAGEに変換します。VAE Decode (Tiled)はとても大きな画像をタイル単位で同じ処理をします。
Empty Latent Image
ComfyUI core
Empty Latent Imageは、テキストから画像を生成するときのスタート地点となる空の潜在キャンバス(幅、高さ、バッチサイズ)を作ります。サイズは8の倍数で、モデルファミリーに合っている必要があります。
