最近 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 會用到,位置如下面截圖:
在HuggingFace網站前往Settings
前往Access Tokens
點擊 New Token 按鈕即可產生,種類請選 Read。命名隨意,只是讓自己記得該 Token 用在什麼地方:
產生後記得複製,點按Show右邊的兩方塊重疊的按鈕即可
進入 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。
模型會在models > Diffuers 中以資料夾呈現
SD-XL 是基於 Diffuser 模型的演算法,與目前常用的 1.5 不同。能使用的 Sampling Methods 也不同(Vlad 會自行調整)。最重要、影響最大的不同處如下:
因為上述 4~6 的緣故,以及現階段還沒有其他的衍生模型出現,所以 SD-XL 目前的客製化能力比不上 1.5。
實際使用方面,最重要的是:
雖然 Vlad 的 Settings >Stable Diffusion 頁籤最底部有選項:
original = 1.5/2.0/2.1 模式 | diffusers = SD-XL 模式
但更乾脆直接的方式是自己製作類似 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 重開。
相關設定 | 直接貼截圖供參考:
節省VRAM使用的設定
dpm相關sampling演算法可以嘗試更改紅框中的選項比較不同
關於 Samplers DPM solver algorithm 其實不是直接和 SD-XL 相關,但筆者首次切換 SD-XL 模式時必須在這個選項套用選擇後,使用 DEIS 等相關演算法才沒有出錯。
總之,SD-XL 模式很多都處於實驗階段,包括無法算到一半 skip/stop,所以要有常常遇到錯誤的心理準備。
很多 1.5 的習慣,到了 SD-XL 就不太適用。最主要的有三:
可以嘗試 none(也就是不使用)的效果,但通常很悲慘:
none
有refiner
Negative prompt: text, watermark, blurry, painting, 3d render, smooth, plastic, grainy, low-resolution, deep-fried, oversaturated,
Negative prompt: bad-hands-5, ng_deepnegative_v1_75t, extra fingers, deformed hands, polydactyl, ((low quality, worst quality, monochrome, greyscale, grayscale, watermark, text, blurry, jpeg artifacts)), cropped, normal quality, ((signature, username, artist name, logo)), cartoon, canvas frame, ((lowres)), disfigured, bad art, deformed, extra limbs, b&w, weird colors, duplicate, morbid, mutilated, mutated hands, poorly drawn hands, poorly drawn face, mutation, ugly, bad proportions, cloned face, out of frame, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, long neck, skin spots, acnes, skin blemishes, age spot,
風格提示詞比較:
無風格提示詞
Japanese anime style | 日式動畫風 - 老實說,不像
manga style, full color |漫畫風 - 好美式
Japanese shounen manga style, full color | 日式少年漫畫風 - 還是好美式
Japanese shoujo anime, full color | 日式少女漫畫風 - 懶得吐槽了
畢竟是美國人做的模型,所以可以看出很強烈的美式偏好,包括第一張偏寫實的圖中,亞洲人的臉都是以美式為基準的。
看來只能等未來正式推出後的衍生模型了。
SD-XL 有一點是優於 1.5 模型的。
1.5 即使是寫實風的模型,生成的圖往往還是有一種莫名的虛假感,很重要的一個原因是 1.5 的模型沒有「取捨觀念」,要細節就一起細節,要清楚就一起清楚,但實際照片和人物往往不是這樣。
SD-XL 在這方面能做出更好的取捨,例如一張近距離頭像照:
又是她
除了背景和真實照片一樣會模糊外,整個人物也只有焦點的臉部很清楚、細節很明確,其他部分則逐步遞減細節並增加模糊程度。而且即使沒有特別在提示詞中註明打光方法,SD-XL 還是生成很符合戶外的光影感覺。
雖然在 SD-XL 正式推出且開始有客製化模型前,筆者還是會繼續使用 1.5,但個人很期待未來能用 SD-XL 朝擬真更加邁進一步。
祝大家算圖愉快!
封面圖完整版