我從小特別羨慕會畫畫的伙伴。他們能夠?qū)⑿闹械南敕ó嫵鰜?,而我最高水平的肖像畫是丁老頭。但在接觸 Stable Diffusion 之后,我感覺自己脫胎換骨,給自己貼上了「會畫畫」的新標(biāo)簽。
丁老頭進(jìn)化旅程
Stable Diffusion 是一個「文本到圖像」的人工智能模型,也是唯一一款開源且能部署在家用電腦(對硬件要求不高)上的 AI 繪圖工具。使用 Stable Diffusion,你可以在擁有 6GB 顯存顯卡,16GB 內(nèi)存或只依賴 CPU 的電腦上生成圖像,并且僅需幾秒鐘的時間,無需進(jìn)行預(yù)處理或后處理。
想要體驗 AI 繪圖,你可以使用在線工具 Hugging Faceopen in new window、DreamStudioopen in new window 或百度文心open in new window。但相對于本地部署來說,Hugging Face 需要排隊,生成一張圖約 5 分鐘;DreamStudio 可以免費(fèi)生成 200 張圖片,之后需要繳費(fèi);百度文心能用中文生成圖片,但仍處于 beta 階段,未正式商用。此外,這些在線工具的圖片調(diào)整功能比較有限,無法批量生成圖片,只適用于測試和體驗。
如果你需要生成大量的 AI 圖片,可以通過 Docker Desktop 將 Stable Diffusion WebUI Dockeropen in new window 部署到家用電腦上,從而實現(xiàn)免費(fèi)的 AI 文字繪畫,并擺脫在線工具的限制。對于 Mac 用戶,推薦選擇 Stable Diffusion 的 invoke 分支,如果在部署過程中出現(xiàn)錯誤,你可以參考 InvokeAI 文檔open in new window進(jìn)行排查。對于 M1/M2 Mac 用戶,推薦使用更簡便的 CHARL-Eopen in new window 或 DiffusionBeeopen in new window。
Stable Diffusion 部署流程
以 Windows 平臺為例,本文將依次介紹 Docker 環(huán)境配置、Stable Diffusion 安裝及基本使用方法。
#Docker 環(huán)境配置
本方案基于 Docker 配置,Docker 實質(zhì)上是在運(yùn)行的 Linux 系統(tǒng)中創(chuàng)建了一個隔離的文件環(huán)境。因此,Docker 必須部署在基于 Linux 內(nèi)核的系統(tǒng)上。[1] 對于 Mac 用戶,無需特別配置即可使用。而對于 Windows 用戶,若想部署 Docker,則需要安裝一個虛擬 Linux 環(huán)境,配置 WSL 或啟用 Hyper-V 二選一。我推薦使用 Windows 子系統(tǒng) WSL,它需要占用系統(tǒng)盤 30G 的空間。
#安裝 WSL
在管理員 PowerShell 輸入命令 wsl --install
,之后終端會默認(rèn)安裝 Ubuntu。系統(tǒng)下載時間較長,注意別關(guān)機(jī)。[2] 安裝 Ubuntu 完成后,按提示設(shè)置 Ubuntu 賬戶和密碼。
#啟用 Hyper-V
以管理員身份打開 PowerShell 控制臺,輸入命令 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
。[3] 重啟電腦后,將開啟 Hyper-V。
#Linux 路徑(Windows)
配置 WebUI Docker 要進(jìn)入 Linux 環(huán)境,因此 Windows 用戶需要將其路徑轉(zhuǎn)換為 Linux 路徑。而 Mac 和 Linux 用戶則可以忽略此步驟。
假設(shè)容器位于 D:\Desktop\stable-diffusion-webui-docker
:
- 把磁盤符號改為小寫,轉(zhuǎn)換為
d:\Desktop\stable-diffusion-webui-docker
- 添加
/mnt/
前綴,轉(zhuǎn)換為/mnt/d:\Desktop\stable-diffusion-webui-docker
。因為 Windows 本地磁盤是掛載在 Linux 的 mnt 目錄下的。 - 將反斜扛
\
替換為/
。最終得到 Linux 路徑/mnt/d:/Desktop/stable-diffusion-webui-docker
。
#配置 Stable Diffusion
#安裝 Docker Desktop
按平臺選 Docker Desktopopen in new window 版本,安裝后點擊左側(cè)的 Add Extensions,推薦安裝 Disk usage 擴(kuò)展,這將便于管理 Docker 的存儲空間。
注意
Docker Desktop 4.17.1 存在 bug,可能會導(dǎo)致 Attaching to webui-docker-auto-1
報錯。建議升級 Docker Desktop 4.18.0 或降級到更早版本。
#下載 WebUI Docker
下載 Stable Diffusion WebUI Docker 配置包open in new window或阿里云盤聚合版open in new window(定期更新),然后將其解壓到指定路徑。聚合版包括相關(guān)依賴和模型,因此文件較大。如果需要更新 Stable Diffusion WebUI Docker,你可以按照上述步驟重新構(gòu)建容器。
#分支介紹
目前,Stable Diffusion 有 sygil、auto、auto-cpu 和 invoke 四個分支。如果需要更換分支,可以修改鏡像構(gòu)建命令 docker compose --profile [ui] up --build
中的 [ui]
,將其替換為所需的鏡像名即可。原先的 hlky
分支已經(jīng)更名為 sygil
,lstein
分支更名為 invoke
。
-
sygil:界面直觀,最高分辨率為 1024x1024,鏡像構(gòu)建命令為
docker compose --profile sygil up --build
。 -
auto(推薦):設(shè)置模塊最豐富,顯示繪畫過程,支持隨機(jī)插入藝術(shù)家、參數(shù)讀取和否定描述,最高分辨率為 2048x2048(高分辨率對顯存要求更高),鏡像構(gòu)建命令為
docker compose --profile auto up --build
。默認(rèn)使用 6GB 以上的顯存,如果你的顯卡內(nèi)存較低,則將配置中的--medvram
改為--lowvram
。A 卡用戶注意修改顯卡設(shè)置open in new window。 -
auto-cpu:唯一不依賴顯卡的分支。如果沒有符合要求的顯卡,可以使用 CPU 模式,內(nèi)存配置需滿足 16G 以上,構(gòu)建鏡像的命令為
docker compose --profile auto-cpu up --build
。 -
invoke:cli 端非常成熟,WebUI 端參數(shù)較少,能自動讀取圖片記錄,適合無進(jìn)階需求的新手和 Mac 用戶使用,鏡像構(gòu)建命令為
docker compose --profile invoke up --build
。
#構(gòu)建 Stable Diffusion
在啟動 Docker Desktop 后,打開 WSL(Ubuntu)或 Mac 終端,輸入路徑切換命令 cd /mnt/d/Desktop/stable-diffusion-webui-docker
(路徑為 Stable Diffusion WebUI Docker 解壓文件目錄)。接著,輸入以下的部署命令:
# 自動下載采樣模型和依賴包
docker compose --profile download up --build
# 上方命令需要 20 分鐘或更長,完成后執(zhí)行鏡像構(gòu)建命令
docker compose --profile sygil up --build
# auto 是功能最多的分支,可以選擇 auto | auto-cpu | invoke | sygil | sygil-sl
等待構(gòu)建完成后,在終端中會提示訪問 http://localhost:7860/
,你就可以在本地電腦上用 AI 生成圖片了。[4]
#使用說明
以下示例以 sygil 分支為例,其他分支的主題界面略有不同,但在功能上并沒有根本性的差異。
#啟動 Stable Diffusion
- 打開 Docker Desktop。
- 在 Containers 中選中分支容器,點擊啟動。
- 瀏覽器中訪問
http://localhost:7860/
。
Docker Desktop 界面
#Text-to-Image
Text-to-Image 是 Stable Diffusion 依據(jù)文字描述來生成圖像的方法。對于崇尚空間結(jié)構(gòu)的畫作類型,如風(fēng)景、創(chuàng)意畫等,推薦使用豎圖或橫圖。對于人像類畫作,推薦使用 1:1 的方形圖像,否則可能會出現(xiàn)多個人臉疊加的情況。生成的圖片分辨率受到一定限制,你可以使用 Upscale 對結(jié)果圖片進(jìn)行放大處理。
Text-to-Image 界面
默認(rèn)情況下使用的是 Simple 簡單模式。如果你想要使用更多的功能,你可以點擊右側(cè)的 Advanced 按鈕,進(jìn)入進(jìn)階選項。在進(jìn)階選項中,你可以使用場景矩陣、面部修復(fù)和分辨率放大等多種高級功能。
#Image-to-Image
Image-to-Image 是依據(jù)文字描述和輸入源圖來生成相關(guān)圖像。如果輸入源圖是 Text-to-Image、素描或結(jié)構(gòu)畫,該模式可充分填充圖像細(xì)節(jié)。而如果輸入源圖是細(xì)節(jié)充分的照片,生成的結(jié)果與原圖差異較大。此外,你還可以限定區(qū)域來生成圖像,這非常適合進(jìn)行圖像修改。
Image-to-Image 界面
CLIP interrogator 會根據(jù)圖像來生成文字描述。Denoising Strength 指與原圖的差異度,建議設(shè)置在 0.75-0.9 之間。若要魔改圖片,可將 Denoising Strength 設(shè)為 0.5 或以下。下圖中的 Denoising Strength 只有 0.44,整體圖片結(jié)構(gòu)及要素未變,但結(jié)果如何,你看到了。
超級魔改圖片
Image-to-Image 還可以用來移除、替換或修復(fù)圖像,甚至可以將源圖作為結(jié)果圖的一部分,利用 Stable Diffusion 擴(kuò)展繪畫。
#Image Lab
Image Lab 有批量修正面孔和放大圖片分辨率的功能。
Fix Faces 是通過 GFPGAN 模型來改善圖片中的面孔,Effect strength 滑塊可以控制效果的強(qiáng)度。但實際效果別報太高期許,下圖右側(cè)開啟了 Fix Faces,只能說勉強(qiáng)有了五官。
A woman flying in the air laughing
Upscale 可以通過 RealESRGAN、GoBIG、Latent Diffusion Super Resolution 和 GoLatent 四種模型來放大圖片分辨率。其中,RealESRGAN 有普通和卡通兩種模式,你可以根據(jù)需要進(jìn)行選擇。放大圖片主要消耗 CPU 和內(nèi)存資源。
#參數(shù)解釋
#Classifier Free Guidance
Classifier Free Guidance (CFG) 的默認(rèn)值為 7。數(shù)字越小,創(chuàng)作自由度越高,模型與 Prompt 相關(guān)性越低。CFG 參數(shù)不影響所需的 VRAM 或生成時間。
- CFG 2-6:雖然有創(chuàng)意,但可能不符合提示。
- CFG 7-10:這些提示適用于大多數(shù)情況,既富有創(chuàng)意又具有指導(dǎo)性。
- CFG 10-15:當(dāng)你確信 Prompt 足夠好、足夠具體時可以使用。
- CFG 16-20:除非提示非常詳細(xì),否則不建議使用。這可能會影響連貫性和質(zhì)量。
#Step
Step(采樣步長/精度)的默認(rèn)值為 50。Stable Diffusion 通過充滿噪音的畫布開始創(chuàng)建圖像,并逐步去噪以達(dá)到最終輸出。Step 參數(shù)控制這些去噪步驟的數(shù)量。通常情況下,越高越好。對于初學(xué)者來說,建議使用默認(rèn)值。Step 參數(shù)不影響所需的 VRAM,但 Step 數(shù)值的變化會與生成圖像的時間成正比。
#Seed
Seed(種子)的默認(rèn)值為 -1,代表隨機(jī)值。Seed 是控制初始噪聲的數(shù)字,在其他參數(shù)固定的情況下,每次生成的圖像都會不同,這就是種子的作用。如果你保持提示、種子和所有其他參數(shù)不變,你可以得到相同的結(jié)果。如果一個 Seed 生成了高質(zhì)量圖片,保存該 Seed 并將其應(yīng)用到其他圖片上,以保持高質(zhì)量。
#Sampler
Sampling method/Diffusion Sampler(擴(kuò)散采樣器)是用來在生成圖像過程中對圖像進(jìn)行去噪的方法。由于不同的擴(kuò)散采樣器在計算圖像下一步的方式不同,因此它們需要不同的持續(xù)時間和步驟來生成可用的圖像。建議初學(xué)者使用 DDIM,因為它速度快,通常只需要 10 步就能生成好的圖像,因此可以很容易和快速地進(jìn)行試驗和改進(jìn)。
#文字描述圖像
Stable Diffusion 通過英文文字內(nèi)容來描述場景或物體,以此來決定生成的圖像中會出現(xiàn)什么。文字描述是決定圖像生成質(zhì)量的關(guān)鍵因素。[5]
樣例:A beautiful painting {畫作種類} of a singular lighthouse, shining its light across a tumultuous sea of blood {畫面描述} by greg rutkowski and thomas kinkade {畫家/畫風(fēng)}, Trending on artstation {參考平臺}, yellow color scheme {配色}
。[6]
描述圖像需要多種描述,因此我開發(fā)了一個開源工具 IMGPromptopen in new window,以便生成圖像提示詞。
#常規(guī)描述
- 輸入圖像的對象、主體,比如一只熊貓、一個持劍的戰(zhàn)士,不要描述動作、情緒和事件;[7]
- 圖像種類:一幅畫(a painting of + raw prompt)還是一張照片(a photograph of + raw prompt),或者 Watercolor(水彩)、Oil Paint(油畫)、Comic(漫畫)、Digital Art(數(shù)碼藝術(shù))、Illustration(插畫)、realistic painting(寫實畫)、photorealistic(寫實照片)、Portrait photogram(肖像照)、Low Poly(低面建模)、3D Item Rende(三維渲染)、sculpture (雕塑) 等等,圖像種類可以疊加。
-
畫家/畫風(fēng):建議混合多個畫家的風(fēng)格,比如
Studio Ghibli, Van Gogh, Monet
,或描述風(fēng)格種類,比如very coherent symmetrical artwork
,將作品結(jié)構(gòu)設(shè)為「連貫且對稱」。 - 色調(diào):yellow color scheme 指整個畫面的主色調(diào)為黃色。
-
參考平臺:Trending on ArtStation,也可以替換為「Facebook」「Pixiv」「Pixbay」等。
#特征描述
除畫面主體外,可以用其他具象物體和形容詞來填充畫面細(xì)節(jié)。描述詞要具體,講出你要的物體和它的特征。
- 次要元素:物體不要太多,兩到三個就好。若要特別強(qiáng)調(diào)某個元素,可以加很多括號或者驚嘆號,比如
beautiful forest background, desert!!, (((sunset)))
中會優(yōu)先體現(xiàn)「desert」和「sunset」元素。 - 人物特征:
detailed gorgeous face, delicate features, elegant, Googly Eyes, Bone, big tits, silver hair, olive skin, Mini smile
; - 特定潤色:
insanely detailed and intricate, gorgeous, surrealism, smooth, sharp focus, Painting, Digital Art, Concept Art, Illustration, Artstation, in a symbolic and meaningful style, 8K
; - 光線描述:
Natural Lighting, Studio Lighting, Cinematic Lighting, Crepuscular Rays, X-Ray, Backlight
; - 鏡頭視角:
Cinematic, Magazine, Golden Hour, F/22, Depth of Field, Side-View
,虛化背景Bokeh
; - 畫面質(zhì)量:
professional, award winning, breathtaking, groundbreaking, superb, outstanding
,或虛幻引擎Unreal Engine
; - 其他描述:細(xì)節(jié)和紋理、物體占據(jù)畫面的大小、年代、渲染 / 建模工具等,比如 Vivid Colors(艷麗色彩)。
#prompt 權(quán)重
假設(shè)你在提示詞中使用了 mountain
,生成的圖像很可能會有樹。但如果你想要生成沒有樹的山的圖像,可以使用 mountain | tree:-10
。其中 tree:-10
表示對于樹的權(quán)重非常負(fù),因此生成的圖像中不會出現(xiàn)樹。通過權(quán)重詞,我們還能生成更復(fù)雜的圖像,例如 A planet in space:10 | bursting with color red, blue, and purple:4 | aliens:-10 | 4K, high quality
。[8]
Prompt 中的詞語順序代表其權(quán)重,越靠前權(quán)重越大。如若某物未出現(xiàn)在圖像中,可以將該名詞放在首位。
#否定提示
auto/auto-cpu 分支中可以設(shè)置 Negative prompt(否定提示),以避免畫面中出現(xiàn)指定元素。
- 修正畸形:
disfigured, deformed hands, blurry, grainy, broken, cross-eyed, undead, photoshopped, overexposed, underexposed, lowres, bad anatomy, bad hands, extra digits, fewer digits, bad digit, bad ears, bad eyes, bad face, cropped: -5
。 - 避免裸體:
nudity, bare breasts
。 - 避免黑白照:
black and white,monochrome
。
#prompt 參考
除畫面主體描述外,其他要素并非必須。如果你只是簡單嘗試,輸入主體「apples」即可。
如果你不知道生成什么圖像,可以使用 promptoMANIAopen in new window 、WEIRD WONDERFUL AI ARTopen in new window 按提示組合描述,或參考 AI 圖庫 PromptHeroopen in new window 和 OpenArtopen in new window 上其他人分享的成品圖和描述文案,比如
goddess close-up portrait skull with mohawk, ram skull, skeleton, thorax, x-ray, backbone, jellyfish phoenix head, nautilus, orchid, skull, betta fish, bioluminiscent creatures, intricate artwork by Tooth Wu and wlop and beeple, highly detailed, digital painting, Trending on artstation, very coherent symmetrical artwork, concept art, smooth, sharp focus, illustration, 8k
#Prompt matrix
Prompt matrix 是 sygil 分支的功能,可以按不同條件組合生成多張相關(guān)但不同的畫面,適合用于制作視頻素材。[9] 此時,批次數(shù)量的設(shè)置會被忽略。如果你對將圖像轉(zhuǎn)化為視頻有興趣,可以嘗試使用 Deforum Stable Diffusion Local Versionopen in new window。
A BiliBili video
上方視頻的調(diào)教詞為 A mecha robot in World War II in realistic style|Shoot with another mecha robot|Bombed by planes|Missile drop|broken|Repaired|cinematic lighting
。|
符號后的場景條件將進(jìn)行排列組合,視頻樣例有 6 個場景條件生成 64 張圖。
另外,我們可以指定場景條件位置,比如 @(moba|rpg|rts) character (2d|3d) model
表示 (moba|rpg|rts 三選一) character (2d|3d 二選一) model
,也就是會生成 3*2 張圖片。開頭的 @
是觸發(fā)指定場景條件位置的符號,不能省略。
#Textual Inversion
Textual Inversion(文本倒置)是 auto/auto-cpu 分支提供的功能,可以個人定制單詞在模型中的含義。比如大眾模型中醫(yī)生多是白人男性,而我們可以輸入 5 張亞洲女性照片并將其與 doctor 關(guān)聯(lián),經(jīng)過 Textual Inversion 處理后的模型生成的醫(yī)生形象將以亞洲女性為主。[10]
Textual Inversion 定制流程:
- Preprocess images:設(shè)置源圖目錄和輸出目錄。
- Create embedding(新建嵌入):建立模型屬性。
- 待續(xù)。
#常見問題
#Docker Desktop failed
未正常安裝/關(guān)閉 Docker 容器時,可能會報錯 Docker Desktop failed to start/stop
。
先刪除 %AppData%
路徑下的 Docker 文件夾,然后在 PowerShell 中輸入下方命令,關(guān)閉 WSL 和 docker-desktop。最后,手動重啟 Docker Desktop。
wsl --shutdown
wsl -l -v
wsl --unregister docker-desktop
wsl -l -v
#Docker Desktop cannot start
Hardware assisted virtualization and data execution protection must be enabled in the BIOS
報錯說明電腦沒開啟虛擬化。
在開機(jī)的時候多按幾次 F2
或 DEL
進(jìn)入 BIOS,然后設(shè)置中開啟「Intel Virtual Technology」,AMD 則是將「SVM Support」設(shè)置為設(shè)置為「Enable」的狀態(tài);最后點擊「F10」保存退出即可。
#docker 命令失敗
The command 'docker' could not be found
說明當(dāng)前命令行確實 Docker 環(huán)境缺失,檢查 Docker Desktop 是否啟動。
#exited with code 137
通常來說,exited with code 137
意味著內(nèi)存不足,超出內(nèi)存限制導(dǎo)致進(jìn)程被關(guān)閉。建議硬件配置最低為 16G 內(nèi)存,尤其是在使用 auto-cpu 模式時。
#端口訪問被拒
Docker 容器原本運(yùn)行正常,端口訪問突然被拒絕了,顯示 Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:7860 -> 0.0.0.0:0: listen tcp 0.0.0.0:7860: bind: An attempt was made to access a socket in a way forbidden by its access permissions
。
在 Powershell 中輸入 netsh int ipv4 show excludedportrange protocol=tcp
檢查是否處于被排除端口范圍,然后輸入 reg add HKLM\SYSTEM\CurrentControlSet\Services\hns\State /v EnableExcludedPortRange /d 0 /f
開啟端口。操作完成后,重啟電腦即可解封端口。[11]
#FileNotFoundError
再次架構(gòu)容器時報錯 FileNotFoundError: [Errno 2] No such file or directory: '/models/model.ckpt'
,這是架構(gòu)位置錯誤導(dǎo)致的。此時,我們需要檢查是否通過 WSL 輸入的架構(gòu)命令,并且 Stable Diffusion WebUI Docker 解壓路徑是否配置正確。
#采樣模型
采樣模型是 AI 繪畫的核心。2022.09.10 已支持自動下載采樣模型,下方列表僅做參考。文章來源:http://www.zghlxwxcb.cn/news/detail-438483.html
-
Stable Diffusion v1.4 (4GB)open in new window, 將壓縮包文件重命名為
model.ckpt
。 - (可選) GFPGANv1.4.pth (340MB)open in new window。
- (可選) RealESRGAN_x4plus.pth (64MB)open in new window 和 RealESRGAN_x4plus_anime_6B.pth (18MB)open in new window。
- (可選) LDSR (2GB)open in new window 和 LDSR 配置open in new window,分別重命名為
LDSR.ckpt
和LDSR.yaml
。
#最后
盡管 Stable Diffusion 目前還不能作為生產(chǎn)力工具,但它使設(shè)計變得更加簡單,也為普通人開啟了 AI 繪畫的可能性。建議你親自體驗,實際部署一下,讓自己擁有更多的可能性。文章來源地址http://www.zghlxwxcb.cn/news/detail-438483.html
到了這里,關(guān)于零基礎(chǔ)入門 Stable Diffusion - 無需顯卡把 AI 繪畫引擎搬進(jìn)家用電腦的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!