2023.12.11 09:00

Stable Diffusion AI算圖使用手冊(5-5):透過Hires. fix輸出大圖

ADVERTISEMENT

在使用Stable Diffusion生成高解析度圖片時,是否遇到了畫面崩壞的問題,這時候就可以透過Hires. fix功能避免這種狀況。

(本教學以Stable Diffusion WebUI 1.6.0版本為例)

文章目錄

解決2種崩壞問題

考量到許多Stable Diffusion所使用的Checkpoint模型是以512 x 512解析度的圖像為基礎進行AI訓練,導致在進行圖像生成時,若將輸出解析度調整到1024 x 1024以上時,容易造成圖像中人物三頭六臂等崩壞問題。

ADVERTISEMENT

另一方面,如果在低解析度圖像中指定人物的全身像,也可能會因為畫面中人物臉部分配的像素數量太少,而造成臉部變型的問題。

這些問題都可以透過Hires. fix來改善,其概念為進行多次文字生成圖片(txt2img)功能生成多張低解析度圖像,並透過升頻演算法(Upscaler)將圖像放大,最後再利用圖片生成圖片(img2img)來修飾圖像,達到輸出高解析度圖像的效果。

ADVERTISEMENT

ADVERTISEMENT

以Hires. fix輸出大圖教學

根據筆者自己的使用經驗,如果生成解析度介於512 x 512至1024 x 1024之間的圖像,大多不需使用Hires. fix,除非遇到前半段文章提到的臉部變型,才需借助Hires. fix來修正問題。但是如果是想要生成解析度高於1280 x 1280的圖像,則建議使用Hires. fix功能。

讀者可以在Stable Diffusion WebUI的txt2img參數設定欄位找到Hires. fix項目,點選三角型後就會展開詳細設定選項。

Upscaler為升頻過程使用的演算法,如果生成圖像是仿真照片類型建議選擇ESRGAN_4x,如果是漫畫、插畫類型則建議選擇R-ESRGAN-4x+-Anime6B。

ADVERTISEMENT

Hires steps表示放大圖片的運算步數,數值越大產生的圖像品質越好,但需要花更多時間,一般建議設定40~50之間的數值。Denoising strength為降噪強度,可以理解為放大過程重新繪製的幅度,數值越大將給與系統越大的空間「調整圖像內容」,建議設定0.25~0.35之間的數值以避免圖像崩壞,若輸出圖像的品質未達期望,也可嘗試提升到0.5~0.7。

Upscale by為放大的倍數,Hires. fix會將原始圖像解析度的長、寬放大至指定的倍數。如果不想以此方式指定生成圖像的解析度,也可以直接在Resize width/height to欄位輸入想要的解析度數值。

設定完成後,即可照一般方式設定其餘參數、輸入提升詞,並開始生成高解析度的圖像。

雖然Hires. fix有助於在提升解析度的同時維持畫面品質,但也有著會大幅增加運算時間的代價,所以建議讀者可以先多嘗試生成低解析度圖像進行練習與參數調整,待確定「黃金參數」後,再進行Hires. fix圖像生成。

另一方面Hires. fix也會增加算圖過程中的顯示記憶體使用量,1920 x 1080解析大約需要8GB左右顯示記憶體,而3840 x 2160則會消耗14~16GB顯示記憶體。若讀者的顯示卡不符合需求也沒關係,筆者將在下篇Tiled VAE教學中提供替代解決方法。

回到Stable Diffusion AI算圖系列文章目錄

ADVERTISEMENT