平時寫文章有需要圖片的需求,所以來學習記錄一下 Stable Diffusion 這個開源的 AI 繪畫工具
Stable Diffusion 是什麼#
透過 Prompts (提示 / 描述)由文字信息轉換為圖像信息
Stable Diffusion (SD)是一個開源的 AIGC 繪畫大模型,特點是開源、速度快、更新迭代快。
怎麼使用#
安裝 GUI#
為了方便使用,需要先安裝 SD 的一個 WebGUI
安裝鏈接:https://github.com/AUTOMATIC1111/stable-diffusion-webui
安裝分為 2 種,一種是部署到谷歌的 google.colab 上(一個線上的運行環境)、另一種是自己本地部署運行
本地安裝步驟#
由於我的電腦是 Mac 的,而且還是 Apple Silicon 芯片的,所以以下步驟僅供這種類型的機器參考
全新安裝
如果之前沒有安裝過可以透過 Homebrew 的方式進行安裝。
如果沒有 Homebrew 可以透過終端輸入這個命令進行安裝
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安裝 WebUI 之前首先需要把運行環境準備好,打開終端
1. 安裝 python 3.10 以上版本
brew install cmake protobuf rust [email protected] git wget
2. 拉取 WebUI 在 Github 倉庫上的代碼
拉取代碼可以使 SD 更方便的實時更新,使用最新的功能
隨便在一個目錄下,運行以下命令
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
拉取完之後目錄是這樣的
3. 下載 Stable Diffusion 模型
我下載的是目前比較新的模型,2.1 版本的,模型常見格式:ckpt
、safetensors
格式的,下載地址: https://huggingface.co/stabilityai/stable-diffusion-2-1
將下載好的模型放在剛才拉取的 WebUI 的stable-diffusion-webui/models/Stable-diffusion
目錄下
由於 v2.1 版本還需要下載配置文件,配置文件的下載方法為:
下載地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon#downloading-stable-diffusion-models
按住鍵盤上的 option 鍵,鼠標點擊 here
進行下載
下載好的文件名為: v2-inference-v.yaml
然後我們需要將這個文件進行重命名,把這個配置文件的名字與下載的模型名稱保持一致,我下的模型名是 v2-1_768-ema-pruned.ckpt
,所以配置文件名需要改為 v2-1_768-ema-pruned.yaml
4. 執行腳本運行 web UI
# 進到根目錄下
cd stable-diffusion-webui
# 運行腳本
./webui.sh
腳本執行過程中會自動下載運行所需的依賴文件,時間比較久,耐心等待即可,大概需要半小時到 2 小時不等
直到出現訪問地址就成功了:http://127.0.0.1:7860/
成功之後不要關閉或者停止終端,直接在瀏覽器中訪問這個地址:http://127.0.0.1:7860/
以後每次打開就是執行 webui.sh
腳本,如果想更新就在根目錄下執行 git pull
即可
特殊情況處理#
執行生成圖片的時候可能會出現以下的錯誤:
NansException: A tensor with all NaNs was produced in Unet. This could be either because there's not enough precision to represent the picture, or because your video card does not support half type. Try setting the "Upcast cross attention layer to float32" option in Settings > Stable Diffusion or using the --no-half commandline argument to fix this. Use --disable-nan-check commandline argument to disable this check.
如果你也和一樣發生了同樣的錯誤,可以這樣解決:
打開根目錄下的 webui-user.sh 文件
將這個COMMANDLINE_ARGS
參數修改一下:
COMMANDLINE_ARGS="--lowvram --precision full --no-half --skip-torch-cuda-test"
- 重新執行一下
./webui.sh
- 最後將設置中的 Stable Deffusion -> Upcast cross attention layer to float32 勾選上即可正常運行
畫出第一副畫#
以文本生成圖#
畫圖之前首先先認識一下這個界面各個地方分別是什麼
界面中比較重要的幾個參數
- 步長 (Sampling steps): 這個參數影響時間和效果,通常設置 30 左右,主要控制的是去噪的程度
- 隨機因子 (Seed) :決定畫面內容,主要影響的是畫迭代時的隨機噪聲
- CFG Scale :決定畫家自由度
- 2 ~ 6: 隨機生成,基本不按照提示操作
- 7 ~ 10 :最常見的設置,會有一個不錯的平衡
- 10 ~ 15 : 需要提示詞很好、很具體,而且 10 以上飽和度會變高
以圖片生成圖片#
根據提示詞 + 圖片生成圖片
同樣的,我們也看看這個界面的一些設置,滾動到頁面下面會有設置區域
圖生圖最常見的用途是:轉換圖片的風格
圖擴展圖#
根據提示詞 + MASK(蒙版) + 圖片生成圖片
常見場景:去水印,換裝、擴展畫邊界
提示詞 Prompts 怎麼寫#
關鍵詞#
不同特性用逗號,分隔#
a girl, long hair, twin ponytails
類似特性用 | 分隔#
a girl, long black | grey hair, twin ponytails
調整權重#
如果想調整某個特性占畫面的比例或權重可以透過這樣調整
(提示詞:權重數值)
- 數值 < 1 :減弱權重
- 數值 > 1 :加強權重
a girl, long hair, (twin ponytails:0.2)
漸變效果#
如果想要畫面存在漸變,可以這樣:
[關鍵詞 1: 關鍵詞 2: 百分比]
a girl, long [white:black:0.5] hair, (twin ponytails:0.2)
交替融合#
如果想要畫中一半有這個風格,另一半是另一種風格,可以這樣
[關鍵詞 | 關鍵詞]
[cat|dog] in the field
強化效果#
添加高質量的關鍵詞,如:best quality、masterpiece
best quality, ultra-detailed, masterpiece, finely detail, high res, 8K wallpaper, a girl, long hair, (twin ponytails:0.2)
添加反向詞#
常用反向詞:
nsfw
: 色情暴力的bad face
: 不好的臉
強化形態#
控制強調畫面的整體形態:如是否是 **full body shot (全身照)** 之類的
- 光線
- cinematic lighting (電影光)
- dynamic lighting(動感光)
- 視線
- looking at viewer
- looking at another
- looking away
- looking back
- looking up
- 畫風
- skatch
- 視角
- dynamic angle
- from above
- from below
- wide shot
Photo of real life girl, cinematic lighting, peeking from window, vibrant colors, bokeh, movie poster style
與 ChatGPT 結合#
Boundless prairies, Verdant meadows, Azure skies and white clouds, Rushing rivers, Wildflowers aplenty, Majestic sunsets
進階玩法#
不同模型#
- 常用模型搜索下載網站:
市面上人們常用的模型:
- 二次元風格模型
- 國風風格模型
- 國風 3 GuoFeng3 : 中國華麗古風風格模型,具有 2.5 D 的質感
- Midjourney 風格
- Dreamlike Diffusion 1.0 : 顏色特別艷麗,畫風特別炫
- 真人風格
可以將這些模型下載下來放到stable-diffusion-webui/models/Stable-diffusion
目錄下,點擊頁面的模型選擇旁邊的刷新按鈕即可使用這些模型啦