如何在 Mac、Windows 和 Docker 上本地電腦上搭建 AI 人工智能繪畫工具 Stable Diffusion
一、概述
目前,有諸如 Midjourney 等人工智能繪畫網站可供大家來免費使用,但是由於是免費資源肯定會在機器性能和使用次數方面有所限制,因此如果能將人工智能繪畫工具部署在本地運行就會突破機器性能和使用次數等方面的限制。可能所有人類畫師都得發出一句 “既生瑜,何生亮” 的感嘆,因爲 AI 繪畫通用算法 Stable Diffusion 已然超神,無需美術基礎,也不用經年累月的刻苦練習,只需要一臺電腦。
Stable Diffusion 正是這樣一種可以部署在本地環境上運行的人工智能繪畫工具,圖形運算主要用到的是顯卡的性能,因此請確保你的顯卡內存至少爲 4G,Stable Diffusion 首先需要搭建本地的 UI 界面即:stable-diffusion-webui,然後下載使用模型文件即可開始創作,模型可以直接使用別人訓練好的。
安裝 Stable Diffusion 看似是一件很簡單的事情,但是對於一般沒有代碼和編程技術的朋友則顯得不夠友好,在安裝過程中會出現各種各樣的問題,因此本教程將一步一步帶領大家來完成安裝。
先來一張效果圖展示
二、本地環境配置
安裝部署這個 AI 項目要求運行的電腦需要較高顯卡(圖形處理處理能力),Windows 與 Mac 都可以運行,內存推薦 16G 及以上,硬盤推薦使用固態硬盤,不需要外網梯子也行。
(1)Windows 電腦運行,顯卡最好是擁有 Nvidia 獨立顯卡、RTX20 系統以後的顯卡,集成顯卡就不用試了,僅生成圖片推薦 8G 顯存(4G 是最低保障配置)訓練推薦大於 12G(越大越好)
(2)Mac 電腦運行,最好是 M1 芯片,操作系統 macOS 在 12 及以上版本,Monterey (12), or Ventura (13) 測試成功過(本人親測 Big Sur (11) 版本折騰好久沒安裝成功),本人電腦配置和系統
三、安裝部署
1. mac 本地安裝 Stable-Diffusion-Webui 步驟
1.1 先安裝 homebrew。
國外太慢,可以去國內地址:https://brew.idayer.com/guide/start/。如下圖
執行圖片紅框的命令,就完成了第一步
/bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"
查看安裝版本:brew -v 。打出版本號即安裝成功。
1.2 安裝 python 環境
所以我們需要,手動安裝下載並安裝 python3.10 版本,下載地址:https://www.python.org/downloads/macos
下載之後直接下一步下一步安裝就行,打開一個新的終端窗口並運行(啓動臺中搜索終端,打開)
輸入 python3 -V 檢測版本
在終端輸入以下命令安裝基本軟件工具
brew install cmake protobuf rust git wget
1.3 使用 Git 下載 stable-diffusion-webui 項目
在終端窗口使用 git 命令去下載項目到本地:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
執行之後會默認下載到你的這個目錄下,如圖, 路徑中這個 "mac" 是你的電腦用戶名,每個人的電腦用戶名可能不一樣
1.4 下載面部重建插件 GFPGAN
打開瀏覽器訪問 Github:https://github.com/TencentARC/GFPGAN 去來下載 GFPGAN 插件,打開網頁後向下拖拽點擊如下圖所示的 “GFPGANv1.3.pth” 插件即可開始下載。
進入頁面之後,點擊紅框 1.3 就會下載了
完成下載後直接將 GFPGANv1.3.pth 拖拽至 stable-diffusion-webui 文件夾中即可,如:“/Users/mac/stable-diffusion-webui/”。
1.5 下載 models
訪問 Stable Diffusion Models 網站來進行模型的下載,以 Stable Diffusion v1.5 爲例
地址:https://rentry.org/sdmodels
接着點擊這個
最後點擊這個。文件有點大,下載的時間會有些久
當模型文件下載完成後將此模型文件移動到 “models” 文件夾的 “Stable-diffusion” 中如:“/Users/mac/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned.ckpt”
1.6 運行 web ui
在終端窗口先執行:cd stable-diffusion-webui。目的是進入該文件夾執行後續命令
運行項目命令:./webui.sh
如果運行成功,你將會看到如下圖(第一次運行,一般情況都會報各種各樣的錯誤,可直接查看章節 4 . 安裝過程中遇到的問題)
訪問運行頁面:http://127.0.0.1:7860/
2. windos11 本地安裝 Stable-Diffusion-Webui 步驟
2.1 安裝 Python
Stable Diffusion 的運行依賴於 Python,因此爲了保證整個項目能成功運行我們需要在本地環境安裝 Python,但是 Stable Diffusion 目前與最新版 Python 的兼容性並不是特別好,因此建議安裝 Python 3.10.9 或者 Python 3.10.10 版本。
請確保安裝 Python 時 勾選 “ Add Python 3.10 to PATH” 選項。
關於具體安裝 Python 的方法可以參照文章:如何在 Windows11 上安裝 Python 爲了確保 Python 成功安裝,請打開 CMD 終端窗口並輸入 “python” 命令,如果能查詢到 Python 的相關信息則證明安裝已經成功,否則請重新安裝。
2.2 安裝 Git
安裝 git 來克隆完整的 stable-diffusion-webui 倉庫,直接訪問:https://git-scm.com/download/win 來進行下載,對於目前的大部分電腦來說都是 64 位的系統因此直接點擊下載網頁中的 “64-bit Git for Windows Setup”。
下載完成後直接點擊該 EXE 文件即可開始運行安裝嚮導,所有選項均選擇默認選項進行安裝即可。
2.3 使用 git 安裝 stable-diffusion-webui
在電腦的 D 盤創建一個文件夾如 “github” 來保存 **stable-diffusion-webui 庫文件,**進入該文件夾後,右鍵鼠標在打開的下拉列表中選擇 “在終端中打開” 即可在 Windows PowerShell 中打開此文件夾,只有在此文件夾中打開終端才能保證後續的安裝文件能夠正確的安裝在當前文件夾。
在打開的 Windows PowerShell 終端窗口中查看以下提示字符確保 Windows PowerShell 終端確實是在 sd 文件夾中打開的。
然後複製以下代碼:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
並在 Windows PowerShell 終端窗口中粘貼並點擊回車鍵運行。
安裝過程中請不要關閉電腦或者斷網,否則會安裝失敗。整個過程大概需要幾十秒左右,具體安裝時間的長短和網絡連接速度有關。
安裝完成後關閉 Windows PowerShell 終端窗口,我們可以在 github 文件夾中看到 stable-diffusion-webui 文件夾即表示下載成功了。
2.4 下載面部重建插件 GFPGAN
打開瀏覽器訪問 Github:https://github.com/TencentARC/GFPGAN 去來下載 GFPGAN 插件,打開網頁後向下拖拽點擊如下圖所示的 “GFPGANv1.3.pth” 插件即可開始下載。
完成下載後直接將 GFPGANv1.3.pth 拖拽至 stable-diffusion-webui 文件夾中即可,如:“C:\sd\stable-diffusion-webui”。
2.5 下載模型
訪問 Stable Diffusion Models 網站來進行模型的下載,此處以 Stable Diffusion v1.5 爲例進行演示,點擊後即可跳轉到該模型對應的位置。
點擊 Repo 後面的地址進入 huggingface 網站來進行下載,當然你也可以使用下面的磁力鏈接進行下載,具體自己根據實際情況進行選擇。
打開 huggingface 網站網址後切換到 “Files and versions” 選項卡選擇如下圖所示的 “v1-5-pruned.ckpt” 進行下載。
當模型文件下載完成後將此模型文件移動到 “models” 文件夾的 “Stable-diffusion” 中如:“D:\github\stable-diffusion-webui\models\Stable-diffusion”
2.6 配置並運行 webui-user.bat 文件來自動安裝所需文件
在運行 webui-user.bat 批處理文件之前我們首先要對其進行配置,右鍵該文件選擇編輯即可在記事本中打開此文件開始編輯:在 set PYTHON = 參數後粘貼當前環境中 Python.exe 的路徑,如:“C:\Users\zdd\AppData\Local\Programs\Python\Python311\python.exe”。
事實上如果你在安裝 Python 時如果勾選了 “ Add Python 3.10 to PATH” 選項,那麼此步驟可以省略,因爲當程序執行時如果發現此參數爲空會自動去系統變量中找此信息。
2.7 運行 web ui
一切配置完成後再次雙擊運行 “webui-user.bat” 批處理文件即可在 CMD 終端窗口中自動運行,此過程可能需要一到兩個小時左右,具體時間取決於你的網速
第一次運行時可能需要較長時間,請耐心等待。重要提示:請保持此終端窗口處於打開狀態,使用期間切勿關閉,否則項目將無法正常運行。你可能遇到的錯誤提示:“RuntimeError: Cannot add middleware after an application has started”,解決方法如下:在 stable-diffusion-webui 文件夾中右鍵打開終端執行以下命令即可解決此錯誤提示:
.\venv\Scripts\python.exe -m pip install--upgrade fastapi==0.90.1
如果你一切都配置得當的話,那麼會出現如下圖所示的界面:
複製上圖中的 “http://127.0.0.1:7860” 地址並在瀏覽器中打開即可看到 stable diffusion 工具的 UI 界面,至此本教程完畢,如果你在安裝過程中遇到任何問題歡迎在評論區留言和我們交流
3. docker 本地安裝 Stable-Diffusion-Webui 步驟
如果不想太折騰,也可以使用 Docker 容器來構建 Stable-Diffusion-Webui,同樣地,需要拉取線上的 Docker 配置
3.1 安裝 IDocker Desktop
因爲是在 mac 上進行測試的,因此我安裝的是 mac 版本,下載地址:https://docs.docker.com/desktop/install/mac-install/
3.2 下載 webui 鏡像
打開終端根據自己的網絡下載國內鏡像地址還是國外鏡像地址
#國外鏡像
docker pull siutin/stable-diffusion-webui-docker:latest-cpu
docker pull siutin/stable-diffusion-webui-docker:latest-cuda
#國內鏡像
docker pull registry.cn-hangzhou.aliyuncs.com/sunsharing/stable-diffusion-webui-docker:latest-cpu
大小:6G 多
地址:https://hub.docker.com/r/siutin/stable-diffusion-webui-docker
3.3 創建項目相關目錄
#創建目錄
mkdir -p ~/stable-diffusion-webui-docker/models
mkdir -p ~/stable-diffusion-webui-docker/outputs
mkdir -p ~/stable-diffusion-webui-docker/extensions
#賦予權限
sudo chmod -R 777 ~/stable-diffusion-webui-docker
創建目錄是爲了給 webui 做數據持久用的,啓動的時候會進行掛載
3.4 啓動服務
隨後直接在終端運行命令啓動服務:
docker run -d --name sdw -p 8888:8888 -p 7860:7860 -p 6666:22 -v /Users/zdd/stable-diffusion-webui-docker/models:/app/stable-diffusion-webui/models -v /Users/zdd/stable-diffusion-webui-docker/outputs:/app/stable-diffusion-webui/outputs -v /Users/zdd/stable-diffusion-webui-docker/extensions:/app/stable-diffusion-webui/extensions --rm registry.cn-hangzhou.aliyuncs.com/sunsharing/stable-diffusion-webui-docker:latest-cpu bash webui.sh --skip-torch-cuda-test --listen --precision full --no-half --use-cpu Stable-diffusion GFPGAN ESRGAN VAE --all --share
docker run:利用指定鏡像啓動一個容器,需要先在電腦上安裝docker,比如win11下需要安裝docker desktop並開啓hyperv虛擬化。
-d:容器後臺執行。
--name sdw:指定容器的名稱爲sdw。
-p 8888:8888 -p 7860:7860 -p 6666:22:將容器內的幾個端口映射出來,來與本機通信,其中mac不支持host模式。
7860端口:webui;8888端口:jupyter lab(需要手動打開,密碼7758258);6666端口:ssh(root,密碼7758258)
--use-cpu 指定了cpu運行,因爲我沒有gpu
--name sdw:指定容器的名稱爲sdw。
-v 可替換自己的本地目錄,主要是爲了把models、outputs、extensions目錄下的數據持久化
registry.cn-hangzhou.aliyuncs.com/sunsharing/stable-diffusion-webui-docker:latest-cpu:docker run指定的鏡像名。如果該鏡像未在本地,自動從dockerhub下載
可以使用 docker Desktop 查看日誌或者命令行 docker logs sdw -f:
一般問題:
- 內存泄露,切換模型可能會爆容器的內存,終端顯示退出狀態碼 137,實際上是因爲 oom 被 kill 並且直接終止容器。可以選擇在 docker Desktop 中重啓服務,爆內存後再運行即可。也可以把容器資源給高一點
總的來說,安裝過程簡單,但是調試比較費勁,已知的有內存泄漏問題,一旦啓動出問題,就需要重啓,所以 Docker 或者 k8s 中啓動還需要測試驗證,是否可以推資源解決。
4 . 安裝過程中遇到的問題
- Installing gfpgan 卡住坑
你可能遇到的問題:無法安裝 gfpgan 的原因是網絡問題,就算已經科學上網,並設置爲全局,也無法從 github 上下載源代碼,從而導致 install 失敗
解決方法:是直接到 github 下載 GFPGAN 代碼到本地,並進行本地安裝 https://github.com/TencentARC/GFPGAN
除此之外,大部分網友由於網絡環境問題無法訪問到 Github 中的部分資源從而導致安裝失敗,此時需要用記事本打開 launch.py 文件並找到 “def prepare_enviroment(): ” 開頭的段落,在每個 “ https://github.com/” 開頭的鏈接前面添加 “ https://ghproxy.com/”,變成如圖所示的“ https://ghproxy.com/https://github.com/” 格式開頭,如下圖:此處共計需要替換 8 處,替換完成後保存退出即可:
問題 1、如果 launch.py 修改後還是不行:
可參考使用 stable diffusion webui 時,安裝 gfpgan、clip 等失敗的解決方案
問題 2、注意:從 launch.py 中可以看到要同時安裝 clip 和 open-clip,所以如果按照問題 1 中的方法安裝了 open-clip,再次雙擊 D:\github\stable-diffusion-webui\webui-user.bat(這裏是我的安裝位置,大家根據自己的位置查找)時還是會報 clip 安裝失敗,可以把 github 地址改成 https://github.com/chfenglv/CLIP.git 或 https://github.com/openai/CLIP.git (前者是後者的 fork 倉庫),其他操作同問題 1。
問題 3、如果在安裝 repositories 時仍報連接超時(如下圖所示):
venv "E:\1tianque\StableDiffusion\stable-diffusion-webui\venv\Scripts\Python.exe"
Python 3.10.10 (tags/v3.10.10:aad5f6a, Feb 7 2023, 17:20:36) [MSC v.1929 64 bit (AMD64)]
Commit hash: a9fed7c364061ae6efb37f797b6b522cb3cf7aa2
Cloning Stable Diffusion into E:\1tianque\StableDiffusion\stable-diffusion-webui\repositories\stable-diffusion-stability-ai...
Traceback (most recent call last):
File "E:\1tianque\StableDiffusion\stable-diffusion-webui\launch.py", line 380, in <module>
prepare_environment()
File "E:\1tianque\StableDiffusion\stable-diffusion-webui\launch.py", line 315, in prepare_environment
git_clone(stable_diffusion_repo, repo_dir('stable-diffusion-stability-ai'), "Stable Diffusion", stable_diffusion_commit_hash)
File "E:\1tianque\StableDiffusion\stable-diffusion-webui\launch.py", line 167, in git_clone
run(f'"{git}" clone "{url}" "{dir}"', f"Cloning {name} into {dir}...", f"Couldn't clone {name}")
File "E:\1tianque\StableDiffusion\stable-diffusion-webui\launch.py", line 113, in run
raise RuntimeError(message)
RuntimeError: Couldn't clone Stable Diffusion.
Command: "git" clone "https://github.com/Stability-AI/stablediffusion.git"Command: "git" clone "https://github.com/Stability-AI/stablediffusion.git" "E:\1tianque\StableDiffusion\stable-diffusion-webui\repositories\stable-diffusion-stability-ai"
Error code: 128
stdout: <empty>
stderr: Cloning into 'E:\1tianque\StableDiffusion\stable-diffusion-webui\repositories\stable-diffusion-stability-ai'...
fatal: unable to access 'https://github.com/Stability-AI/stablediffusion.git/': OpenSSL SSL_read: Connection was reset, errno 10054
**方法一:**按照上面 launch.py 的修改方法,把 github 地址替換成如下,再次雙擊 webui-user.bat 文件。
方法二:本地安裝
step1:從 launch.py 中找到要下載的依賴 github 地址;
step2:直接打開 github 鏈接並下載 zip 到本地後解壓 或 git clone 到指定目錄就行了。如針對示例裏的報錯的,可執行以下命令:git clone https://github.com/Stability-AI/stablediffusion.git E:/1tianque/StableDiffusion/stable-diffusion-webui/repositories/stable-diffusion-stability-ai
備註:如果是 zip 包解壓,stable-diffusion-stability-ai 文件夾下直接是 stablediffusion 的內容,不要多加 stablediffusion 文件夾,如下圖:
step3:所有依賴下載後的文件目錄結構
- pip3 安裝慢,換源
給 pip3 設置清華源
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
5. 配置中文包
如果你的英語還不錯,就直接跳過這一步吧,如果你的英語和我一樣稀爛,那麼可以考慮設置一箇中文包,具體步驟如下:
- 直接去 github 上下載來的快一些,打開命令行終端(或者直接打開網站 https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN 下載 zip 到 stable-diffusion-webui/extensions 目錄
)
cd ~/stable-diffusion-webui/extensions && git clone https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN.git
- 重新執行 webui.sh 訪問 http://127.0.0.1:7860,在出來的列表中如果可以找到 zh_CN Localization,就說明已經加載成功:
- 選擇 Settings,再按照如下順序點擊:
點擊上面的 Apply settings 按鈕,Reload UI,等待重啓結束後即可。
四、Stable-Diffusion-Webui 簡單使用說明
如何繪製 ai 圖像
配置好 Stable-Diffusion-Webui 環境之後,訪問 http://127.0.0.1:7860:
在 Prompt 文本框中填入引導詞:
Tall buildings, people bustling, heavy traffic, staggered light and shadow, the beauty of the city is conspicuous before.
隨後點擊右側 Generate 生成按鈕即可,這裏引導詞的意思是:高樓林立,人羣熙熙攘攘,車水馬龍,光影交錯,城市之美盡顯眼前。
注意引導詞需要使用逗號分隔。
後端開始進行訓練:
遺憾的是,引導詞不支持中文,但可以配置權重,數值從 0.1~100,默認狀態是 1, 低於 1 就是減弱,大於 1 就是加強:
(Tall buildings:1.1), people bustling(1.61),(heavy traffic:0.3),(staggered light and shadow:1.3)
Stable-Diffusion-Webui 也支持 Negative prompt(反向引導詞)。
就是用文字描述你不想在圖像中出現的東西:
對圖片進行去噪處理,使其看起來更像你的提示詞;同樣使其看起來更像你的反向提示詞。
同時觀察正方向兩者之間的差異,並利用它來產生一組對噪聲圖片的改變,將最終結果移向前者而遠離後者。
默認通用反向引導詞:
lowres,bad anatomy,bad hands,text,error,missing fingers, extra digit,fewer digits,cropped,worst quality, low quality,normal quality,jpeg artifacts,signature, watermark,username,blurry,missing arms,long neck, Humpbacked,missing limb,too many fingers, mutated,poorly drawn,out of frame,bad hands, owres,unclear eyes,poorly drawn,cloned face,bad face
除了引導詞,還可以調整採樣迭代步數 (Sampling Steps)。
系統先隨機生成一個基礎的圖片,然後一步步的調整圖片,向引導詞 Prompt 靠攏
Sampling Steps 參數就是告訴人工智能,這樣的步驟應該進行多少次。
次數越多,每一步訓練也就越小越精確。當然了,成本也會越高,同時每一次訓練的時間也會成同比增長。
除了迭代步數,也可以自由地選擇採樣方法(Sampling method)
也就是讓 Stable-Diffusion-Webui 具體使用用什麼算法來訓練圖片模型。
默認算法是 Euler a :富有創造力,不同步數可以生產出不同的圖片。但是超過 30 步左右基本就沒有實質化的增益效果。
Euler 算法:最簡單的算法,訓練速度也是最快的。
LMS 算法:Euler 的延伸算法,相對更穩定一點,30 步就比較穩定了
PLMS:優化過的 LMS 算法
其他的一些參數:
生成批次 Batch count/n_iter:同樣的配置,循環跑幾次
每批數量 Batch size:同時生成多少個圖像,增加這個值可以並行運行,但也需要更多的顯卡顯存。
提示詞相關性 CFG Scale:圖像與引導詞匹配程度。增加這個值將導致圖像更接近引導詞,但過高會讓圖像色彩過於飽和。一般在 5~15 之間爲好,7,9,12 是 3 個常見的設置值。
寬度 X 高度 Width X Height:單位是像素,適當增加尺寸,後臺會試圖填充更多的細節進來。
Stable-Diffusion-Webui 配置底模型說明
如果需要一些比較有個性定製化模型,可以在 http://civitai.com 平臺進行挑選和下載,需要注意的是,該平臺上的模型魚龍混雜,良莠不齊,不能說是蔚爲大觀,但多多少少有點泥沙俱下的意思,所以最好不要在比較正式的公共 (工作) 環境打開該平臺,否則結果可能會令人非常尷尬。
stable diffusion 提供了一系列的模型:
- stable-diffusion-v1-4
擅長繪製風景類畫,整體偏歐美風,具有劃時代意義
- stable-diffusion-v1-5
同上,但生成的作品更具藝術性
- stable-diffusion-2
圖像生成質量大幅提升,原生支持 768x768 等
- waifu-diffusion
設定隨機種子後,每次將生成相同的圖像,無隨機性,可方便復現
下載上述模型,將模型放到目錄 / stable-diffusion-webui/models/Stable-diffusion 下,如果 UI(前面所述的軟件界面)是打開的,可按照如下順序點擊生效:
其中 Stable-Diffusion-Webui 默認下載的基礎模型在項目目錄的 models/Stable-diffusion 文件夾中:
/stable-diffusion-webui/models/Stable-diffusion
模型名稱是 v1-5-pruned-emaonly.safetensors,體積是 4.27GB。
這裏我們選擇相對比較潮流的賽博朋克風格模型:https://civitai.com/models/1102/synthwavepunk
將下載的模型放入 models/Stable-diffusion 目錄。
隨後重啓 Stable-Diffusion-Webui 服務:
cd ~/stable-diffusion-webui/ && ./webui.sh
可以看到能夠選擇新的模型
引導詞:
concept art, 4k, intricate, pinup, a woman, beautiful face, embroidery, lace, hyper-realistic, highly detailed, octane render, concept art, smooth, 8k, dancing princess, snthwve style, nvinkpunk, by jeremy mann, by sandra chevrier, by dave mckean and richard avedon and maciej kuciara
訓練結果:
還有很多好玩的模型,更多使用技巧還需要慢慢研究,最後,一起和 AI 愉快的玩耍吧!但是很費資源,要想馬兒跑得快,最好是上 GPU。
推薦幾個網址
下模型的 C 站:https://civitai.com/
下模型的 huggingface:https://huggingface.co/
tag 標籤超市:https://tags.novelai.dev/
Stable Diffusion 法術解析:https://spell.novelai.dev/
參考文檔:
https://zhuanlan.zhihu.com/p/610912951?utm_id=0
https://blog.csdn.net/qq_19072921/article/details/129194678
公衆號:運維開發故事
github:https://github.com/orgs/sunsharing-note/dashboard
博客**:https://www.devopstory.cn**
愛生活,愛運維
我是冬子先生,《運維開發故事》公衆號團隊中的一員,一線運維農民工,雲原生實踐者,這裏不僅有硬核的技術乾貨,還有我們對技術的思考和感悟,歡迎關注我們的公衆號,期待和你一起成長!
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/RnRc5fwA6wiUKH8OhPlqtw