這篇要運用自動遮罩、重繪、批次的技巧,幫同一個人物更換不同背景。
自動遮罩
自動遮罩採用Segment Anything這個節點組,載入圖片後可以依指定的提示詞自動產生遮罩圖像,這邊我要更換的是背景,所以先讓AI抓出人物後,再反轉遮罩範圍輸出,為了讓重繪圖像不要過於生硬,將遮罩進行了高斯模糊。這個工作流使用的節點:
- Load Image
- SAMModelLoader (segment anything)
- GroundingDinoModelLoader (segment anything)
- GroundingDinoSAMSegment (segment anything)
- InvertMask (segment anything)
- Gaussian Blur Mask
- Mask To Image (mtb) < 方便檢視遮罩範圍
- Preview Image
做為核心流程的Segment Anything在安裝上可能會遭遇到一些困難,只要照官方流程操作並手動下載需要的模型就可以解決。
在這個工作流中產生的遮罩可以透過調整threshold數值去調整範圍,像範例圖片的人物身體部分有些空洞,將threshold從0.3調到0.2就可以改善,不同的來源圖像需要的數值可能不同。
重繪背景
將上一個工作流的遮罩跟來源圖像輸入到重繪用的工作流中,加上批次出圖的節點,就可以一次更換多個背景。
這個工作流使用的節點:
- VAE Encode (for Inpainting) < 採用來源圖像
- Repeat Latent Batch < 調整批次數量
- Load Checkpoint
- Load VAE
- Batch Prompt Schedule < 使用批次語法設定提示詞
- Clip Text Encode (Prompt)
- KSampler
- VAE Decode
- Preview Image
跑完圖只要將Preview Image這個節點拉大就可以一次顯示多個圖像。
結論
經過這個流程重繪的背景會受到來源圖片的影響產生類似汙染或是不自然接縫的感覺,可以經過放大或再一次重繪後可以改善。