AI繪圖工具整理 Stable Diffusion、Easy Diffusion、Draw Things、BingCreate
發覺本地運行的AI繪圖也有UI做得不錯的, 對於安裝的困難度也大幅降低, 使用者只要搞定硬體配置就好, 軟體的部分只要讓系統自動完成安裝即可。
以下推薦兩個作業系統分別適用的軟體, 安裝好只要自行導入模型即可使用, 簡單程度勝過Stable Diffusion WebUI。
切換速度
AI繪圖工具參考:
macOS 12.4 and above - Draw Things [介面支持中文,支持AppleM系列加速]
卡通畫風 - DucHaiten-AnyUnreal
韓風人物 - MooMooFusion
寫實風格 - Photon
尋找適合的生成詞(Prompts):
日式建築[搭配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安裝:
安裝 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
# 檢索字串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算圖的速度
跑圖 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裝置。
# 類似模型生成的圖片素材可以參考這裡。
留言
張貼留言