Stable Diffusion XL 說明及 SDXL1.0 安裝教學

Chris Lee
9 min readAug 10, 2023

--

使用 WebUI 玩 SDXL1.0

SDXL 是什麼?

SDXL 是 Stable Diffusion XL 的簡稱,顧名思義它的模型更肥一些,但相對的繪圖的能力也更好。

SDXL 一直都是測試階段,直到最近釋出1.0版本,且能整合到 WebUI 做使用,故一炮而紅。

跟原本的 SD 最大不同,是使用了 Base 跟 Refiner 兩個模型做聯集擴散,參數量更破了 100 億,對理論技術有興趣可以參考 https://arxiv.org/abs/2307.01952

我相信多數人是喜歡開車而不是造車,所以我們直接進入使用環節,開始前不免俗要說明一下 SDXL 的優缺點:

優點

  • 更高像素的圖片,且放大時不會嚴重失真
  • Prompt 理解能力更好,在 AI 腦補上更為智能,簡單來說就是可以不用寫一長串 Prompt
  • 改善斷肢斷手多指等 SD1.5、SD2.0 難以根除的痛點
  • 風格更為多樣化,根據官方描述,有龐克、動漫、摺紙等一堆風格可以嘗試

缺點

  • 過去 SD 的 Lora 跟一些 Controlnet 都不適用
  • GPU 的要求更高,體感上 VRAM 要 12GB 以上 (雖然可以調參數使用較低的 VRAM 啦)
  • 算圖時間更久,合理吧

如果到這邊你覺得自己電腦可能跑不動,但又想嘗試的,可以用官網的 Online Demo 來玩玩看,但會跑非~長~久~

如果你已經準備好手上的3090、4080、4090…,打算加入燒卡行列,我們就繼續看下去吧。以下教學以 Windows 環境為例。

SDXL 及 WebUI 安裝教學

WebUI 原則上跟過去 SD 的安裝方式一樣,詳細可以參考:

為了跟原本 SD 拆開,我會重新建立一個 conda 環境裝新的 WebUI 做區隔,避免有相互汙染的狀況,如果你想混用可以略過這個步驟。

1. 安裝 Anaconda 及 WebUI

Anaconda 的安裝就不多做贅述,記得裝 Python 3.10 的版本,切記切記!

conda create --name sdxl python=3.10

下載 WebUI 進行安裝,https://github.com/AUTOMATIC1111/stable-diffusion-webui

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

進去 stable-diffusion-webui 資料夾下的 webui-user.bat,使用記事本或 notepad++ 做修改,將 PYTHON= 部分改成剛剛 conda env 的路徑:

@echo off

set PYTHON="C:\Users\LEE_S\anaconda3\envs\sdxl\python.exe"
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=
git pull
call webui.bat

COMMANDLINE_ARGS 看個人需求,有的會加 xformers 做 N 牌顯卡加速,有的會加 medvram 來解決 VRAM 過低問題,我自己是什麼都沒加,3090直接過去。語法範例:

set COMMANDLINE_ARGS=--xformers --medvram

好了以後儲存,然後點兩下 webui-user.bat 打開讓它跑,應該要跑好一陣子。

2. 下載 SDXL 的相關文件

在 WebUI 安裝同時,我們可以先下載 SDXL 的相關文件,因為文件有點大,所以可以跟前步驟同時跑。

Base模型

Refiner 模型

VAE 模型

下載好後把 Base 跟 Refiner 丟到 \stable-diffusion-webui\models\Stable-diffusion 下面,VAE 丟到 \stable-diffusion-webui\models\VAE 下面。

丟好後等 WebUI 第一次跑完,連終端機整個關掉再重開一次即可,可以看到 checkpoint 有剛剛載好的模型。

WebUI 的 Settings 找到 User interface,在 Quicksettings list 加入 sd_vae。如果找不到可以點旁邊的 Show all pages,然後用關鍵字搜尋 Quicksettings 應該就能找到了,這個動作是確保我們使用正確的 VAE。

點上面的 Apply settings 後重啟,如果看到下面畫面,恭喜你完成 87%了。第一次載入 Base 模型會比較慢,畢竟人家有 6G 多,跑完第一次之後就會正常速度了。

3. 文字算圖

接下來測試不使用任何 Negative prompt、Lora,看看算圖的效果:

a beatuiful female play guitar

為了跟之前 SD 做比較,我們的參數一樣,但尺寸配合 SDXL 需要變成 1024 x 1024。彈吉他好處是可以看手部的運算,發現原生模型的產圖效果比想像好很多。

4. Refiner 微調

Refiner 模型是專門拿來 img2img 微調用的,主要可以做細部的修正,我們拿第一張圖做範例。一樣第一次載入模型會比較久一點,注意最上面的模型選為 Refiner,VAE 維持不變。

下面參數基本上跟原圖不變,Denoising strength 預設是 0.75,通常我會調 0.2~0.35 之間,調太高容易跑掉。

大家看出細節了嗎哈哈,礙於網路圖片壓縮,瀏覽器很難肉眼看出來,但在地端是可以看到非常明顯的差異唷!

5. 加入 Lora 或風格

上面只是 SDXL 的原生模型示範,C站 的 SDXL 模型越來越多,善用多個模型組合,就能開啟美少女夢工廠之路。

WebUI 的 Extensions 有個 StyleSelectorXL 建議可以裝一下,它可以套用到多種風格中,讓圖片更符合你的需求。

總結

SDXL 目前還很新,未來的發展潛力是巨大的,但若想好好玩 AI art,建議還是收一張 VRAM 24G 的 GPU 比較有效率,只能求老黃家的顯卡價格別再漲啦。

給大家看一下搭配 Lora 後的 SDXL 威力,人造人的味道改善很多呢:

--

--

Chris Lee

隱身在金融業的資料科學家,部分文章會在個人部落格唷 https://chrisnote.com/