中文(繁體)

目前位置: 首頁> AI 課程> AI 基礎入門

如何在comfyui 中執行hires.fix​

作者: LoRA 時間: 2025年03月06日 1039

在ComfyUI 中執行“Hires.fix”(高分辨率修復)並不是一個原生的單一節點功能,而是需要通過組合一系列節點來實現類似Automatic1111 WebUI 中“Hires.fix”的效果。 Hires.fix 的核心思想是先生成一個低分辨率圖像,然後通過上採樣和二次優化來提升圖像的分辨率和細節。以下是詳細的步驟和方法,適合初學者和進階用戶。

1.理解Hires.fix 的工作原理

Hires.fix 通常分為以下步驟:

  • 第一步(初次採樣) :先生成一個較低分辨率的圖像(例如512x512),以節省計算資源。

  • 第二步(上採樣) :將低分辨率圖像放大到目標分辨率(例如1024x1024)。

  • 第三步(二次優化) :對放大後的圖像進行進一步的去噪和細節優化(類似img2img 操作),以提高圖像質量。

在ComfyUI 中,我們可以通過節點組合來實現這一流程。

2.準備工作

確保你已經安裝了ComfyUI 及其依賴項。如果需要額外的上採樣模型(如ESRGAN 或其他放大模型),可以通過ComfyUI Manager 或手動下載模型,並放入ComfyUI/models/upscale_models文件夾。

3.基礎Hires.fix 工作流步驟

以下是一個簡單的實現Hires.fix 的工作流:

步驟1:創建基礎工作流

  1. 加載模型

    • 在ComfyUI 界面中,右鍵單擊空白處,選擇Add Node > Loaders > Load Checkpoint ,添加一個加載模型的節點。

    • 選擇你的Stable Diffusion 模型(例如v1-5-pruned-emaonly.safetensors )。

  2. 設置文本提示

    • 添加兩個CLIP Text Encode (Prompt)節點(Add Node > Conditioning > CLIP Text Encode) ,分別用於正向提示詞(positive prompt)和負向提示詞(negative prompt)。

    • 將提示詞連接到Load Checkpoint節點的CLIP 輸出。

  3. 生成低分辨率圖像

    • steps :20-50(採樣步數)

    • cfg :7-9(提示詞引導強度)

    • denoise :1.0(完全去噪)

    • 添加一個Empty Latent Image節點(Add Node > Latent > Empty Latent Image) ,設置寬度和高度為較低分辨率(如512x512)。

    • 添加一個KSampler節點(Add Node > Sampling > KSampler) ,連接模型、提示詞和Empty Latent Image的輸出。

    • 配置KSampler參數,例如:

    • 添加一個V AE Decode節點(Add Node > Latent > VAE Decode) ,將KSampler的輸出連接到它,並使用模型自帶的VAE。

  4. 預覽初次生成結果

    • 添加一個Preview Image節點(Add Node > Image > Preview Image) ,連接到VAE Decode的輸出,查看低分辨率圖像。

步驟2:上採樣(放大圖像)

  1. 上採樣Latent

    • 添加Upscale Image (using Model)節點(Add Node > Image > Upscale Image)

    • 加載一個上採樣模型(Add Node > Loaders > Load Upscale Model) ,如4x-UltraSharp。

    • VAE Decode的圖像輸入到Upscale Image ,然後再用VAE Encode轉換回Latent 空間。

    • 添加一個Upscale Latent節點(Add Node > Latent > Upscale Latent) ,將KSampler的Latent 輸出連接到它。

    • 設置放大倍數(例如upscale_factor=2 ),將512x512 放大到1024x1024。

    • 或者,你可以使用像素空間的上採樣模型(例如ESRGAN ):

步驟3:二次優化(細節修復)

  1. 第二次採樣

    • denoise :0.3-0.6(低去噪強度,避免破壞原圖像結構)

    • steps :10-20(較少的步數,專注於細節)

    • 添加另一個KSampler節點,將上採樣後的Latent 輸入到此節點。

    • 使用相同的模型和提示詞,但調整參數以進行細節優化:

    • 再次使用VAE Decode將Latent 解碼為圖像。

  2. 保存或預覽最終結果

    • 添加Save Image節點(Add Node > Image > Save Image) ,連接到第二次VAE Decode的輸出,保存高分辨率圖像。

4.使用插件簡化流程

雖然上述方法是手動實現,但你也可以通過一些自定義節點或插件簡化操作。例如:

  • Ultimate SD Upscale

    • 添加Ultimate SD Upscale節點,連接初次生成的圖像。

    • 設置目標分辨率(如1024x1024)和上採樣模型。

    • 運行後直接得到優化後的高分辨率圖像。

    • 這是一個流行的自定義節點,可以實現類似Hires.fix 的效果。

    • 安裝方法:

    • 使用方法:

    1. 通過ComfyUI Manager 搜索並安裝ComfyUI_UltimateSDUpscale

    2. 或者手動克隆倉庫到custom_nodes文件夾:


      git clone https://github.com/ssitu/ComfyUI_UltimateSDUpscale.git
  • ControlNet Tile Upscale

    • 如果你安裝了ControlNet,可以使用ControlNet Tile模型進行分塊上採樣,避免一次性處理大圖像導致的內存問題。

    • 需要下載controlnet-tile模型並放入ComfyUI/models/controlnet文件夾。

5.推薦參數設置

  • 初次生成

    • 分辨率:512x512 或768x768(根據模型支持)

    • Steps:20-30

    • CFG Scale:7-9

  • 上採樣

    • 放大倍數:2x 或更高(視顯存支持)

    • 如果使用ESRGAN,推薦4x-UltraSharpReal-ESRGAN

  • 二次優化

    • Denoise:0.3-0.6(避免過高,否則會改變圖像風格)

    • Steps:10-20

    • CFG Scale:5-7

6.常見問題與優化

  • 圖像細節丟失:如果二次優化後細節丟失,嘗試降低denoise值,或增加steps

  • 內存不足:如果顯存不足,嘗試降低初次生成的分辨率,或使用ControlNet Tile分塊處理。

  • 風格不一致:確保第二次採樣的提示詞與第一次一致,或者使用ControlNet 約束圖像結構。

7.總結

在ComfyUI 中實現Hires.fix 需要手動構建工作流,但靈活性極高。推薦的流程是:

  1. 生成低分辨率圖像。

  2. 使用Upscale Latent或上採樣模型放大。

  3. 使用第二次KSampler優化細節。 或者直接使用Ultimate SD Upscale插件簡化操作。