在使用Stable Diffusion生成高解析度圖片時,是否遇到了畫面崩壞的問題,這時候就可以透過Hires. fix功能避免這種狀況。
(本教學以Stable Diffusion WebUI 1.6.0版本為例)
解決2種崩壞問題
考量到許多Stable Diffusion所使用的Checkpoint模型是以512 x 512解析度的圖像為基礎進行AI訓練,導致在進行圖像生成時,若將輸出解析度調整到1024 x 1024以上時,容易造成圖像中人物三頭六臂等崩壞問題。
另一方面,如果在低解析度圖像中指定人物的全身像,也可能會因為畫面中人物臉部分配的像素數量太少,而造成臉部變型的問題。
這些問題都可以透過Hires. fix來改善,其概念為進行多次文字生成圖片(txt2img)功能生成多張低解析度圖像,並透過升頻演算法(Upscaler)將圖像放大,最後再利用圖片生成圖片(img2img)來修飾圖像,達到輸出高解析度圖像的效果。
高畫質外芙
根據筆者自己的使用經驗,如果生成解析度介於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。
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教學中提供替代解決方法。
(回到系列文章目錄)
加入電腦王Facebook粉絲團