Stable Diffusion的畫外畫功能 / Out Paint in Stable Diffusion
想讓畫本身不只有人物,還有可以說故事的背景時,openOutpaint就是我們的最佳幫手。
安裝openOutpaint擴充功能 / Install openOutpaint extension
openOutpaint已經跟Stable Diffusion Web UI進行整合了。我們可以在Extensions裡面找到openOutpaint來進行安裝。安裝細節我就不講了,並不困難。
安裝後按下「Apply and restart UI」,之後就可以看到上方選項出現了「openOutpaint」。
起始圖片 / Initial portrait
https://civitai.com/gallery/277094?reviewId=46721&infinite=false&returnUrl=%2Fmodels%2F12597%2Fmoxin
我們借用526570095525的創作來開始我們的畫外畫。此時請注意作者使用的Prompt跟Negative prompt,特別是prompt裡面用到的LoRA,我們需要事先先去下載準備好。
這張圖使用了預設的尺寸512x512。在Stable Diffusion中,512x512的人物通常都是上半身含肩的特寫圖片。我們接下來用openOutpaint畫出下半身。
openOutpaint
如果有順利安裝openOutpaint的話,上方的標籤就會出現openOutpaint的功能。接下來讓我們一一操作。
載入圖片 / Stamp Image
在右邊的工具列中選擇Stamp Image。
再到左邊的Upload Image框,把要處理的圖片拖曳到這個框中。
此時就可以選擇將圖片放在畫布上,按滑鼠左鍵確定。
初始設定 / Initial configuration
再來我們要調整畫外畫的參數。
先按右上角的「Dream」。
在左邊的工具列中,綠色的prompt跟紅色的negative prompt填入原本圖片的設定。再來刪改綠色欄位prompt的敘述詞,我只會留下LoRA,並加上我想要畫外畫的敘述。
此圖片的LoRA用了<lora:Moxin_10:0.35> <lora:Moxin_Shukezouma11:0.35> <lora:koreanDollLikeness_v10:0.3>,但<lora:koreanDollLikeness_v10:0.3>的風格太過強烈。我把它移除後,LoRA只剩下<lora:Moxin_10:0.35> <lora:Moxin_Shukezouma11:0.35>。
由於我打算畫此角色的下半身,所以我加上「chinese blue cloth」。本來還試過加入其他敘述詞,但後來發現怎麼加描述都很怪,不然簡單一點讓outPaint自由發揮。
再來要來調整Stable Diffusion settings。Model一概選sd-v-1-5-inpainting.ckpt,好用。不過下面的Steps可以調低為10。一方面是墨心水墨畫風本來就不用多精細,二來是比起精細,最好是先由outPaint任意產生結果,接著再固定Seed並調高Steps。Batch Size跟Iterations都維持2即可,最後會產生2x2共4個結果。
繪製畫外畫 / Draw outpaint
再來是在工具選擇為「Dream」的狀態下,拉出你想要延伸的畫外畫範圍。你可以按著Ctrl拖曳畫布的位置。拉好之後,在範圍內再按一次滑鼠左鍵,系統就會開始繪製畫外畫。
選擇的時候必須要將畫作主體一起選進去。這樣繪製的結果才能配合畫作本身產生。
選擇結果 / Choose result
畫完後下方會出現結果的工具列。「1/4」表示目前有4個結果,按「<」或「>」可以切換顯示不同結果。選到滿意的,可以按「Y」確定套用。如果都不滿意,可以按「N」取消。回到上一步重新繪製。
以上圖來說,雖然衣服比例看起來還算正常,但是人物左下跟右下都有奇怪的水墨背景出現。與其在那邊慢慢修圖,這時候還不如果斷放棄這次的結果,讓outPaint試到出現看起來還可以的狀態比較好。
試了幾次之後,出現了一個還不錯的結果。這樣我們就可按下「y」確定。
部分重畫 (畫內畫) / Inpaint
衣服左下角出現了個紅色的印章。這是墨心LoRA的特色,不過我想把它拿掉,要怎麼做呢?
右邊的工具選擇「Color Brush」。
左下角工具選擇顏色,這邊我選擇衣服的顏色。同時我也把Brush Blur改為0。
在衣服左下角塗上顏色。塗太多的話,按滑鼠右鍵可以清除塗上去的結果。嗯...直接塗的話,看起來很醜。
右上角選擇Dream,讓我們重繪這個位置。
選擇筆刷以及筆刷之外的其他範圍。選好後按下滑鼠左鍵,開始計算。
最後一樣會有4個結果產生。選擇合適的結果,按下「Y」即可。
儲存 / Save
右方工具列選擇Select Image。
把整張圖片選取起來。
按下左邊工具列的「Save Sel.」。
完成。
背景畫外畫 / Background outPaint
運用同樣的技巧,我們還可以把這張圖繼續往外延伸,加入更多背景。這邊我將提示詞改成「<lora:Moxin_10:0.35>, <lora:Moxin_Shukezouma11:0.35>, chinese building roof, smoke, mist, mountain」,希望右邊能夠有一些中式建築物或山水景色,加上煙霧繚繞的感覺。
每一次擴增範圍最好都不要太大。一點一點擴大,選擇合適的結果,調整提示詞,然後再擴大下一次的範圍,這樣說比較好的的做法。
看來outPaint認為右邊應該都是煙霧繚繞的山了。好吧。那我把提示詞改成「<lora:Moxin_10:0.35>, <lora:Moxin_Shukezouma11:0.65>, smoke, mist, mountain」,一口氣選擇大範圍來看看。
這樣這麼大範圍的運算還蠻花時間的。
好,就選擇這個結果把。
我們也可以按「Download image to computer」直接儲存結果。
這樣就將原本的512x512的人像特寫,擴大成為1536x960的全身圖,並加上山水畫背景了。
不過仔細看的話,你會注意到每次畫外畫之間看得到一些縫隙。目前我還不確定要怎麼克服這個問題,也許手動修飾也是一種選擇。
總之,不要太講究的話,這樣的圖片拿來做成海報或其他應用應該都還蠻方便的,再次感嘆openOutpaint的強大啊。
你覺得什麼時候會用到畫外畫的功能呢?
歡迎下面分享你的看法喔。