AI影像放大工具,圖片放大無所不能

flydean發表於2024-09-03

AI影像放大工具,如ESRGAN,對於提高由Stable Diffusion生成的AI影像質量至關重要。它們被廣泛使用,以至於許多Stable Diffusion的圖形使用者介面(GUI)都內建了支援。

在這裡,我們將學習什麼是影像放大器,它們如何工作,以及如何使用它們。

為什麼我們需要影像放大器?

Stable Diffusion v1的預設影像大小是512×512畫素按照今天的標準來看,這相當低。以iPhone 12為例。它的相機可以產生1200萬畫素的影像——即4032×3024畫素。它的螢幕顯示2532×1170畫素,所以一個沒有被放大的Stable Diffusion的質量是比較差的,不適合在現代的應用中使用。

另外,如果圖片的解析度太低的話,圖片就缺少很多細節,使用起來也有諸多不便。

為什麼我們不能使用傳統的放大器?

傳統放大器當然可以使用,但結果不會那麼好。

用於調整影像大小的傳統演算法,如最近鄰插值和Lanczos插值,因為僅使用影像的畫素值而受到批評。它們透過僅使用影像的畫素值執行數學運算來擴大畫布並填充新的畫素。然而,如果影像本身有損壞或扭曲,這些演算法就無法準確填充缺失的資訊。

AI放大器是如何工作的?

AI放大器是使用大量資料訓練的神經網路模型。它們可以在放大影像的同時填充細節。

在訓練過程中,影像被人為地損壞以模擬現實世界的退化。然後訓練AI放大器模型以恢復原始影像。

大量的先驗知識被嵌入到模型中。它可以填充缺失的資訊。這就像人類不需要詳細研究一個人的面孔就能記住它一樣。我們主要關注幾個關鍵特徵。

如何使用AI放大器?

讓我們來了解如何在AUTOMATIC1111 WebUI for Stable Diffusion中使用AI放大器。

轉到Extras頁面,並選擇Single Image

上傳你想要放大的影像到source

設定Resize因子。許多AI放大器可以原生地將影像放大4倍。所以4是一個很好的選擇。如果你不希望影像那麼大,可以將其設定為較低的值,比如2。

如果你的影像是512×512畫素,2倍放大是1024×1024畫素,4倍放大是2048×2048畫素。

選擇R-ESRGAN 4x+,這是一個適用於大多數影像的AI放大器。

Generate開始放大。

完成後,放大後的影像將出現在右側的輸出視窗中。右鍵單擊影像以儲存。

image-20240702223759941

可以看到頁面上還有一個upscaler 2的選項,這意味著你可以把兩個放大器混合使用。

後面的Upscaler 2 visibility是用來控制使用upscaler 2模型進行放大的比例。

0表示完全不是用,1表示只使用upscaler 2。

AI放大器選項

讓我們來了解一些值得注意的AI放大器選項。

LDSR

Latent Diffusion Super Resolution (LDSR)放大器最初與Stable Diffusion 1.4一起釋出。它是一個訓練用於執行放大任務的潛在擴散模型。儘管它提供了卓越的質量,但它非常慢。我不建議使用它。

ESRGAN 4x

Enhanced Super-Resolution Generative Adversarial Networks (ESRGAN)是一個放大網路,贏得了2018年感知影像恢復和操作挑戰賽。它是之前SRGAN模型的增強版。它傾向於保留細節併產生清晰銳利的影像。ESRGAN是許多其他放大器的基礎模型。

R-ESRGAN 4x

Real-ESRGAN (R-ESRGAN)是對ESRGAN的增強,可以恢復各種現實世界的影像。它模擬了從相機鏡頭和數字壓縮的各種扭曲程度。

與ESRGAN相比,它傾向於產生更平滑的影像。

R-ESRGAN在處理現實照片影像時表現最佳。

安裝新的放大器

要在AUTOMATIC1111 GUI中安裝新的放大器,只需要從放大模型資料庫下載一個模型並將其放入資料夾中。

stable-diffusion-webui/models/ESRGAN

重新啟動GUI。你的放大器現在應該可以在放大器下拉選單中選擇。

放大影像的例子

使用AUTOMATIC1111中的Extras只是一個非常簡單的圖片放大的例子。

如果你想是用放大的同時來進行一些細節增強,那麼我們可以考慮使用SD Upscale來進行這種複雜案例的修改。

SD Upscale是AUTOMATIC1111附帶的一個指令碼,它使用放大器進行放大,然後使用影像到影像來增強細節。

下面具體的使用步驟:

第1步。 導航到Img2img頁面。

第2步。 將影像上傳到img2img畫布上。(或者,使用Send to Img2img按鈕將影像傳送到img2img畫布)

第3步。 在底部的Script下拉選單中,選擇SD Upscale

第4步。Scale factor設定為4以放大到原始大小的4倍。

第5步。 將去噪強度設定在0.1和0.3之間。越高,影像變化越大。

第6步。sampling steps的數量設定為100。更高的步驟可以改善細節。

第7步。 你可以使用原始提示和負面提示。如果沒有,使用“highly detailed”作為提示。

第8步。Generate

image-20240702230413261

再來看下對比效果:

image-20240702231025766

效果不錯,還增加了一些細節效果。

SD Upscale指令碼有助於改善細節並減少放大偽影。

txt2img頁面上的Hires Fix

還有一種影像放大的方式就是在txt2img中的Hires Fix。

你可以在txt2img頁面上選擇放大每個生成的影像。為此,你只需要勾選Hires fix

勾選框下將出現額外的選項。這些選項類似於使用SD Upscale指令碼。

整個Hires. fix過程你可以理解為我們在影像進行放大後,再基於該影像進行了二次生成。

這個Hires steps就是我們二次生成時的步數,如果數值保持為0,就代表和原有影像生成時的步數相同。

image-20240702231920492

Hires fix會在你生成圖片的同時放大所有生成的圖片。

所以它會減慢影像的生成速度。

建議的做法先生成圖片,然後把挑選好的圖片發到img2img進行SD放大。

ControlNet Tile Upscale

上面的SD Upscale還可以跟ControlNet Tile一起使用,從而達到在放大的過程中得到更好的細節。

具體而言,就是在img2img中開啟controlNet:

image-20240702233140548

Control type選擇Tile。

preprocessor選擇tile_resample。

Model選擇control_***tile。

同時開啟SD Upscale,點選生成即可。

可能會耗時比較久,但是效果應該是最好的。

點我檢視更多精彩內容:www.flydean.com

相關文章