這次要介紹的是stable diffusion webui下的一個小型外掛,可以自動把醜臉歪臉修正回來,不論是大臉小臉都適用,使用方面,原則上全照預設值就行。
這篇雖然寫的比較詳細,但其實它是一個直接enable就能用的簡單小外掛。
最近在想辦法畫出武俠風,目前沒成功過,剛好很多失敗品能測。
1.預覽與簡介
在stable diffusion webui下畫出醜臉歪臉是常有的事,大家對此也都很習慣,並且有一套公式化的應對方式了,這套工具不一定可以完全取代其餘修圖手法,但Face Editor的特色就是可以進行全自動無腦修臉工作,減少一些人工打磨的辛苦。
先列幾個範例,在安裝前你可以參考一下是否對你有用。
以下我抓一張最近在嚐試的武俠畫風失敗品來做為測試,並與常見的兩個修臉手法來比較修正後結果:
原圖:
Face Editor全預設值下的修圖結果:
Face Editor會針對臉部修整並還給你一張臉部正常的圖,但它只負責給你一張正常的臉,有關美醜或其餘事情就不管了。
與常見的修圖手法比較:
使用upscale圖片放大的修圖結果
以此圖為例,upscale有著全圖重繪的特性,整張圖變的更偏向黑白畫風,並且多出了一些預期外的東西。但平心而論,以這個範例來說,畫面風格我是比較喜歡upscale的結果,upscale也是一個不需要太多人力介入的修圖手法,但其成本在於需要更多的繪圖時間,且放大能力也十分依賴顯卡效能。
使用inpaint手動修圖的結果
inpaint的成本在於需要更多的手動操作,而繪圖結果中也充滿隨機性,可能要重畫很多次,inpaint下層參數可能也要經歷多次調整測試。
身為無腦派畫家,inpaint是讓我感到最累的一種方式。
2.安裝方式
打開SDW介面的Extensions頁籤,在安裝網址(URL for extension's git repository)欄位中填入下方網址:
https://github.com/ototadana/sd-face-editor.git
接著點擊Install按鈕並重啟SDW即可。
3.使用方式:
若有正確安裝的話,在繪圖介面中應該會多出一個新的Face Editor頁籤,勾選Enabled即可生效,大部份的情況下,使用預設值即可。
以下詳列各項設定值,懶得深究的話其實全照預設值就行。
參數1:Maximum number of faces to detect
設定最多可以偵測幾張人臉,最高20,預設值也是20。
參數2:Face detection confidence
臉部判定的門檻值,預設值0.97,當有出現未能被自動偵測到的臉部時,可以把此值調低。調低後有可能所有疑似臉部的區塊都會被判定為臉部。
以下這個例子中,臉部的區塊太小,又是側臉,所以預設值0.97是偵測不到的,必須把值調的更低才行:
Face detection confidence=0.97 毫無反應
Face detection confidence=0.7
參數3:Face margin
臉部邊距大小,這參數的意思是,當Face Editor偵測到臉部並將臉部獨立栽剪出來處理時,要留下多少臉部邊距(=臉部以外的空白區域)。這個值會影響臉部的生成結果,預設值1.6,原則上維持預設值就好,刻意調高或調低生出來的臉會有點不同,但不影響美醜或是成敗,一般使用情況下調整的意義不大。
我分別測了大臉跟小臉,可知雖然生成結果因此不同,但看不出重點差異在哪:
參數4:prompt for face
這邊如果沒有輸入的話,新臉的生成會參考原圖的prompt,若有輸入的話,則會以此處輸入的prompt為主要依據來生成新臉。
prompt for face=angry face的生成結果
參數5:Denoising strength for face images
有用過inpaint的應該對這名詞很熟悉了,Denoising strength可當做是重繪強度的權重值,數值越大重繪結果就越強烈大膽,數值越小則越接近原圖,預設值0.4。
此值適中即可,太強可能使新生成的面部不自然,無法融入原圖,而太弱可能會無法修正過度扭曲的臉。
Denoising strength=0.1,這張比我預期的效果好,在保持原臉風格的情況下修正了歪臉的問題
Denoising strength=0.4(預設值)
Denoising strength=0.8(最大值),設成最大值,臉的邊緣已經崩了
再多展示一個,原圖的臉太歪,但Denoising strength設成0.1太弱使修正失敗的例子:
Denoising strength=0.1,調太弱,修復後仍是歪
參數6:Mask size
臉部遮罩區域大小:當要將新臉貼回舊臉時,將會套用的臉部圖片區塊範圍。預設值是0,0代表會完全精準的抓出臉部區塊直接貼回舊臉,不會有多餘的範圍。
這邊比較不好懂,直接看範例:
原圖若直接全照預設值,Mask size設為0代表會精準的抓出新的臉部範圍貼回舊臉,但因為原圖的臉部形狀其實就有點歪了,直接精準的貼回去反而很醜,有破綻,從下圖範例中可以看出修正之後,舊的下巴還露了一角出來:
這時要把Mask size調大一點才可以蓋過那個舊的下巴:
參數7:Mask blur+參數8:Denoising strength for the entire image
Mask blur是遮罩模糊值,當新臉的線條太強烈以致無法融入原圖時,可以試著調高此值,使線條模糊化。
Denoising strength for the entire image是將新臉貼回原圖時,對於更新區域的重繪幅度。
這兩個參數的應用情境類似上一步中提到的Mask size,都是新臉與原圖融合不佳時再做調整。
這邊我無法生成剛好適用這些參數的失敗圖例,這邊我就不再多做展示了。事實上,Face Editor全照預設值的修臉成功率已經極高了,這些參數通常不需要做任何調整。
參數9:Apply inside mask only
預設值是勾選,也建議勾選,其實你沒得選,我不知道弄這個選項是要幹嘛的。
Face Editor畫完一張新臉時,其實是個方形圖塊,必須勾選這個選項它才會自動幫你依臉形做栽切,若無勾選,修正過後的圖片會很明顯有個方框存在。
未勾選Apply inside mask only,臉旁明顯帶一圈方框
參數10:Save original image
這個選項的意思是:是否要在outputs資料夾中同時儲存修臉前的原圖與修臉後的新圖,若無勾選則只會儲存修臉後的新圖。預設值是無勾選。
以我自己的操作習慣來說這選項意義不大,因為我習慣手動存檔,比較少在outputs資料夾抓圖。
參數11:how intermediate steps
勾選這個選項後,會把每個修圖處理步驟的圖片都一併顯示出來:
更多訊息可以參考原作者網址:
結論:
有自動修臉是很好,但我更想要的是自動修手指!!!!!