使用 Stable Diffusion 來生成圖片 (AI繪圖)

Stable Diffusion Web UI

Stable Diffusion 是其中一個比較出名的深度學習文字到圖像生成模型,它可以透過文字的描述來繪圖。跟其他的圖像生成模型不同, Stable Diffusion 最大的特點是可以在一般家用電腦透過 GPU 來運行。

以下教學使用 Windows 系統來編寫, Linux 系統請自行更改有關的指令及位置。

下載及安裝工具

Python

  1. 請使用下面的連結下載 3.10.6 版本的 Python 。請務必使用這個版本。請使用管理員的權限來執行安裝。

    https://www.python.org/ftp/python/3.10.6/python-3.10.6-amd64.exe

Git

  1. 下載最新版本的 Git 並且安裝。

    https://git-scm.com/

安裝及啟動 Stable Diffusion Web UI

Stable Diffusion Web UI 是一個基於 Stable Diffusion 的網頁界面,可透過簡單的 UI 使用 Stable Diffusion 來生成不同的圖片。Stable Diffusion Web UI 支援不同的擴展插件,可令生成的圖片更真實。

  1. 打開命令指示字元( 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
    
  2. 在 Stable Diffusion Web UI 目錄內執行 stable-diffusion-webui\webui-user.bat

  3. 第一次執行需要等待一段比較長的時間,系統會自動下載所有必須的元件並安裝。成功啟動後,系統會顯示登入 Stable Diffusion Web UI 的本地網址。以下是正常預設的網址。

    http://localhost:7860/

Stable Diffusion Web UI 成功啟動

  1. 要關閉或停止 Stable Diffusion Web UI ,可按下 Ctrl + C ,然後輸入 Y 確認退出。

ControlNet 擴展工具

ControlNet 是 Stable Diffusion 的一個擴展工具,可以在 Stable Diffusion 繪圖前給予一個骨骼的架構和輪廓。令產生出來的圖片更真實。

  1. 使用 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

  2. 下載 ControlNet 模型並存放在 ControlNet 的 models 目錄內 (stable-diffusion-webui\extensions\sd-webui-controlnet\models)。如果不想全部下載,建議先下載 control_sd15_openpose.pth

  3. 重新開啟 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 風格模型

我們選擇了 StablyDiffused’s Aesthetic Mix 作示範。

  1. 下載模型訓練好的風格模型。

  2. stablydiffuseds_26.safetensors 放入 Stable Diffusion Web UI 的 models\Stable-diffusion 目錄內 (stable-diffusion-webui\models\Stable-diffusion)。

  3. 重新開啟 Stable Diffusion Web UI 。

生成圖片

  1. 在左上角 Stable Diffusion checkpoint 選擇 stablydiffuseds_26.safetensors

    stablydiffuseds_26.safetensors

  2. 左下方展開 ControlNet。拉入人像圖片供參考,選擇 Eanble ,在 Preprocessor 選擇 openpost,在 Model 選擇 control_sd15_openpose 。拉人入一張圖片幫助 ControlNet 了解繪圖的物件架構。

ControlNet

  1. 在左上角修改 Sampling method 為 DPM++ SDE Karras,Sampling steps 設定為 30 或以上,選擇 Restore facesHires. fix

Sampling 設定

  1. 輸入 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

  2. 輸入 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

    Prompts

  3. 按下 Generate 開始產生圖片。

    右邊會顯示產生的圖片

常見問題

解決出現找不到 pip 的問題

pip 是 Python 的 package 管理工具。部份人會在執行時出現找不到 pip 的情況。

python.exe: No module named pip

在 Stable Diffusion Web UI 目錄下執行以下指令即可解決問題。

1
venv\Scripts\python.exe -m ensurepip

執行時停在 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 將以下的一行更改。

1
    blob_path = os.path.join(storage_folder, "blobs", etag)

將整行改成以下內容保存即可解決問題。

1
    blob_path = os.path.join(storage_folder, "blobs", etag[3:])

相關討論︰

https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/7901

Made in Hong Kong