Stable Diffusion 是其中一個比較出名的深度學習文字到圖像生成模型,它可以透過文字的描述來繪圖。跟其他的圖像生成模型不同, Stable Diffusion 最大的特點是可以在一般家用電腦透過 GPU 來運行。
以下教學使用 Windows 系統來編寫, Linux 系統請自行更改有關的指令及位置。
下載及安裝工具
Python
-
請使用下面的連結下載 3.10.6 版本的 Python 。請務必使用這個版本。請使用管理員的權限來執行安裝。
https://www.python.org/ftp/python/3.10.6/python-3.10.6-amd64.exe
Git
-
下載最新版本的 Git 並且安裝。
安裝及啟動 Stable Diffusion Web UI
Stable Diffusion Web UI 是一個基於 Stable Diffusion 的網頁界面,可透過簡單的 UI 使用 Stable Diffusion 來生成不同的圖片。Stable Diffusion Web UI 支援不同的擴展插件,可令生成的圖片更真實。
-
打開命令指示字元( Command Prompt )。使用 git 指令下載 Stable Diffusion Web UI 的代碼至本地目錄。
1
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
如果是在入門顯示卡上運行,請打開
stable-diffusion-webui\webui-user.bat
,加入以下参數作優化。1
set COMMANDLINE_ARGS=--lowvram --no-half --no-half-vae --skip-torch-cuda-test --precision full
-
在 Stable Diffusion Web UI 目錄內執行
stable-diffusion-webui\webui-user.bat
。 -
第一次執行需要等待一段比較長的時間,系統會自動下載所有必須的元件並安裝。成功啟動後,系統會顯示登入 Stable Diffusion Web UI 的本地網址。以下是正常預設的網址。
- 要關閉或停止 Stable Diffusion Web UI ,可按下
Ctrl + C
,然後輸入Y
確認退出。
ControlNet 擴展工具
ControlNet 是 Stable Diffusion 的一個擴展工具,可以在 Stable Diffusion 繪圖前給予一個骨骼的架構和輪廓。令產生出來的圖片更真實。
-
使用 git 指令下載 WebUI extension for ControlNet 的代碼至 Stable Diffusion Web UI 的
extensions
目錄內 (stable-diffusion-webui\extensions\
)。```bash` git clone https://github.com/Mikubill/sd-webui-controlnet.git
-
下載 ControlNet 模型並存放在 ControlNet 的
models
目錄內 (stable-diffusion-webui\extensions\sd-webui-controlnet\models
)。如果不想全部下載,建議先下載control_sd15_openpose.pth
。 -
重新開啟 Stable Diffusion Web UI 。
安裝訓練好的風格模型
以下兩個網站收藏了不同的風格模型,請搜索及使用合適的使用。
Stable Diffusion 和 ControlNet 的官方 repo ︰https://huggingface.co/
LoRA 或者 NSFW (Not Safe/Suitable For Work) repo ︰https://civitai.com/
風格模型以 .ckpt
或耆 .safetensors
作為文件的 Extension ,後者不具備執行程式碼的能力,因此較前者安全。請存放到 Stable Diffusion Web UI 的 models\Stable-diffusion
目錄內 (stable-diffusion-webui\models\Stable-diffusion
)。
我們選擇了 StablyDiffused’s Aesthetic Mix 作示範。
-
下載模型訓練好的風格模型。
-
將
stablydiffuseds_26.safetensors
放入 Stable Diffusion Web UI 的models\Stable-diffusion
目錄內 (stable-diffusion-webui\models\Stable-diffusion
)。 -
重新開啟 Stable Diffusion Web UI 。
生成圖片
-
在左上角
Stable Diffusion checkpoint
選擇stablydiffuseds_26.safetensors
。 -
左下方展開
ControlNet
。拉入人像圖片供參考,選擇Eanble
,在 Preprocessor 選擇openpost
,在 Model 選擇control_sd15_openpose
。拉人入一張圖片幫助 ControlNet 了解繪圖的物件架構。
- 在左上角修改 Sampling method 為
DPM++ SDE Karras
,Sampling steps 設定為 30 或以上,選擇Restore faces
及Hires. fix
。
-
輸入
Prompt
來描述圖片的繪畫方向。realistic,ultra-detailed,little skin spots,little acnes,little skin blemishes,1 girl,cute,smiling,solo,longshot,wideshot,beautiful detailed sky,detailed light,amazing body,dating,nose blush,closed mouth,full face,full head,full body,narrow waist,medium breasts,beautiful detailed eyes,(collared shirt:1.1),pleated skirt,long hair,brown hair,charming,clean
-
輸入
Negative prompt
來描述不應該出現的內容,例如紋身等。EasyNegative,paintings,sketches,(worst quality:2),(low quality:2),(normal quality:2),lowres,normal quality,((monochrome)),((grayscale)),poorly drawn,bad anatomy,extra limb,missing limb,age spot,glans,extra fingers,fewer fingers,((watermark:2)),((white letters:1)),cropped,ugly, old, deformed,out of focus,signature,watermark,no eyes,no ears,perfect face
-
按下
Generate
開始產生圖片。
常見問題
解決出現找不到 pip 的問題
pip 是 Python 的 package 管理工具。部份人會在執行時出現找不到 pip 的情況。
python.exe: No module named pip
在 Stable Diffusion Web UI 目錄下執行以下指令即可解決問題。
|
|
執行時停在 DiffusionWrapper
D:\git\stable-diffusion-webui>webui-user.bat
venv "D:\git\stable-diffusion-webui\venv\Scripts\Python.exe"
Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug 1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)]
Commit hash: 22bcc7be428c94e9408f589966c2040187245d81
Installing requirements for Web UI
Launching Web UI with arguments:
No module 'xformers'. Proceeding without it.
Loading weights [6ce0161689] from D:\git\stable-diffusion-webui\models\Stable-diffusion\v1-5-pruned-emaonly.safetensors
Creating model from config: D:\git\stable-diffusion-webui\configs\v1-inference.yaml
LatentDiffusion: Running in eps-prediction mode
DiffusionWrapper has 859.52 M params.
新版本的 Stable Diffusion Web UI 使用了 huggingface_hub 的 package,而這個 package 沒有過濾到特殊符號,導致問題出現。
打開 \venv\Lib\site-packages\huggingface_hub\file_download.py
將以下的一行更改。
|
|
將整行改成以下內容保存即可解決問題。
|
|
相關討論︰
https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/7901