最近 Stability AI 的 SD-XL(Stable Diffusion XL) 即將完工。原先只有 ComfyUI 能支援,但最近注意到 Vlad 也有支援了,遂嘗試了一下。
若不知道 Vlad 是什麼,請參閱本專題的 Vlad 子分頁中的文章。包括進化的Automatic1111:Vlad Diffusion - Stable Diffusion。
現階段無論是 SD-XL 還是 Vlad 的 SD-XL 支援,都屬於實驗中的階段,所以這篇心得就不談基礎的東西了。
P.S.只想看圖的話請直接至使用感想。
在 automatic (或是其他的安裝資料夾)目錄中打開 cmd,輸入:
git pull https://github.com/vladmandic/automatic
可參閱Vlad webui更新流程 - Stable Diffusion
Vlad 的更新非常頻繁,所以有可能更新後看到和這篇心得略有不同的UI介面。
Vlad 無法和 ComfyUI 一樣直接下載 SD-XL 的 .safetensor 模型使用,必須要透過 Vlad 的 Model 頁籤下載。因為 SD-XL 模型是非公開的,無論是使用 ComfyUI 還是 Vlad 都必須註冊 HuggingFace 和申請權限才能取得 SD-XL。
HuggingFace 的註冊流程筆者就不提了,申請開通 SD-XL 使用權限可透過以下網址進行:
https://huggingface.co/stabilityai/stable-diffusion-xl-base-0.9/tree/main
首次嘗試下載 sd_xl_base_0.9.safetensors 檔案時會跳出使用者規範頁面,最下方填寫一些基本資料後提出申請,馬上就會開通權限。
接著要在 HuggingFace 產生自己的 Access Token,在 Vlad 下載 SD-XL 會用到,位置如下面截圖:
點擊 New Token 按鈕即可產生,種類請選 Read。命名隨意,只是讓自己記得該 Token 用在什麼地方:
進入 Vlad 介面,前往以下地方:
一共需要下載兩個模型,直接在 Select model 中輸入:
stabilityai/stable-diffusion-xl-base-0.9
以及
stabilityai/stable-diffusion-xl-refiner-0.9
然後在 Huggingface token 欄位貼上自己的 Access Token,接著點擊Download model。檔案很大,需耐心等cmd中的進度條跑完。
*Access Token 有可能失效,如果發現下載失敗可產生新 token 再次嘗試。
兩種模型都下載好了後,建議關掉 Vlad 的 cmd 視窗後重開 Vlad。
SD-XL 是基於 Diffuser 模型的演算法,與目前常用的 1.5 不同。能使用的 Sampling Methods 也不同(Vlad 會自行調整)。最重要、影響最大的不同處如下:
因為上述 4~6 的緣故,以及現階段還沒有其他的衍生模型出現,所以 SD-XL 目前的客製化能力比不上 1.5。
實際使用方面,最重要的是:
雖然 Vlad 的 Settings >Stable Diffusion 頁籤最底部有選項:
但更乾脆直接的方式是自己製作類似 A1111 的 webui-user.bat,直接啟動時切換。請自己創新的 .txt 檔案後更改副檔名為 .bat,輸入以下內容儲存後放到和 webui.bat 相同的資料夾中,然後啟動 Vlad 時使用自己建立的 .bat 切換模式。
1.5/2.0/2.1 模式:
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS= --backend original
call webui.bat
SD-XL 模式:
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS= --backend diffusers
call webui.bat
請注意:切換模式是常駐狀態,也就是切換為 SD-XL 模式後就會維持 SD-XL 模式,直到你切換回 1.5/2.0/2.1 模式。
請注意2:切換模式時Vlad會自動把不支援的插件(extentsions)關掉,但切換回原本模式時不會自動幫忙打開。例如切換為 SD-XL 模式時 ControlNet 會被自動關閉(disabled),但切換回 1.5/2.0/2.1 模式時不會自動打開。
先說注意事項:
Vlad 的 SD-XL 模式似乎有 memory leak 的問題,也就是算圖後 VRAM 的釋放不完全,所以多算幾張後cmd就會出現高 VRAM 使用量的警語,接著會跑出 VRAM 不足時的半成品或全黑圖片,這時只能關掉 Vlad 重開。
相關設定 | 直接貼截圖供參考:
關於 Samplers DPM solver algorithm 其實不是直接和 SD-XL 相關,但筆者首次切換 SD-XL 模式時必須在這個選項套用選擇後,使用 DEIS 等相關演算法才沒有出錯。
總之,SD-XL 模式很多都處於實驗階段,包括無法算到一半 skip/stop,所以要有常常遇到錯誤的心理準備。
很多 1.5 的習慣,到了 SD-XL 就不太適用。最主要的有三:
可以嘗試 none(也就是不使用)的效果,但通常很悲慘:
風格提示詞比較:
畢竟是美國人做的模型,所以可以看出很強烈的美式偏好,包括第一張偏寫實的圖中,亞洲人的臉都是以美式為基準的。
看來只能等未來正式推出後的衍生模型了。
SD-XL 有一點是優於 1.5 模型的。
1.5 即使是寫實風的模型,生成的圖往往還是有一種莫名的虛假感,很重要的一個原因是 1.5 的模型沒有「取捨觀念」,要細節就一起細節,要清楚就一起清楚,但實際照片和人物往往不是這樣。
SD-XL 在這方面能做出更好的取捨,例如一張近距離頭像照:
除了背景和真實照片一樣會模糊外,整個人物也只有焦點的臉部很清楚、細節很明確,其他部分則逐步遞減細節並增加模糊程度。而且即使沒有特別在提示詞中註明打光方法,SD-XL 還是生成很符合戶外的光影感覺。
雖然在 SD-XL 正式推出且開始有客製化模型前,筆者還是會繼續使用 1.5,但個人很期待未來能用 SD-XL 朝擬真更加邁進一步。
祝大家算圖愉快!