C30:最佳化文章:使用 Segment Anything 實現自動遮罩

簡介

在上一篇文章中,我們了解到自動遮罩是影像編輯工作流程中的一項關鍵技術,尤其是在為修復或合成等任務將前景主體與背景分離時。在本文中,我們將探討如何結合 ComfyUI 使用 Segment Anything 模型(SAM 2)來自動完成遮罩過程。利用自訂節點和工作流程,你可以高效地定義遮罩、柔化邊緣並替換背景。



自動遮罩的關鍵元件

1. 安裝所需的節點套件和模型

要開始自動遮罩,你需要安裝以下內容:

  • 節點套件:
    使用 ComfyUI Manager 搜尋並安裝這些節點套件。安裝完成後,重新啟動 ComfyUI。
  • SAM 2 模型:
    • 下載 sam2.1_hiera_base_plus-fp16 的模型。來源: Hugging Face。
    • 將模型放在 ComfyUI/models/Sam2 目錄中。如果模型沒有自動安裝,請按照 Hugging Face 頁面上提供的手動安裝步驟操作。

2. 設定工作流程

安裝所需的工具後,你可以建立一個自動遮罩工作流程。以下是逐步指南:

載入影像

首先,使用 Load Image 節點將前景影像和背景影像載入到 ComfyUI 中。請確保已知影像解析度,因為分割需要用到它。

取得影像解析度

使用 Essentials Pack 中的 Get Image Size 節點提取已載入影像的寬度和高度。將 Load Image 節點的輸出連接到 Get Image Size 節點。

定義分割座標

要指定分割點:

  1. 加入 KJNodes 套件中的 Points Editor 節點。
  2. 將 Get Image Size 節點的影像、寬度和高度輸出連接到 Points Editor。
  3. 按右鍵點選 Points Editor 節點並選擇:
    • 將小工具轉換為輸入 (同時適用於寬度和高度)。
    • 新增畫布 ,建立一個空白畫布。
載入 SAM 2 模型
  1. 加入 Download SAM 2 Model 節點,並確保模型參數設定如下:
    • 模型: sam2_hiera_base_plus
    • 裝置: cuda
    • 精確度: floating.16
  2. 將載入器節點的輸出連接到 SAM 2 Segmentation 節點。
建立分割遮罩
  1. 加入 SAM 2 Segmentation 節點。
  2. 將 Points Editor 節點的影像和座標(正點和負點)連接到分割節點。
  3. 使用 Essentials Pack 中的 Mask Preview 節點預覽遮罩輸出。

3. 提高遮罩品質

用模糊柔化邊緣

要最佳化遮罩,請使用 KJNodes 套件中的 Grow Mask with Blur 節點:

  1. 將 Grow Mask with Blur 節點放置在 SAM 2 Segmentation 節點與 Image Composite Mask 節點之間。
  2. 調整以下參數:
    • 模糊半徑:設定為 2 ,以獲得更平滑的邊緣。
    • 擴展值:設定為 2 pixels ,以略微擴大遮罩。
  3. 使用 Mask Preview 節點即時查看變更效果。
合成遮罩

將 Grow Mask with Blur 節點的輸出連接到 Image Composite Mask 節點。這樣可以在保持前景主體完整的同時替換背景。


4. 儲存最終影像

對遮罩和背景替換感到滿意後:

  1. 加入一個 Save Image Extended 節點,將輸出儲存到磁碟。
  2. 確保 Queue Mode 設定為 Queue。
  3. 使用 Ctrl + B 取消儲存節點的旁路,並將工作流程排入佇列以儲存影像。

範例工作流程

下面是工作流程設定的一個範例:

1. Load Image Node → Get Image Size Node → Points Editor Node  
2. Download SAM 2 Model Node → SAM 2 Segmentation Node → Mask Preview Node  
3. Grow Mask with Blur Node → Image Composite Mask Node → Save Image Extended Node  


提高遮罩精確度

為確保遮罩精確度最佳:

  • 使用 Points Editor 節點準確定義前景點和背景點。
  • 在 Grow Mask with Blur 節點中嘗試不同的模糊值和擴展值,以平衡邊緣柔和度與遮罩覆蓋範圍。

參考資料

發表留言