COMFYUI 基礎 · 第 06 課

畫出遮罩,只重畫一小塊:第一次局部重繪

用官方貓咪茶杯範例認識透明遮罩、Mask Pen 與 VAE Encode for Inpainting,練習圈定修改範圍,附八節點 JSON 與比較紀錄。

  • 入門實作
  • 約 40–60 分鐘,模型下載與生成另計 · 閱讀與練習
  • 發布

開始前,準備這些

  • 能在既有 ComfyUI 匯入 JSON、選擇 checkpoint 並保存圖片
  • 知道 fixed seed 與一次只改一個條件
  • 有可執行本課 inpainting 模型的環境;不沿用 Qwen 設定

這一課,你會學會

  • 區分遮罩與直接塗色
  • 接好 IMAGE 與 MASK 兩條不同輸入
  • 檢查修改區域、交界及區域外的變化
本課目錄

想改桌上一個杯子,不想整張重來

第五課用文字要求保留角色,這次多加一個工具:遮罩(mask),用範圍告訴工作流哪裡要重畫。練習目標是認出官方貓咪圖片右下方的修改區,跑出自己的 A 圖,再只調整遮罩做 B 圖比較。

這課換到 Stable Diffusion 局部重繪工作流。它不是在第五課 Qwen 的文字欄加上「遮罩」就會生效,也不是把兩套模型接在一起。先另存新工作流,保留第五課檔案。

官方局部重繪教學 · 官方 Mask Editor 操作 · 本課模型檔案入口

本課圖片是官方 AI 生成示例與官方操作畫面,不是本站出圖測試。可先完成讀圖與接線檢查;需要生成的部分,只有在自己實際跑完後才能填結果。遮罩能限制取樣修改的範圍,但不能據此保證未圈選區域逐像素完全不變。

先看輸入、修改區與官方結果

官方貓咪茶杯輸入圖,右下桌面含透明遮罩
官方輸入圖,含 alpha 透明通道。右下桌面有透明區,不同瀏覽器背景可能讓它看起來不明顯;請下載原 PNG,勿用螢幕截圖代替。來源:Comfy-Org 原始檔。
官方局部重繪畫布,左下輸入圈出右下桌面,右側結果多了一只茶杯
官方操作畫面。左下是輸入與遮罩,右側是示範結果;數字 1、2、3 分別標出模型、來源圖和執行入口。這是較早介面的 Queue 按鈕;現行介面可能顯示 Run。圖中 seed 為 randomize,本課對照實驗改用 fixed。官方來源。

先回答兩題:要改的是貓咪眼睛,還是右下桌面?IMAGE 和 MASK 是否從同一個 Load Image 出來?答案是右下桌面,且兩條輸出各有不同用途。看到一張來源圖,不代表遮罩已經接入。

官方另提供以下一般 SD1.5 checkpoint 的結果。可以觀察新杯子的邊緣、陰影及桌布,但不要把兩張官方示例當成本站做的嚴格模型 A/B 測試:其檔案中的 seed 不同,不能將所有差異歸因於模型。

官方一般 SD1.5 模型的局部重繪示例,右下方新增茶杯
官方一般 SD1.5 結果,非本站實測;與上一張展示的 seed 不同,不作單一變因優劣評分。原始素材。

第 1 步 另開一份局部重繪流程

  1. 下載本課八節點 JSON,在 ComfyUI 的 Workflow → Open 匯入
  2. 下載上方官方輸入 PNG,檔名保留 input.png,再由 Load Image 選取它
  3. Load Checkpoint 選 512-inpainting-ema.safetensors。這是官方教學指定的 inpainting checkpoint,放在目前環境的 models/checkpoints;不要選第五課 Qwen 檔案,也不要只改其他模型的檔名
  4. 模型檔案頁列約 5.21 GB,下載與儲存空間另計;檔案容量不等於執行所需 VRAM。本課沒有測得特定顯示卡的最低記憶體或速度,不將第二課 SD1.5 的建議直接套過來

模型來源標示 openrail++,請從模型入口核對適用條款後取得;本課不附權重,也不作無限制商用承諾。模型尚未備妥的人先做下方讀圖與接線題,不需要為了這課購買雲端服務。

應該看到: 8 個處理節點,模型與圖片欄位都能選到自己的檔案。JSON 只帶設定,不會下載模型、安裝節點或替你完成生成。

第 2 步 沿著兩條線檢查遮罩

VAE Encode for Inpainting 節點顯示 pixels、vae、mask 三個輸入及 grow_mask_by
官方節點欄位示意,對照輸入名稱,不把畫面當作本課生成紀錄。官方來源。
  • Load Image 的 IMAGE → pixels:傳入要修改的圖片
  • Load Image 的 MASK → mask:傳入要修改的範圍
  • Load Checkpoint 的 VAE → vae:供圖像編碼使用
  • VAE Encode (for Inpainting) 的 LATENT → KSampler 的 latent_image:把含遮罩資訊的潛在資料交給取樣器

這裡不是第二課的 Empty Latent Image,也不是一般 VAE Encode。若 MASK 沒接上,只盯著提示詞看通常找不到原因。

本課來源 PNG 的透明區已經備妥。ComfyUI 的 Load Image 會從 alpha 通道建立反向遮罩:透明處形成要處理的區域;沒有透明通道的普通 JPEG 不會自動知道你想修哪裡。官方 LoadImage 原始碼

應該看到: IMAGE 和 MASK 兩條線都進入同一個 VAE Encode (for Inpainting)。先保持 grow_mask_by = 6,它會讓處理範圍向外延伸以幫助交界過渡,不是數字越大越精準,也不把它解讀成指定方向必定外擴六個像素。

第 3 步 先保存 A 的設定,再執行一次

這次先沿用官方茶杯主題,不急著換成角色改衣服。正向文字為「teacup on pink tablecloth, Anime style」,負向為「watermark, text」。本課 JSON 設定 seed 20261008、fixed、steps 20、cfg 8、sampler uni_pc_bh2、scheduler normal、denoise 1;輸出前綴為 greenbean-lesson-06-A。

以上是這份 SD 工作流的練習基準,不是 Qwen 通用參數,也不是最佳品質保證。輸入圖為 1024×1024;初次先一張,不擴大尺寸或增加批次。環境記憶體不足時保存錯誤,不反覆重按 Run。

另存自己的 lesson-06-A.json,按 Run 一次。完成後同時保留結果 PNG、JSON 和比較紀錄 CSV。若只完成設定、尚未出圖,就在狀態填「尚未生成」。

第 4 步 用 Mask Pen 改範圍,不要用 Paint Pen 塗掉原圖

官方新版 Mask Editor,左方工具列、上方 Save 與右方筆刷設定
官方新版 Mask Editor 操作畫面;人物與數值是介面示例,與本課貓咪範例不同。使用左方 Mask Pen 畫範圍,上方 Save 保存。官方來源。
  1. 回到相同原始 input.png,另存 B 工作流;不要把 A 的生成結果接成來源,否則比較時已多改一個條件
  2. 在 Load Image 按右鍵 → Open in Mask Editor;新版也可從節點上方的遮罩圖示進入
  3. 選 Mask Pen,確認正在操作 Mask Layer。Paint Pen 會修改圖片 RGB 內容,這次不用它代替遮罩筆
  4. 用 Eraser 修掉原遮罩的一小部分,或用 Mask Pen 在右下桌面稍微擴大範圍;不要同時改提示詞、seed、模型或 grow_mask_by
  5. 按 Save。按 Cancel 則不保存剛才的遮罩修改
  6. 輸出前綴改成 greenbean-lesson-06-B,以相同 seed 與其他參數執行一次

遮罩覆蓋層可用黑、白或 Negative 顯示。畫面看見黑色,不等於那裡一定受保護;先看自己選的圖層、工具與顯示模式。Invert 是反轉遮罩,與切換覆蓋層顏色不是同一件事。

應該完成: A、B 來源相同,修改範圍不同,其他取樣設定一致;每張結果能找到對應 JSON。沒有實際跑 B,就只記遮罩設定,不預填「效果更好」。

第 5 步 按三個位置驗收

把來源、A、B 用同樣倍率並排。先看遮罩內是否真的生成預期杯子,再看交界有沒有硬邊、斷掉的桌布紋理或突兀陰影,最後看遮罩外的貓咪眼睛、帽子及背景有沒有可見變化。

新增杯子成功但桌布接縫明顯,應記「內容達成、融合待改善」。圈選區域外有變化,就如實寫位置,不能只因有遮罩便判定完全保留。這份流程沒有在最後把原圖未選區域逐像素貼回;若交付需求要求完全相同,需要另外設計與驗證合成流程。

卡住時先找是哪一種問題

  • 範圍看起來沒變:確認用了 Mask Pen、按了 Save,且 MASK 接到 mask
  • 整張畫面似乎都被改:檢查是否誤用 Invert,或把遮罩畫成全圖
  • 匯入後找不到 input.png:在 Load Image 重新選本課下載的原 PNG,不要用網頁截圖
  • 新杯子邊緣不自然:記錄交界位置,下一輪只改遮罩大小或一項設定,避免一次修改所有參數
  • 缺模型/執行記憶體不足:依第二課排錯記錄環境與錯誤;本課未提供硬體保證

小練習與參考答案

  1. 用 Paint Pen 把桌面塗黑,是否等於建立遮罩?不是,它修改 RGB 圖層;本次用 Mask Pen。
  2. A 和 B 除遮罩外又換了 seed,可以斷定遮罩讓結果變好嗎?不能,已不是單一變因。
  3. 下載 JSON 就能省略模型嗎?不能,JSON 不含權重。
  4. 遮罩外一定逐像素不變嗎?這份流程未提供這個保證,需另外檢查。
  5. 官方兩張模型展示的 seed 不同,能拿來宣稱嚴格跑分嗎?不能,它們只作效果觀察示例。

最後交付自己的 A/B 圖片、對應 JSON 和已填觀察單。未生成者交接線檢查與阻礙紀錄即可,兩種完成狀態分開寫。

練習下載與來源

查核日期為 2026 年 10 月 9 日(台灣)。圖片取自 Comfy-Org/docs 固定版本 98836b7;保持原始檔案與原尺寸。JSON 從同庫官方比較 PNG 所附工作流衍生,移除未連接節點及說明便條,指定本課模型、來源、固定 seed 與輸出前綴;詳細差異附在 README。它經過結構與連線檢查,尚未實際匯入 ComfyUI 或執行 GPU 生成。