AI繪圖工具整理 Stable Diffusion、Easy Diffusion、Draw Things、BingCreate

近日測試幾款繪圖工具,
發覺本地運行的AI繪圖也有UI做得不錯的, 對於安裝的困難度也大幅降低, 使用者只要搞定硬體配置就好, 軟體的部分只要讓系統自動完成安裝即可。

以下推薦兩個作業系統分別適用的軟體, 安裝好只要自行導入模型即可使用, 簡單程度勝過Stable Diffusion WebUI
切換速度


AI繪圖工具參考: 
Windows - Easy Diffusion 3.0 [簡易安裝,介面僅提供英文,GPU加速]

macOS 12.4 and above  - Draw Things [介面支持中文,支持AppleM系列加速]
macOS 12.3 and before - Stable Diffusion WebUI [安裝較複雜,請參考底下說明]


一張辦公室繪圖

繪圖模型:

開源模型 - Stable Diffusion 1.5

卡通畫風 - DucHaiten-AnyUnreal

韓風人物 - MooMooFusion

寫實風格 - Photon

尋找適合的生成詞(Prompts): 

生成詞產生器[搭配Stable Diffusion XL]

日式建築[搭配DucHaiten-AnyUnreal]

 狐狸 [搭配DucHaiten-AnyUnreal]

建築模型產生器[搭配Stable Diffusion XL]

人物1 2 3 4 5[搭配 MooMooFusion或 Photon]

    
自行選用模型的缺點是穩定性得花不少時間調整,
而且大部分都不支持中文,
建議是把現成的生成詞(Prompts)透過 https://bard.google.com 拆解,
再將繪畫要求告訴AI產生類似的生成詞比較方便。

至於線上繪圖功能部分平台已經支持中文,
這裡比較推薦的平台是BingCreate[海外]與文心一格[中國],

前者支持繁體字但能調整的風格有限, 後者支持簡體字但能變化不同的風格, 都是不錯的線上AI繪圖服務。

以下分別套用DucHaiten-AnyUnreal模型與BingCreate繪製銀行大門:

DucHaiten-AnyUnreal模型 BingCreate


以下分別套用百度文心一言(風格簡易)文心一格(自動風格)繪製銀行大門:

百度文心一言 百度文心一格


Stable Diffusion WebUI安裝:

適用於macOS12.3以前的系統版本,這裡以Big sur 11.7系統為例。

安裝 Homebrew

# 到終端機輸入以下指令

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安裝套件

# 依照 AUTOMATIC1111/stable-diffusion-webui 官方建議,安裝一些開發套件

$ brew install cmake protobuf rust git wget pyenv


接著安裝 python,安裝前可到 AUTOMATIC1111/stable-diffusion-webui 查看適合版本


# 使用 pyenv 安裝

$ pyenv install 3.10.6

# 啟動 3.10.6

$ pyenv local 3.10.6


# 檢查python版本是否為3.10.6

$ python --version    


# 出現Python 3.10.6可繼續安裝stable-diffusion-webui,如果是其他版本(通常Big sur的Xcode會裝python3.8)請繼續下一章節


如果版本不是3.10.6請先移除python並將pyenv加入環境變數

# 安裝LZMA依賴庫

$ brew install xz


# 移除python

$​​ pyenv uninstall 3.10.6


# 請檢查環境變數

$ echo $PATH


# 如果/Users/user/.pyenv/shims:/Users/user/.pyenv/bin不在列表中,請依序執行

$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.zprofile

$ echo 'eval "$(pyenv init --path)"' >> ~/.zprofile


# 重新加載環境

$ source ~/.zprofile


# 重新安裝python3.10.6

$ CFLAGS="-I$(brew --prefix xz)/include" \

LDFLAGS="-L$(brew --prefix xz)/lib" \

pyenv install 3.10.6


# 將pyenv安裝的python設定為全域版本

$ pyenv global 3.10.6


# 檢查python版本是否為3.10.6

$ python --version


開始安裝Stable Diffusion WebUI

# 在終端機依序輸入

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

$ cd stable-diffusion-webui

$ ./webui.sh


# 直到出現 http://127.0.0.1:7860 成功,可以導入模型來使用


# 如果出現安裝scipy錯誤,請嘗試安裝以下套件再執行webui.sh

$ brew install gcc

$ brew install openblas

$ export LDFLAGS="-L/opt/homebrew/opt/openblas/lib"

$ export CPPFLAGS="-I/opt/homebrew/opt/openblas/include"

$ export PKG_CONFIG_PATH="/opt/homebrew/opt/openblas/lib/pkgconfig"


# 如出現多個相依性套件錯誤,請嘗試在虛擬pip環境安裝以下套件

$ pip install addict future lmdb numpy opencv-python Pillow pyyaml requests


# 如出現wheel safetensors錯誤,請嘗試安裝以下套件再執行webui.sh

$ brew install rust


# 如出現 low ram 這種訊息,可以嘗試執行的時候加上參數

$ ./webui.sh --opt-split-attention-v1 --medvram --skip-torch-cuda-test --disable-nan-check --no-half --use-cpu all

# 假設ram還是不夠,可以改用更低的模式,但繪製時間會拉長,品質也會顯著下降

$ ./webui.sh --opt-split-attention-v1 --lowvram --skip-torch-cuda-test --disable-nan-check --no-half --use-cpu all

同樣原理安裝 Easy Diffusion在macOS11.7

# 因為Easy Diffusion預設使用python3.8安裝會有問題,故下載的腳本需修改python版本

# 檢索字串python=3.8.5取代成python=3.10.6,檢索字串python3.8取代成python3.10

# 修改字串的檔案分別是 Easy-Diffusion-Mac\easy-diffusion\scripts\bootstrap.sh 與 Easy-Diffusion-Mac\easy-diffusion\scripts\on_env_start.sh

# 修改後執行 Easy-Diffusion-Mac\easy-diffusion\start.sh 安裝剩下套件,通常都是scipy與openblas套件錯誤,可以參考Stable Diffusion WebUI的除錯方式修正即可。

# 對於macOS11.7.1運行Easy Diffusion的操作範例放在文章一開始的影片提供參考。


# 整理brew建議安裝的套件列表

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

$ (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/user/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"

$ brew install cmake protobuf rust git wget pyenv xz gcc openblas rust

$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.zprofile

$ echo 'eval "$(pyenv init --path)"' >> ~/.zprofile

$ export LDFLAGS="-L/opt/homebrew/opt/openblas/lib"

$ export CPPFLAGS="-I/opt/homebrew/opt/openblas/include"

$ export PKG_CONFIG_PATH="/opt/homebrew/opt/openblas/lib/pkgconfig"

$ source ~/.zprofile

$ CFLAGS="-I$(brew --prefix xz)/include" \

LDFLAGS="-L$(brew --prefix xz)/lib" \

pyenv install 3.10.6

$ pyenv global 3.10.6

$ source ~/.zprofile

# 檢查python版本是否為3.10.6,正確後開始安裝Stable Diffusion WebUI或Easy Diffusion的腳本。

$ python --version


# 經過多次嘗試,很容易在安裝sdkit的時候卡bug,通常是numpy與scipy安裝失敗造成,而scipy安裝失敗也有部分原因是brew的openblas安裝不完整

# 重新安裝openblas

$ brew reinstall openblas

$ export LDFLAGS="-L/opt/homebrew/opt/openblas/lib"

$ export CPPFLAGS="-I/opt/homebrew/opt/openblas/include"

$ export PKG_CONFIG_PATH="/opt/homebrew/opt/openblas/lib/pkgconfig"

$ source ~/.zprofile

# 嘗試不快取安裝numpy scipy

$ pip install --no-cache-dir numpy scipy meson cython pythran scikit-image==0.19.0 sdkit

測試不同平台透過CPU算圖的速度

# 下面是三個裝置各自繪三張圖,測試繪製圖片耗費的時間(單位:s秒,越小越好)。
     跑圖 S61732885
AMD5800x  [420s]   ██████████████
AMD SMT  [360s]   ████████████
M1 CPU  [156s]   ██████
M1 CPUe  [212s]   ████████
M2 CPU  [158s]   ██████
  • AMD5800x代表AMD5800X未開啟SMT多緒執行的結果。
  • AMD SMT代表AMD5800X開啟SMT多緒執行的結果。
  • M1CPU代表運行M1 Mac mini的結果。
  • M1CPUe代表使用USB外接SSD運行M1 Mac mini的結果。
  • M2CPU代表運行M2 Mac mini的結果。

# 測試的結果可以看出,x86的AMD裝置啟用SMT多緒性能有所提升,但實際運行的效率還是Apple的M系列來的好,考慮到M1與M2對於SSD存取的性能有所不同,M2略遜於M1裝置。
# 類似模型生成的圖片素材可以參考這裡

留言

這個網誌中的熱門文章

紅米手機MIUI設置SD卡為延伸儲存空間