AI繪圖-SD webUI常見的三種圖片放大法:Hires.fix,Upscaler,ControlNet Tile

身為懶人,通常我是懶得去折騰一張圖的,通常是畫完能看就了事了,最近為了做一些桌布才不得不去認真測試一些放大圖片的方法,順便寫個紀錄文。
圖片放大的方法,每個人喜好跟習慣都不同,並沒有絕對最佳的放大方法,視各人使用情境而不同,圖片放大的選擇也可以說是一種信仰,每個人心中最信賴的方式都不一定相同。
圖片放大的方法我只介紹主流的三種,但實際可用的方法並不侷限我介紹的三種,還有其它類似的外掛可用,但原理大同小異。實際應用上也可能交叉應用,同時結合兩三種不同的放大程序也是一種方法。

1.Hires.fix

簡介:
這方法不一定是最好的,但肯定是最順手的,在文生圖(txt2img)階段勾選Hires. fix即可。要調的選項也不多。
Upscaler:選擇放大演算法,不同的演算法的結果都會稍有不同,但有些差別是肉眼難辨的。
Upscale by:放大倍數。
Denoising strength:重繪強度,數值越高重繪幅度越強,最終可能與原圖差距甚遠,越低則會越接近原圖,實際上它還是需要一個適中的值,極高與極低值都會使圖片崩壞。

優點與缺點:
它的優點與缺點可以說是一體的,Hires. fix本質上是全圖重繪,而不是單純的放大。所以它在重繪過程中有機會修正原圖的一些錯誤,並加上更多細節。
例如以下面這個臉部崩壞的圖為例,在放大後也會自動的修復臉部。但手部還是不行,在任何階段,手部都是AI繪圖的弱點,所以也不要期待這個自動修正的過程能把手部修回來。
原圖
放大後
但相對的,也因為它本質上就是重新畫一張圖,所以也許它新增的細節並不是你喜歡的,成為畫蛇添足的足。也可能它在圖片重構後反而破壞了你原本中意的圖片結構,甚至丟失了你想要保留的細節,越畫越糟也是一個可能。
下圖是一個比較正向的例子,經由Hires. fix放大的圖明顯較鮮明銳利,背景也被多加了一些適當的內容進去:
原圖
放大後更鮮明銳利,背景還幫我多畫了好幾隻鳥上去
下面則是一個較負面的例子,我主要想保留的是原圖中的皮膚紋理與瑕疵,但放大後卻會丟失這兩個細節:
原圖
放大後它幫我修復了手指與眼珠異色的問題,但皮膚卻像是開了美顏效果丟失了我要的細節,這已經是我把Denoising strength儘量調低後的結果了,而若把Denoising strength調高則會使構圖差異性更大。
全圖重繪可說是雙面刃,它可以同時帶來你想要的以及不想要的,也因為Hires. fix本質上就是重新畫一張大圖給你,所以放大上限仍是受顯卡效能限制,並且也會大幅增加繪圖時間。

2.1 Upscaler(Extras)

簡介:
這功能就附加在Extras頁籤下,也不需要調整太多東西。
Resize:放大倍數(若切到另一個子頁籤Scale to則是可以指定明確的圖片尺寸)
Upscaler 1Upscaler 2:放大演算法的選擇,可以僅使用Upscaler 1,也可以同時使用兩個疊加兩次放大演算。僅使用Upscaler 1是較單純的使用方法,想疊加兩種的話可能又要開始做各種交叉組合瘋狂測試找出最佳解,而每種圖片的最佳解可能都不相同。
使用方式也比較單純,傳入一張想放大的圖並設好基本參數後即可開始放大程序。

優缺點:
這是最陽春也最快速的放大方式,它不會自動幫你修正或添加任何東西,也不會重新算圖,僅是單純的做原圖放大,而且速度極快。
它也可以把放大後的圖片再用相同功能繼續疊加來完成超大倍數的放大。
例如以下圖為例,原圖細節與內容我已經覺得足夠飽滿,不想再有任何新變化的話,就適合使用這個功能來放大。
原圖
放大4倍後的結果
這是最陽春且平凡無奇的放大方式,但卻也是我最常用的方法,因為我的使用情境通常是先畫出一張滿意的圖後才會想到要放大,既然已經滿意了我自然不希望在放大過程中又被AI擅自東改西改,何況AI自動弄出來的東西常常都不是人類想要的。
但對品質有要求的使用者來說,原圖放大的細節可能經不起考驗,放到最大檢視後會覺得不對勁的地方會很多,對細節講究的就不太適合這種懶人方法,還是要用其它方式慢慢去打磨一張圖才有可能盡善盡美。

2.2 Upscaler(img2img)

簡介:
這是圖生圖(img2img)的原生用法,使用方法也很單純,首先一樣要在img2img頁面先傳入一張要放大的原始圖片,接著在Script選項中選擇"SD Upscale",,如果沒有更新這個選項的話,代表你的SD webUI還沒有更新到最新版。
細部的設定項也很單純:
Scale Factor:放大倍數。
Upscaler:放大演算法。
同時它也會受原本img2img設定項中的prompt與Denoising strength影響,Denoising strength調高時同樣會有圖片重繪的特性,希望更接近原圖可以把Denoising strength調低一點,甚至調成0都可以,調成0可以達成原圖直接放大的效果,但若只想原圖直接放大我還是建議使用Extras下的Upscaler,因為那個方式更快也不用重新算圖。
Denoising strength這個值可以調低但不能調太高,調太高之後AI就整個放飛自我了。而若在放大過程中希望主動控制AI幫你修改或添加一些東西的話,也可以藉由修改prompt來達成。

優缺點:
這個放大方式本質上是把一張圖片拆成許多小區塊之後再分別重繪,最後重組成一張大圖,理論上可以藉由多次疊加後無限放大,不會受顯卡效能限制而影響放大上限。
而既然牽扯到AI的自動重繪,就同樣可能發生AI幫你增加的新變化不一定是你喜歡的這種風險。
以下試著用一張原本細節就極多的圖片做範例:
車禍了還笑的出來一定不是你家的車
放大後主要是人臉有些變化,其餘就是要放大後慢慢比對才看的出差別,通常我是不會做這種費工的事。
放大後

3.ControlNet Tile放大

簡介:
這方法是今天介紹的方法中比較複雜的一個方式,首先要已安裝ControlNet並且已下載好ControlNet附屬的tile模型
在這個階段我假設大家都已經理解這個前置步驟了,若不熟悉的可以參考我前兩篇教學文:
AI繪圖-用ControlNet控制人物姿勢:良心教學,沒必要下載全套,我只教你有用的! AI繪圖-可以直接控制人物表情的ControlNet1.1來了!來看看如何更新,以及多了什麼功能?

操作步驟:
1.先傳入一個要放大的原始參考圖至img2img頁面:
2.開啟下方ControlNet子頁籤,並勾選EnablePixel Perfect,接著預處理器與模型都選擇tile。我的使用經驗是ControlNet區塊並不需要再傳入同樣的參考圖,但若你在使用上有遇到怪怪的狀況不彷多傳一張參考圖試試是否能夠修正。
3.在Script選項中選擇"SD Upscale",這個區塊的操作原則與上一個項目中提到的SD Upscale是完全相同的。
4.移除prompt欄位中有關圖片主體,例如人物的描述詞,或是直接無腦的全部移除也可以。
5.上述步驟都完成後就可以點擊生圖了。

優缺點:
這個方法其實就是結合ControlNet tile與Upascaler的綜合應用,藉由tile自動增修圖片細節的特性來對圖片做自動化放大並增加細節,甚至修正原圖片錯誤。
這是細節控必學必用的一種放大方式,當然ControlNet tile還有許多變化用法這邊就不再延伸說明。
在這個方法中,算圖結果同樣受到prompt與Denoising strength影響,不同的是,這次有了ControlNet tile的把關,可以試著把Denoising strength調高看看不同的變化,新的變化不一定符合你的喜好,但至少可以確保不會大崩壞。
範例:
原圖
放大後
Denoising strength調至最大並放大,這張其實眼睛不對勁,只是證明Denoising strength調至最大圖片不會瘋狂大崩壞

結語:

本來還想再多做一些平行比較,但這篇文章已經上傳太多圖片,而且都是大圖,再繼續下去這些超大圖片可能會讓閱讀體驗極差,先到這邊為止。
其實這篇文章沒什麼技術含量,只是單純的看看放大後的圖片長什麼樣子而已,放大的方法可能遠多於我寫的這四種,也沒有一定最好的方法,甚至更精緻的還會結合photoshop來做精修,這個主題是可以無限延伸的。
但其實我自己是不愛放大的,如非必要就不會多做這道工,我就懶。
汽車們:我就爛。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.