ComfyUIで高解像度化と部分修正:Hires Fix、FaceDetailer、Inpaintingの使い分け

"ComfyUI公式の画像アップスケールチュートリアルは、Load Upscale Model、Upscale Image (Using Model)、upscale_modelsディレクトリを使う基本workflowを説明しています。"
768×1024のキャラクター画像を生成し、構図と光は気に入っています。しかし遠景の顔が少しぼやけています。4xでそのまま拡大すると細部が硬く貼り付いたようになり、FaceDetailerを使うと別人に見えます。背景の小さな欠陥だけ直したいのに、inpaint後は背景全体の色調まで変わりました。
ピクセル拡大、latent再サンプリング、FaceDetailer、手動inpaintingは、それぞれ解決する問題が違います。以下ではノード接続、パラメータの意味、最初の実行例に加え、拡大後のぼけ、mask外への影響、顔修正後の人物変化を切り分けます。
後処理で品質を上げる4つのルート
気に入った画像を生成した後に残る問題は、解像度が足りない、細部が甘い、部分的に修正したい、という3種類に分けられます。ComfyUIの後処理には主に4つのルートがあり、役割が異なります。
ピクセル拡大はESRGANなどのモデルで画像サイズを上げます。通常はpromptを再サンプリングしたり構図を意図的に変えたりしませんが、超解像モデルが質感を再構築または追加することはあります。元画像に満足し、出力だけ大きくしたい場合に向きます。
latent再サンプリングはlatentを拡大して再びサンプリングします。構造の変化を許容し、材質や細部を生成し直したい場合に使います。
FaceDetailerは顔領域を検出して局所的に修正します。遠景の小さな顔がぼやけた場合に便利です。手や別の物体には対応するDetector、Detailer、または手動maskが必要で、FaceDetailerは万能の修正ノードではありません。
手動inpaintingではMask Editorで変更対象を指定し、その領域を中心に再描画します。logoの境界、背景の小さな欠陥、特定の物体に向きますが、サンプリングと合成によってmask外の見え方まで変わることがあります。
4つのルートは置き換え可能ではありません。ピクセル拡大は人物の同一性を保証せず、FaceDetailerは顔交換ではなく、inpaintingもmask外の全画素が同一になるとは限りません。まず「サイズだけ」「細部を再生成」「検出領域を修正」「指定部分を変更」のどれかを判断します。
ピクセル拡大:UpscaleModelLoader + Upscale Image using Model
ピクセル拡大は最も基本的な後処理です。画像の内容が正しく、出力サイズだけ上げたいなら、通常は最も破壊性の低い出発点になります。
最初のアップスケール
768×1024で生成した画像を、より大きく出力する場合を考えます。
まずReal-ESRGANなど信頼できる配布元から、画像の種類に合うモデルを入手します。例はRealESRGAN_x4plus.pthやRealESRGAN_x4plus_anime_6B.pthです。
次にモデルファイルをComfyUI/models/upscale_models/へ置きます。
ComfyUIの画面を更新するか再起動し、モデル一覧を再読み込みします。表示されなければパス、拡張子、extra_model_paths.yamlを確認します。
ノードを接続します。UpscaleModelLoaderでモデルを選び、Upscale Image (Using Model)のupscale_modelとimageへ接続します。生成画像はimage入力へ渡します。
実行後に出力サイズを確認します。4xモデルは通常、縦横を4倍にしますが、最終サイズとリソース使用量は実際のノード出力を基準にします。
アップスケールモデルの選び方
| モデル | 最初に試す場面 | 特徴 |
|---|---|---|
| 4x-ESRGAN | 汎用アップスケール | 公式チュートリアルの例で、比較の基準にしやすい |
| RealESRGAN_x4plus | 写真、写実的なシーン | 自然な質感で試しやすい汎用修復モデル |
| RealESRGAN_x4plus_anime_6B | アニメ、イラスト | 線と色面を比較しやすいアニメ向けモデル |
| realesr-general-x4v3 | 軽量な汎用処理 | 複数画像の比較に使いやすい軽量系の選択肢 |
すべての画像に最適なモデルはありません。結果は画像の種類、ベースモデルの画風、圧縮痕、拡大率で変わります。イラストはanime系、写真は汎用系から試し、輪郭、肌、髪、微細な質感を比較します。
モデルディレクトリの確認
アップスケールモデルは通常upscale_modelではなくupscale_modelsへ置きます。UpscaleModelLoaderはextra_model_paths.yamlで追加したパスも読み込めます。一覧が更新されなければ、まずパスとファイルを確認してから画面更新または再起動を行います。
latent拡大と2回目サンプリング:LatentUpscale + KSampler
ピクセル拡大はpromptを解釈し直しません。拡大後に材質や細部を生成し直したい場合は、latentを拡大してもう一度サンプリングします。denoiseが元画像を残す量と再描画する量を決めます。
LatentUpscaleのパラメータ
| パラメータ | 役割 | 注意点 |
|---|---|---|
upscale_method | 拡大アルゴリズム | nearest-exact、bilinear、bislerpなど |
width / height | 目標サイズ | 片方を0にすると、もう一方から縦横比を維持して計算 |
crop | crop方法 | 主な選択肢はdisabledまたはcenter |
LatentUpscaleの出力は拡大したlatentで、その後にKSamplerへ渡します。denoiseが1.0に近いほど再生成が増え、細部が増える一方で、構図、顔、服装も変化しやすくなります。0.0に近いほど元画像を残し、新しい細部は少なくなります。
すべてのモデルで通用するdenoise値はありません。細部を少し足したいなら低い値から始めます。seed、sampler、steps、CFG、checkpoint、LoRA weightを固定し、一度に1項目だけ変えます。値を上げて顔や服の質感が崩れ始めたら、直前の安定した値へ戻します。
ピクセル拡大との違い
| ルート | 構造が変わるか | 細部が増えるか | 向いている場面 |
|---|---|---|---|
| ピクセル拡大 | 通常は構図を意図的に変えない | ピクセル細部を再構築 | 元画像が正しく、解像度だけ必要 |
| latent再サンプリング | denoiseに応じて変わる | 細部を生成し直す | ある程度の変化を許容し、材質や局所構造を描き直したい |
latent再サンプリングは単純なresizeではありません。ControlNet、IPAdapter、regional promptingを使ったworkflowでは、2回目のpassが上流条件を弱めることがあります。再サンプリング用の分岐を試す前に、元の出力とworkflowを保存します。
FaceDetailerによる顔修正:Impact Packの自動処理
遠景の顔がぼやける問題はよく起こります。FaceDetailerはImpact Packの顔検出とDetailer処理を組み合わせ、局所領域を検出してcropへdetailまたはinpaintを適用します。小さな顔の改善には使えますが、人物の同一性維持や顔交換のツールではありません。
Impact Packのインストール
Impact Packはthird-party custom nodeで、maintainerはComfyUI Managerからのインストールを推奨しています。custom nodeのインストール画面でComfyUI-Impact-Packを検索し、インストール後にComfyUIを再起動します。
Impact Packは更新が多く、ノード構造や互換条件も変化します。現在のREADMEでは、一部のUltralytics Detector Providerに別のImpact Subpackが必要とも説明されています。古いworkflowで赤いノード、detectorの欠落、パラメータ差が出たら、古い画面をまねるのではなく、最新のREADME、Subpack説明、Manager状態を確認します。
最初の顔修正
生成画像の遠景に少しぼやけた顔がある場合を考えます。
まずImpact PackのメニューからFaceDetailerを追加します。
次にworkflowのimage、model、clip、vae、detectorなど必要な入力を接続します。入力はversionで変わることがあるため、現在のノードとREADMEを基準にします。
検出領域、guide_size、max_size、noise_mask、inpaint_model、cycleを先に確認します。guide_sizeは小領域をdetailするときの基準サイズ、max_sizeは領域の長辺とVRAM使用量を制限します。
denoiseは保守的な値から始めます。0.3〜0.5は顔修正の実践的な開始範囲ですが、公式の固定値ではありません。元の顔が小さく、検出boxが大きいほど慎重にします。
元画像と修正版を比較し、顔が明瞭になっても人物、表情、髪、背景が必要以上に変わっていないか確認します。
FaceDetailerパラメータ表
| パラメータ | 役割 | 調整の考え方 |
|---|---|---|
guide_size | Detailerが処理する領域の基準サイズ | 中程度から始め、大きくしすぎて再描画とVRAM負荷を増やさない |
max_size | 処理領域の最大サイズ | 大きすぎる検出boxとVRAM使用量を抑える |
noise_mask | 検出領域へnoise maskを使うか | switchとして扱い、インストール済みversionで動作を確認 |
inpaint_model | inpaint model経路を使うか | 専用inpaint checkpointを使うworkflowで設定 |
cycle | Detailerの反復回数 | まず1回にし、繰り返しで元の顔から離れないか確認 |
detectorが処理領域を決めます。FaceDetailerで顔が悪化したら、detectorが正しい顔を選んだか確認し、領域、denoise、guide sizeを小さくします。手の崩れには手用detectorとDetailer、または手動inpaintingが必要で、FaceDetailerに自動修正を期待しません。
FaceDetailerの限界
FaceDetailerは顔の細部を改善できますが、元の人物を維持する保証はありません。人物の一貫性が目的ならFaceID、InstantID、ReActor、LoRAなどを使います。実在人物の顔には、自分が所有する素材または使用許諾を得た素材だけを利用します。
手動inpainting:全体を作り直さず一部分だけ変える
logoの境界、背景の小さな欠陥、片手だけを直すなら、手動inpaintingの方が制御しやすい場合があります。maskは処理対象を示しますが、最終的な影響範囲はencoding、conditioning、denoise、compositingで変わります。
Mask Editorの操作
商品画像の背景に小さな欠陥がある場合を考えます。
まず元画像をLoad Imageに読み込み、ノードを右クリックしてOpen in MaskEditorを選びます。
変更したい領域だけをbrushで塗ります。
塗りすぎた部分をeraserで修正し、境界には適切な遷移幅を残します。
最後にSaveを押し、maskを画像ノードへ戻してinpainting経路に渡します。
2つの一般的なinpainting接続
標準workflowでは、主に2種類のconditioning経路があります。両方を機械的に1本へ連結する必要はありません。
1つ目はVAE Encode (for Inpainting)です。pixels、vae、mask、grow_mask_byを受け取り、noise maskを含むlatentを出力します。そのlatentをKSamplerへ渡し、結果をVAE Decodeで画像へ戻します。
2つ目はInpaintModelConditioningです。positive、negative、vae、pixels、maskを受け取り、処理済みpositive、negative、latentを出力します。それぞれをKSamplerへ接続します。専用のinpaint conditioningが必要なworkflowで使います。
KSampler自体はmodel、positive、negative、latentなどのsampling入力を受け取ります。VAEは前後のencode/decodeノードで使い、KSamplerへ直接接続しません。
grow_mask_byの役割
grow_mask_byはmaskを外側へ広げ、latent空間に遷移領域を作ります。maskが狭すぎると硬い境界が出やすく、大きすぎると満足していた部分まで描き直します。小さな拡張から始め、継ぎ目と背景を確認しながら増やします。
継ぎ目を減らす方法
境界に継ぎ目、明るさの差、貼り付けたような見え方があれば、grow_mask_byを少し増やし、denoiseを下げ、maskをfeatherします。third-partyのinpaint nodesではExpand MaskやBlur Maskedも試せますが、ノード名と動作はインストールしたversionで確認します。
高度な選択肢:Ultimate SD Upscaleとcomfyui-inpaint-nodes
ピクセル拡大とlatent再サンプリングが基本です。ただし大画像を一括処理するとVRAMを使い切りやすく、難しい継ぎ目には精密なmask前処理が必要です。以下のcustom nodeは高度な選択肢で、最初のworkflowに必須ではありません。
Ultimate SD Upscale:タイル分割で高解像度化
1024×1536の画像を4096×6144へ拡大すると、一括の2回目サンプリングは負荷が高くなります。Ultimate SD Upscaleは画像をtileに分け、各tileへimage-to-image diffusionを行ってから結果を結合します。
タイル分割により、各処理サイズをdiffusion modelの学習サイズに近づけ、全体を一度に処理する負荷を下げられます。代わりに処理は遅くなり、tileの継ぎ目、質感の反復、局所的な画風の不一致が出ることがあります。
ComfyUI ManagerでComfyUI_UltimateSDUpscaleを検索してインストールできます。入口、メニュー、パラメータは変わる場合があるため、最新READMEとノード画面を確認します。
comfyui-inpaint-nodes:mask前処理
comfyui-inpaint-nodesはFooocus inpaint、LaMa、MAT、maskのexpand、shrink、blur、fillを提供します。Fooocus inpaint modelは通常ComfyUI/models/inpaintへ置きますが、model互換性とconditioning経路は現在のREADMEで確認します。
| 目的 | 試す前処理 |
|---|---|
| 編集境界の継ぎ目が目立つ | Expand MaskとBlur Masked |
| mask範囲を細かく調整したい | Shrink MaskまたはExpand Mask |
| mask内の初期内容を整えたい | Fill Masked |
| 物体削除またはoutpainting | LaMa、MAT、対応するoutpaint workflow |
denoiseだけで問題は解決しません。1.0に近い値はmask領域を大きく描き直し、低い値は元の内容をより残しますが、modelとconditioning経路にも左右されます。mask外が変化したら、接続とcompositingを確認してからmask、denoise、遷移幅を調整します。
シーン別の選択表:どの後処理を使うか
| シーン | 推奨ルート | 理由 | 代替案 |
|---|---|---|---|
| 元画像が正しく、解像度だけ上げたい | ピクセル拡大 | 通常は構図を保ちながらピクセルを強化 | 細部を生成し直すならlatent再サンプリング |
| 材質や細部を再生成したい | latent再サンプリング | denoiseで保持と再描画の割合を調整 | 大画像ならUltimate SD Upscale |
| 遠景の顔がぼやけている | FaceDetailer | 顔を検出して局所的にdetail | 検出が不正確なら手動inpainting |
| 手、物体、logoに局所的な誤りがある | 手動inpaintingまたは対応Detailer | maskまたはdetectorで範囲を限定 | 構造が誤っているなら生成へ戻る |
| 目標解像度がVRAMに収まらない | Ultimate SD Upscale | tiled img2imgでtileごとの負荷を下げる | 目標サイズを下げてピクセル拡大 |
| 編集境界に継ぎ目がある | maskの拡張とfeather | 局所再描画に遷移領域を与える | 変更強度とdenoiseを下げる |
長所と注意点
| ルート | 長所 | 短所 | VRAM負荷 |
|---|---|---|---|
| ピクセル拡大 | 速く、通常は構図を保ち、モデル選択肢が多い | 構造エラーは直せず、人工的な質感が出ることがある | 低〜中 |
| latent再サンプリング | 材質と細部を描き直せ、調整幅が広い | denoise調整が必要で、元画像からずれることがある | 中〜高 |
| FaceDetailer | 顔を自動検出し、顔maskを手描きしなくてよい | 同一人物を保証せず、過剰修正の可能性がある | 中〜高 |
| 手動inpainting | 指定領域を明確に制御できる | mask、境界、conditioningの調整が必要 | 中 |
| Ultimate SD Upscale | 大画像をtile単位で処理できる | 遅く、tileの継ぎ目が出ることがある | tileとmodelによる |
すべての後処理ノードを一度に有効にしないでください。現在の問題を解決する最も破壊性の低いルートを使い、中間結果を保存してから、追加のサンプリングや部分修正が必要か判断します。
推奨順序:拡大、顔修正、最後にinpaint
後処理の順序は結果に影響します。キャラクター画像なら、保守的な拡大、検出領域の修正、手動の局所変更という順序から始められます。ただし、すべての画像に固定された手順ではありません。
この順序を使う理由
まず元画像とworkflowを保存します。問題がサイズだけなら、promptを通常は再サンプリングしないピクセル拡大を使います。
次に顔、手、その他の小領域を確認します。顔はFaceDetailer、手や物体は対応するDetectorとDetailerまたは手動maskを使います。元画像が大きいほど、修正が過剰か判断しやすくなります。
最後にlogo、境界、背景の欠陥など指定部分へ手動inpaintingを行い、前の全体処理で局所修正が再び崩れないようにします。
2回目passのリスク
ControlNet、IPAdapter、regional promptingを使ったworkflowでは、latent再サンプリングとDetailer内部の局所samplingが上流条件を弱めることがあります。pose、line art、髪色、服、参照人物が変化する可能性があります。
2回目passが必要なら、元の条件を残し、seedと他のパラメータを固定し、低いdenoiseから始めます。新しい細部より上流結果が重要なら、先にピクセル拡大を試し、再サンプリングの価値を判断します。
関連記事
- ComfyUI入門ガイド:基本画面、モデルディレクトリ、最初の画像生成。
- ComfyUI workflow再利用ガイド:workflowの読み込み、欠落ノード、再現性のトラブルシュート。
- Stable Diffusionモデル選びガイド:ベースモデル、VAE、VRAM、ライセンスの境界。
よくある失敗:ぼけ、顔の変化、継ぎ目、mask外への影響
| 症状 | 主な原因 | 対処 |
|---|---|---|
| 拡大後にぼける、または不自然に硬い | モデルが画像の種類に合わない、または拡大を繰り返しすぎている | 汎用、写真向け、アニメ向けモデルを比較し、処理の繰り返しを減らす |
| 顔が別人に見える | 2回目サンプリングのdenoiseが高い、またはDetailer領域が大きい | denoiseを下げ、検出領域を小さくする。同一性が問題なら専用手段を使う |
| 不要な質感が増える | tiled upscaleまたは高denoiseが過剰に再描画している | denoiseを下げ、promptに新しい情報を加えず、小画像で先に試す |
| mask境界に継ぎ目が出る | maskが狭い、遷移がない、または局所的な明るさが変わる | grow_mask_byとfeatherを調整し、変更強度を下げる |
| mask外が変化する | mask、noise mask、conditioning、compositingの接続が不正確 | 接続を確認し、maskを小さくしてdenoiseを下げる |
| FaceDetailerが顔を検出しない | 顔が小さい、角度が特殊、またはdetectorが合わない | 保守的に拡大するかdetectorを変え、高denoiseで無理に直さない |
| アップスケールモデルが表示されない | パスや拡張子が違う、または一覧を更新していない | upscale_modelsへ置くか追加パスを設定し、更新または再起動する |
| Ultimate SD Upscaleが赤いノードになる | custom nodeがない、versionまたは依存関係が合わない | Managerでインストールと更新を確認し、複雑な競合は別途切り分ける |
| workflowがVRAM不足になる | 解像度、tile、batch、Detailer領域が大きすぎる | サイズとbatchを下げ、max_sizeとtileを小さくするか、ピクセル拡大を使う |
次は修正を続けるか、生成へ戻るか
構図、人物、pose、商品形状が正しく、解像度、小さな顔、手、局所的な欠陥だけが残っているなら後処理を続けます。理想的な変更は小さな検出boxまたはmaskに収まります。
人物、pose、服、主体数、商品構造が誤っているなら生成へ戻ります。denoiseとinpaintingを重ねても、根本の条件を直すより不確実性が増えやすくなります。prompt、ControlNet、参照画像、モデル選択を修正します。
複数出力で同じキャラクターや商品を維持する場合も、inpaintingの繰り返しだけでは足りません。後処理はほぼ正しい1枚を仕上げる工程であり、同一性asset、構造制御、trainingの代わりにはなりません。
まとめ
ComfyUIの後処理には、ピクセル拡大、latent再サンプリング、FaceDetailerによる顔修正、手動inpaintingという4つの主なルートがあります。元画像の内容が正しければピクセル拡大から始めます。細部を生成し直す場合だけ低denoiseのlatent再サンプリングを使います。遠景の顔にはFaceDetailerを使いますが同一人物の維持とは分け、指定部分の誤りには手動maskとinpaint conditioningを使います。
キャラクター画像では、保守的な拡大、検出領域の修正、最後の手動変更という順序が実用的です。一括の2回目サンプリングがVRAMに収まらない場合、Ultimate SD Upscaleでタイル処理できますが、継ぎ目と局所的な画風は確認が必要です。各中間画像を元画像と比較すれば、顔の変化、人工的な質感、mask外への影響を特定しやすくなります。
ComfyUIの後処理ルートを選んで実行する
問題をサイズ、細部の再生成、小領域の欠陥、指定部分の変更に分け、破壊性の低いルートから試します。
- 1
ステップ 1: 元の出力を保存する
元画像、workflow、seed、checkpoint、sampler、steps、CFGを保存し、後の比較では一度に1項目だけ変更します。 - 2
ステップ 2: 単に大きくしたいだけか判断する
構図、人物、質感が正しいなら、UpscaleModelLoaderとUpscale Image (Using Model)から始めます。 - 3
ステップ 3: 再サンプリングが必要か判断する
材質や細部を生成し直したい場合だけLatentUpscaleとKSamplerを使い、低いdenoiseから始めます。 - 4
ステップ 4: 小さな顔または検出領域を修正する
FaceDetailerまたはDetectorとDetailerの組み合わせを使い、guide_size、max_size、denoiseを抑えて背景全体を描き直さないようにします。 - 5
ステップ 5: 指定部分にmaskを描く
Mask Editorで変更箇所だけを覆い、境界に小さな遷移幅を残して、VAE Encode (for Inpainting)またはInpaintModelConditioningの経路へ接続します。 - 6
ステップ 6: 継ぎ目とmask外の変化を確認する
硬い境界、色のずれ、貼り付けたような部分があれば、grow_mask_by、ぼかし、denoiseを調整し、maskとnoise maskを確認します。 - 7
ステップ 7: 大画像のVRAM負荷を下げる
目標サイズを下げるかUltimate SD Upscaleでタイル処理し、すべてのタイル境界と質感の移り変わりを確認します。 - 8
ステップ 8: 変更が最小の成功版を残す
元画像、ピクセル拡大、再サンプリング、部分修正版を比較し、目的を満たしながら構造のずれが最も少ないものを残します。
FAQ
ComfyUIでHires Fixを組むにはどうすればよいですか?
Latent UpscaleとUpscale Image (Using Model)の違いは何ですか?
ComfyUIのアップスケールモデルはどこに置きますか?
FaceDetailerは顔交換ツールですか?
Inpaintingでmask外まで変わるのはなぜですか?
FaceDetailerで顔が不自然になったら何を調整しますか?
Ultimate SD Upscaleはどんなときに使いますか?
10分で読めます · 公開日: 2026年7月22日 · 更新日: 2026年7月21日
ComfyUI と Stable Diffusion シリーズ: 入門、workflow、モデル選び、prompt
検索からこのページに来た場合は、前後の記事もあわせて読むと同じテーマの理解がかなり早く深まります。



コメント
GitHubアカウントでログインしてコメントできます