如何在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/。如下圖
img
執行圖片紅框的命令,就完成了第一步
/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”插件即可開始下載。
img
完成下載后直接將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:
一般問題:
1.內存泄露,切換模型可能會爆容器的內存,終端顯示退出狀態碼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. 配置中文包
如果你的英語還不錯,就直接跳過這一步吧,如果你的英語和我一樣稀爛,那么可以考慮設置一個中文包,具體步驟如下:
1.直接去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
2.重新執行webui.sh訪問http://127.0.0.1:7860,在出來的列表中如果可以找到 zh_CN Localization,就說明已經加載成功:
3. 選擇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/
參考文檔: