前言
本篇來講各種不同的局部重繪(Inpaint)設定適合用在哪些情況。
目前局部重繪提供四種不同的填充內容(Masked content):fill,original,latent noise,latent nothing,這四種方法填充的東西都不一樣,綜觀來說,在實際重繪時,他們各有不同的適用情況,下面是根據我本人的經驗歸納的用法:
fill:大規模置換 original:根據原圖做修正 latent noise:完全重繪 latent nothing:移除物品
下面就用一些例子來解釋實際碰上的情況與解法。
Masked content:fill
fill選項會將重繪區域的圖最大模糊化,只保留大致的結構跟色彩,所以在大規模置換物品時會用到(但其實,大部分情況用original就綽綽有餘,只有在一些區域巨大的地方會比較有用。)例如下面這個情況:角色正在走上樓梯,但由於角色佔比非常巨大,所以被切割成左右兩邊的樓梯變成了兩個毫無關聯的樓梯,不只是明暗面不同,連級數都不一樣:
這時候就要把左右兩邊的樓梯都選起來,然後用fill配上whole picture以及大約0.5的Denoising strength來修復,配上合適的提示詞,就有很大的機率在十張圖的範圍內算出被修復的樓梯。
這種方法通常適用於各種同一結構體不對齊,或者被切割之後變成兩個不同物件的修復。
Masked content:original
original選項應該是最常用的,該選項完全不變動被選取的內容,只靠Denoising strength增加的噪點來修改圖像,所以在低Denosing strength時就可以得到很類似原圖的結構、色彩與風格。我在另一篇文章中大量運用了oirginal選項來改動畫作,可以當作參考:
Stable Diffusion練習,我們子孫的未來(一)
在本篇文章,我以改動角色的服裝為例,因為我想要將角色的裙子改顏色風格,但是不希望改變它的外型,所以可以將它的臀部以下的部分全部圈選起來,然後改變提示詞為(long blue dress with starry decoration and gem),配合ControlNet的Reference_only對標原始參考圖,加上大量的抽圖做出自己喜歡的裙子款式。
因為我沒有使用其他的ControlNet功能來固定角色的姿勢或邊緣線條,所以臀部與腳的姿勢也會一起變動。
在設定這邊,除了選取original之外,Inpaint area選擇Whole picture可以保證它整張圖光影與色調一致。同時使用Denosing strength在0.65,是能改變最多內容但勉強能保持結構不變的極限值。大約在抽了15張圖後找到自己喜歡的成果。
另外,在人體結構很清晰的情況下,還可以靠著ControlNet做出更強力但不影響人體結構的改動,詳情請參考:
Stable Diffusion進階 -- 穿衣換衣術
Masked content:latent noise
latent noise會在改動的範圍內依照seed的值撒上高斯分佈噪點,將選取範圍完全破壞掉,等於是重算被選取範圍,因此會有很大機率算出與周圍圖形完全無關的新東西,適合在重創意的情況下使用。下面的範例將左方圈選起來,然後使用提示詞(entry of a ball room)來重算該區域。
設定上除了使用latent noise之外,Denoising strength通常要開到0.6以上,用比較強的力道來去噪,並且配上很高的Sampling steps(通常要超過30步),否則通常會得到很奇怪的圖形。
Masked content:latent nothing
latent nothing是個很好玩的功能,就字面上的意思它是指將選取區的latent空間(一種原圖的高度空間縮小版)填上0。但是在實務上,它其實會計算被選取區域周圍的圖象,然後計算一個平均的顏色填充在裡面,很適合移除不要的物件。
下面這個範例,角色臀部上的金色刺繡條紋是我不需要的,所以選取了整個金色刺繡之後,確認選取範圍已經完整涵蓋所有金色像素之後,就可使用latent nothing來改圖了:
除了latent nothing之外,提示詞保持不變(long blue dress with starry decoration and gem),並且用Denosing strength在0.65的高強度上計算,這次只需要算個5張圖就能得到很不錯的移除效果。
結語
Inpaint這個功能是一個非常重要的基本功能,配合上ControlNet,就能實現很多不可思議的修圖功能。甚至可以這樣說,只有用順了Inpaint以及ControlNet,才能擺脫AI算圖的不可預測性,駕馭AI服從於我們人類的創造力。
參考連結