在ComfyUI 中執行“Hires.fix”(高分辨率修復)並不是一個原生的單一節點功能,而是需要通過組合一系列節點來實現類似Automatic1111 WebUI 中“Hires.fix”的效果。 Hires.fix 的核心思想是先生成一個低分辨率圖像,然後通過上採樣和二次優化來提升圖像的分辨率和細節。以下是詳細的步驟和方法,適合初學者和進階用戶。
Hires.fix 通常分為以下步驟:
第一步(初次採樣) :先生成一個較低分辨率的圖像(例如512x512),以節省計算資源。
第二步(上採樣) :將低分辨率圖像放大到目標分辨率(例如1024x1024)。
第三步(二次優化) :對放大後的圖像進行進一步的去噪和細節優化(類似img2img 操作),以提高圖像質量。
在ComfyUI 中,我們可以通過節點組合來實現這一流程。
確保你已經安裝了ComfyUI 及其依賴項。如果需要額外的上採樣模型(如ESRGAN 或其他放大模型),可以通過ComfyUI Manager 或手動下載模型,並放入ComfyUI/models/upscale_models文件夾。
以下是一個簡單的實現Hires.fix 的工作流:
加載模型:
在ComfyUI 界面中,右鍵單擊空白處,選擇Add Node > Loaders > Load Checkpoint ,添加一個加載模型的節點。
選擇你的Stable Diffusion 模型(例如v1-5-pruned-emaonly.safetensors )。
設置文本提示:
添加兩個CLIP Text Encode (Prompt)節點(Add Node > Conditioning > CLIP Text Encode) ,分別用於正向提示詞(positive prompt)和負向提示詞(negative prompt)。
將提示詞連接到Load Checkpoint節點的CLIP 輸出。
生成低分辨率圖像:
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。
預覽初次生成結果:
添加一個Preview Image節點(Add Node > Image > Preview Image) ,連接到VAE Decode的輸出,查看低分辨率圖像。
上採樣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 ):
第二次採樣:
denoise :0.3-0.6(低去噪強度,避免破壞原圖像結構)
steps :10-20(較少的步數,專注於細節)
添加另一個KSampler節點,將上採樣後的Latent 輸入到此節點。
使用相同的模型和提示詞,但調整參數以進行細節優化:
再次使用VAE Decode將Latent 解碼為圖像。
保存或預覽最終結果:
添加Save Image節點(Add Node > Image > Save Image) ,連接到第二次VAE Decode的輸出,保存高分辨率圖像。
雖然上述方法是手動實現,但你也可以通過一些自定義節點或插件簡化操作。例如:
Ultimate SD Upscale :
添加Ultimate SD Upscale節點,連接初次生成的圖像。
設置目標分辨率(如1024x1024)和上採樣模型。
運行後直接得到優化後的高分辨率圖像。
這是一個流行的自定義節點,可以實現類似Hires.fix 的效果。
安裝方法:
使用方法:
通過ComfyUI Manager 搜索並安裝ComfyUI_UltimateSDUpscale 。
或者手動克隆倉庫到custom_nodes文件夾:
ControlNet Tile Upscale :
如果你安裝了ControlNet,可以使用ControlNet Tile模型進行分塊上採樣,避免一次性處理大圖像導致的內存問題。
需要下載controlnet-tile模型並放入ComfyUI/models/controlnet文件夾。
初次生成:
分辨率:512x512 或768x768(根據模型支持)
Steps:20-30
CFG Scale:7-9
上採樣:
放大倍數:2x 或更高(視顯存支持)
如果使用ESRGAN,推薦4x-UltraSharp或Real-ESRGAN 。
二次優化:
Denoise:0.3-0.6(避免過高,否則會改變圖像風格)
Steps:10-20
CFG Scale:5-7
圖像細節丟失:如果二次優化後細節丟失,嘗試降低denoise值,或增加steps 。
內存不足:如果顯存不足,嘗試降低初次生成的分辨率,或使用ControlNet Tile分塊處理。
風格不一致:確保第二次採樣的提示詞與第一次一致,或者使用ControlNet 約束圖像結構。
在ComfyUI 中實現Hires.fix 需要手動構建工作流,但靈活性極高。推薦的流程是:
生成低分辨率圖像。
使用Upscale Latent或上採樣模型放大。
使用第二次KSampler優化細節。 或者直接使用Ultimate SD Upscale插件簡化操作。