教學

ControlNet Tile 讓你的大圖更清晰,只要3步驟,不再擔心放大圖片模糊!

ControlNet Tile 是 ControlNet 裡的一個模型,主要用途是將圖片增添細節及修補細節,有這些功能可以解決在使用 Tiled Upscaling 放大圖片時可能會遇到的問題。現在是高畫質的時代,當然越清晰越好,這樣的圖片才會更有質感,也會更吸睛。要解釋這些問題,我們首先要了解什麼是 Tiled Upscaling 放大?

在此影片裡也有用 Tile 放大的示範

一、Tiled Upscaling 是什麼呢?

Tiled Upscaling是一種圖像放大的策略,主要的手法就是將圖片切成好幾個小塊(Tile),通常是 512×512 或 128×128,然後對每一個小塊進行放大,最後再拼回一張大圖。這樣的手法,不僅可以確保放大的效果和視覺品質,同時也能在提升細節的同時,節省計算資源和儲存空間。可以說,Tiled Upscaling是目前放大圖片的最佳手法,也是許多圖像處理軟體中經常會用到的一種技術。

二、Tiled Upscaling 產生的問題

但這種方法也有一些麻煩的地方:

1、細節效果欠佳的問題

當我們放大圖片的時候,因為像素數量變多了,原本的細節可能就會變得模糊或是消失。

2、全局提詞(Global Prompts)被忽視的問題

當我們放大圖片的時候,即使圖像可以變得超大(像是 4K 或 8K),但還是會切出很多Tile來分開放大,這時候提詞就會傳到每個Tile裡。這就會讓人頭痛,比如說:如果你的提詞是「一個漂亮的女孩」,你把一個圖像切成16塊,然後在每塊裡面都放大,結果就會變成16個「漂亮的女孩」而不只是一個。

例如,原本是想要放大下面的圖片:

利用 Tiled upscale 的方式,將它分成 4×7=28個Tile ,結果受到全局提詞的影響,就產生了 28 個女孩的圖。

全局提詞忽視的例子,這已經是 4×7 = 28個女孩了

現在人們解決這問題的方法是用一些沒有意義的提詞,比如說 “clear, clear, super clear”。但這樣的話,如果降噪強度設太高,結果可能就會變得很不好看,而且因為提詞不夠好,所以畫出來的內容也會很亂。

那這些問題我們該怎麼解決呢?

三、ControlNet Tile 功能與用途

ControlNet Tile模型藉由導入Tile Model的方式,來解決圖片放大時可能遇到的問題。

ControlNet Tile模型有兩大顯著的功能:

1、它能修補(或者說增補)圖片的細節

意思就是,它能讓一張原本解析度較低的圖片放大到高解析度,並且在此過程中能保持圖片的細節和清晰度,讓放大後的圖片看起來更逼真。

因為模型可以生成新的細節並忽略現有的圖像細節,所以我們可以使用此模型來刪除不良細節,並添加精細的細節。例如刪除由調整圖像大小引起的模糊。

請注意,此模型不是變成超高解析度的模型,它是用來忽略圖像中的細節並生成新的細節。這也就是說您可以使用它來修復圖像中的不良細節。即使圖像已有良好的細節,仍然可以使用此模型替換內容。

若要將圖片放大成高解析度,則要搭配 Tiled Upscaling 工具使用(如 Ultimate SD Upscale)。

2、在繪圖的過程中,它會忽略全局提詞(Global Prompts)

也就是說,繪圖的主要內容會以圖片內的物體為主,就算收到提詞的指示,只要圖片裡沒有這樣物體,提詞就不起作用。這樣可以避免出現所謂的「分身現象」,讓圖片更接近實際狀況。

四、ControlNet Tile 如何解決 Tiled Upscaling 的問題?

基於 ControlNet Tile 的兩大主要功能,ControlNet Tile 可以解決 Tiled Upscaling 的問題。

在使用Tiled Upscaling時,ControlNet Tile模型會以每一個Tile內已存在的內容為主,來修補或增補細節。這種方式讓我們能更好地保留每一塊Tile內的細節和特色。

同時ControlNet Tile 會識別 Tile 內的內容,如果內容不匹配,會忽略全局提詞它還會降低全域提示的影響,以避免不良結果的產生。並且避免了全局提示對整體圖片一致性的干擾。

例如,假設我們有一張範圍很大的森林圖片,但在某個Tile裡面,剛好有一隻小鳥。如果我們只根據全局提示(也就是森林)來放大和重繪,那麼我們可能就會忽略掉那隻小鳥。但是如果用ControlNet Tile模型,就可以根據該Tile內的內容(也就是有一隻小鳥)來處理,這樣就能保留下更多的細節,同時也提升了整體圖片的質感。

我們直接來看看效果。

五、放大展示

我們就以以下這張相片當作例子來放大看看。這張相片的畫面是這樣的:一個女生坐在窗邊,手托著臉,抬頭看著天空。這張相片的大小是 320×180。

320×180的圖

然後我們就用Ultimate SD Upscale把它放大到2560×1472,結果就如下圖這樣:

用 Ultimate SD Upscale 放大成 2560×1472

你會發現,背景非常的不平順,眼睛也閃著奇怪的光。

接著我們再用Ultimate SD Upscale配上ControlNet Tile把它放大到 2560×1472,結果就如下圖這樣:

用 Ultimate SD Upscale 和 ControlNet Tile 放大成 2560×1472

一看就知道,加上了ControlNet Tile之後,背景看起來更加順滑,皮膚的顏色也更生動,整體效果就是好太多了。

那 ControlNet Tile 到底做了什麼?為什麼可以穩定的放大圖片?

六、ControlNet Tile 運作方式

大家都知道controlNet的流程,先要有一張註解圖(annotation),然後ControlNet就會依照註解圖和對應的模型,再參考提詞和其他參數,最後在ControlNet的指引下開始產生圖片。

那麼ControlNet Tile的註解圖(annotation)是怎麼出來的呢?這就得靠對應的前處理器(preprocessor):「tile_resample」。所以要開始使用ControlNet Tile,首先就得用「tile_resample」對原圖進行重新取樣,產生出註解圖。

重新取樣的圖(註解圖)會根據參數Down Sampling Rate來確定註解圖的大小。比如,我們剛剛要放大的圖片是320×180,如果Down Sampling Rate是1的話,註解圖的大小就會是160×90,就像下面這張圖一樣:

160×90 的 annotation

如果Down Sampling Rate是4的話,註解圖的大小就會是80×45,就像下面這張圖一樣:

80×45 的 annotation

在生成圖片的時候,ControlNet會用ControlNet Tile Model參考Prompts、給定的圖片(如果是img2img的話)和其他的參數(比如大小、取樣步數)來一起產生最終的圖片。

ControlNet Tile 靠的就是 tile_resample 的預處理器及 control_v11f1esd15_tile 這個 Model(版本可能不同)

因為Down Sampling Rate越大,註解圖的尺寸就越小,生成的時候需要補充的像素就越多,生成出來的圖片中AI填補的細節就越多。所以這個值越大,生成出來的圖和原圖的差距就越大,因為 AI 有更多的空間可以自由發揮。

那這在 Stable Diffusion WebUI 裡,要怎麼操作的呢?

七、ControlNet Tile 做圖片放大的操作步驟

因為 ControlNet Tile 主要用於 Tiled Upscale 這種放大方式,所以我們需要一個外掛來做 Tiled Upscale,以下以Ultimate SD Upcale為例,看看 ControlNet Tile 和 Ultimate SD upscale 是如何協做做放大的。所以若還沒安裝 Ultimate SD upscale 這個外掛的話,請先看 這篇 「下載並安裝 Ultimate SD Upcale」安裝。若裝好後在 img2img 頁的底部 Script 區塊,可以看到 Ultimate SD upscale 選項。

Script 多了 Ultimate SD upscale 選項

以下是操作步驟:

第1步:設定 img2img (圖生圖)裡參數

  1. 先設定選擇要放大的圖像到 img2img 裡

2. 設定 img2img 提詞

利用 Interrogate CLIP 先找出符合目前圖片的提詞。

Interrogate CLIP 找出的句子提詞

再利用 interrogate DeepBooru 找到標籤式的提詞,合併起來。在使用時請注意,要把先前的提詞先複製起來,以免被蓋掉。

Interrogate DeepBooru 找出的 tag 提詞
合併 2 種提詞

再加上品質提詞,這部份就不用太多。

品質提詞我也附上來給大家

photography,  masterpiece, best quality, 8K,  HDR, RAW photo, highres, absurdres

反向提詞

(worst quality:2), (low quality:2), (normal quality:2), lowres,  jpegartifacts, paintings, sketches

對這些品質提詞有興趣的朋友,強烈推薦看「如何生成專業攝影照」這篇,或看以下的影片。:

如何生成專業攝影照的 Youtube 影片

3. Resize mode 選 Resize and fill ,這指的是,如果放大後的尺寸有不夠的地方,會自動補起來。

4. Sampling method 設成 Euler a

5. Sampling steps 設成 25

6. Denoising strength(去噪強度)調成 0.2 ,原本 0.75 太高了,會一直冒出女孩的頭。

7. Resize to 或 Resize by 不用填,因為等下尺寸不是靠這邊決定,跳過沒關係

第2步 設定 ControlNet 參數

1. 將要放大的照片放到 ControlNet 裡,等待預處理器處理,做出 annotation 圖。你會覺得怎麼又要再放一次

2. 將 Enable, Pixel Perfect , Allow Preview ,都打開。

3. Control Type 選 “Tile” ,Preprocessor 選 “tile_resample” ,Model 選 control_v11f1e_sd15_tile ,這邊如果版本不同,則中間會有不同的名稱,但最後一定是 “tile” 結尾。

5. Down Sampling Rate 調 1 就好。這值愈小,放大時改變愈少;值愈大,愈不像原圖。

6. Control Mode 選 Balance ,表示會參考提詞又參考 annotation 裡的內容,不會特別側重某一邊。

ControlNet 參數設定

6. 這時你可以按下預處理鈕,開始做出 annottion 圖

預處理的執行鈕,很難找

做出來的圖會出現在 Preprocessor preview 裡。

Annotation 圖會出現在 Preprocessor Preview 裡

到這邊,ControlNet 的部份設定完畢。

第3步 設定 Ultimate SD upscale

1. Script 選擇 Ultimate SD upscale

選擇要用 Ultimate SD upscale 做 Tiled upscale 工具

2. 將Target size type 設成 Custom size ,寬和高設成 3840×2160 ,這是 4K 大小。

設成放大後要是 4K 大小

3. 選Upscaler, 因為每一個 Tile 在放大時,需要使用 AI Upscaler 來放大,之後Tile 模型才會做用在上面,因此必需選擇 Upscaler。因為我們用的是實景照片,所以 Upscaler 選 R-ESRGAN 4x+ ,若是動漫作品,則選 R-ESRGAN 4x+ Anime6B。其它 Upscaler 各有優缺點,未來我們再討論。

4. Type 選 Chess ,接縫問題會小很多

5. Tile width 設 512 ,表示每一個 Tile (小塊)都是 512×512

5. Mask blur 選到12 ,接縫問題會小很多

Ultimate SD upscale 設定

以上完成 Ultimate SD upscale 設定。

接下來就可以點擊 generate 按鈕開始放大圖像。

6. 等待放大完成後,可以比較原圖和放大後的圖像,觀察細節增加的效果。

從 320×180 放大成 3840×2160 的圖片

1:1 的照片

1:1 無縮圖的大小

和以下原圖做比較

320×180 原圖

你會發現,細節都生成出來了。

在這個過程中,ControlNet Tile模型會參考當前圖像進行修復(增補)細節的缺失,同時忽略全局提詞(Global Prompts),讓繪圖的方向以 Tile 中的內容為主,不在目前 Tile 裡的東西,就算 Prompt 有提到,也不會出現。

八、使用 Tiled Upscale 時相關參數

參數1:Down Sampling Rate

Down Sampling Rate是用來調整處理圖像時的降取樣比例的一個參數。在使用ControlNet Tile模型時,這個參數是用來調節圖像放大或縮小的比例的。換句話說,Down Sampling Rate的數值越大,圖像被放大或縮小的程度就越大,這就提升了細節調整的靈活性,讓我們有更多彈性去處理圖像。

但同時,這也意味著,如果Down Sampling Rate設定得太高,就可能在圖像放大或縮小的過程中導致一些細節被遺漏或丟失。因此,在用ControlNet Tile模型處理圖像時,我們要根據實際的需求與條件,來適當地調整Down Sampling Rate的數值,這樣才能達到我們要的效果,同時還能保留圖像的細節。

參數2:Ultimate SD Upscale 的 Type

用於降低接縫問題,可以設定為Chess。

參數3:Denoising strength

用於調整Seams fix功能的參數,建議給定0.35或往下調到0.15~0.3

九、使用 ControlNet Tile 時注意事項

在利用ControlNet Tile進行Tiled Upscaling的過程中,雖然可能會碰到一些挑戰,但其實我們都有方法可以去解決:

1. 資源消耗問題

雖然Tiled Upscaling確實需要花費一些計算資源與儲存空間,但別擔心,Ultimate SD Upscale已經對這點進行優化。它的目標就是在確保放大效果的同時,也能盡可能地省下資源。

2. 接縫問題

ControlNet Tile模型有能力解決在Tiled Upscaling過程中可能出現的接縫問題。此外,Ultimate SD Upscale還提供了更進階的工具,如Seams fix功能和Type設定,這些都能夠幫助我們進一步優化放大效果,提升視覺品質。

3. 算法限制

要注意的是,ControlNet Tile是基於深度學習的模型,所以它的效能也受到所使用算法的影響。不過,Ultimate SD Upscale使用的都是最新的AI技術與算法,可以在保證放大效果的同時,提升圖像細節的表現。

4. 參數調整

在進行Tiled Upscaling的過程中,我們的確需要根據實際狀況去調整一些參數。但是,Ultimate SD Upscale有提供詳細的說明和建議,這能幫助使用者更快速地掌握如何適當地使用這些工具,優化他們的圖像處理流程。

所以,雖然使用ControlNet Tile進行Tiled Upscaling可能需要一些技術知識和經驗,但有了Ultimate SD Upscale的幫助,我們可以更輕鬆地達到我們的目標,也能確保在放大圖像的同時,既省下計算資源,又不影響視覺品質。

十、常見問題

問題1:ControlNet Tile 能幫我把圖片上不要的東西去掉嗎?

ControlNet Tile 主要是專注在修補圖片上的細節,而不太能幫你去掉圖片上的東西。它的工作原理是透過參考現有的圖片,補足那些細節上的缺口,且它的主要焦點會放在每一個小塊(Tile)內的物件,不會受到全局提示太大的影響。所以啊,如果你是想移除圖片上的某些東西,那麼你可能需要像是Photoshop這種工具來幫忙喔。

問題2:什麼叫做忽略全局提詞(Global Prompts)?可以給我一個實際的例子嗎?

所謂的忽略全局提詞(Global Prompts),其實就是指ControlNet Tile在繪圖時,它會主要參考每個小塊(也就是Tile)內的內容,而不太受到全局的提示影響。

舉個例子來說,假設我們有一張大範圍的森林圖片,但在某一個Tile裡,剛好有一隻小鳥。如果我們只依照全局提詞(也就是森林)去放大和重繪,那麼我們可能就會忽視掉那隻小鳥。但如果用ControlNet Tile,它就會根據該Tile內的內容(也就是有一隻小鳥)來處理,這樣就能保留下更多的細節,同時也提升了整體圖片的質感。

或是全局提詞是一個帥氣男人,但是使用 ControlNet Tile 繪圖時目前的 Tile 裡是一片葉子,ControlNet Tile 能夠重繪出一片葉子,而不會是一個男人。

問題3:接縫問題怎麼處理?

使用ControlNet Tile進行圖像放大的過程中,確實可能會遇到一些接縫問題(也就是當我們把各個小塊(Tile)拼起來時,可能會在接縫處產生一些不自然的現象)。以下有幾個解決的方法:

  1. 調整去噪強度(Denoising strength):這個參數可以控制去噪的強度,這樣可以降低接縫問題的出現。一般來說,建議把這個值設在0.15到0.35之間。
  2. 使用修復接縫(Seams fix)的功能:Ultimate SD Upscale提供了這樣一個功能,可以自動幫你修復接縫問題。使用這個功能的時候,要記得調整一下去噪強度(Denoising strength)這個參數。
  3. 把類型(Type)設定成「Chess」:這種設定也能降低接縫問題,但可能會讓某些地方的細節表現得不夠豐富。
  4. 調整抽樣步驟(Sampling steps):增加抽樣步驟的數量也能進一步降低接縫問題,但這樣會讓計算的時間和需要的資源都增加。

以上就是一些針對接縫問題的解決方案,可以根據你的實際需求和情況來選擇適合的方法。

十一、重點回顧

  1. ControlNet Tile模型就像是個專門放大圖像的專家,尤其在Tiled Upscaling過程中,一定能把圖片的每一寸細節都放大得清清楚楚。它就像是拿著放大鏡仔細觀察每一塊小方塊(Tile),再依照小方塊的內容決定要如何放大,而不會被全局提詞(Global Prompts)左右,這樣就能確保每個細節都能被好好地放大並保留下來。
  2. ControlNet Tile模型放大圖片的方式很聰明,先用 AI Upscale 快速把圖片放大,然後再將每一塊小方塊(tile)用 img2img 重繪一遍,這樣既能讓圖像更細緻,又節省了很多資源。
  3. 使用ControlNet Tile模型時,要注意調整幾個重要的參數,像是Tile的大小(Tile Size)、降噪強度(Denoising Strength)和Down Sampling Rate。特別是Down Sampling Rate,這個參數會決定圖像的放大倍數,所以可以根據實際需求,隨時調整這些參數。
  4. 在操作過程中,ControlNet Tile模型能讓圖片的解析度和細節都提升上來,像是肩膀護具上的網孔紋理都能看得清清楚楚。但要記得,如果Down Sampling Rate設定得太大,可能會讓細節看不清楚。
  5. ControlNet Tile模型跟傳統的upscaler,比如說Photoshop,相比,優點是放大圖片時,既可以提升細節又更快。而且還可以修復圖片在放大的過程中可能出現的問題,比如說噪點或者是細節丟失等問題。
  6. AI召喚師的Youtube頻道裡的影片「如何生成高畫質影片」裡,也有提到 Controlnet Tile 模型的操作,我們把在 Stable Diffusion 裡能做出大圖的方式說了一遍,各種坑也幫大家踩過,可以幫大家省下試錯時間。

十二、結語

研究過 ControlNet 後,發現ControlNet Tile 真的是個好東西,能幫我們修補圖片中的細節,並在適當的時候提供更高品質的圖片放大效果。當然,我們還需要更多的研究和實驗,來進一步優化這項技術,我們也期待未來能看到更多關於ControlNet Tile的新研究和應用範例。

咦,還有,別忘了訂閱我們的電子報喔!只要成為我們的會員,最新的資訊就能第一時間送到你的email信箱,你才不會錯過任何消息。期待你的加入!

十三、參考資料

模型安裝

和 Tile 有關的模型如下:

  • Model file: control_v11f1e_sd15_tile.pth
  • Config file: control_v11f1e_sd15_tile.yaml

安裝方式請參考下方連結

其它連結

  1. ControlNet Tile 官方說明:https://github.com/lllyasviel/ControlNet-v1-1-nightly#controlnet-11-tile
  2. ControlNet 是什麼及其它模型的簡介,可以看本站的這篇文章: Controlnet的介紹及14個模型簡介

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *