Stable Diffusion 作為一款開源的圖片生成模型,提供了高度的客製化能力和豐富的功能。相較於線上服務,本地端佈署的 Stable Diffusion 擁有更大的彈性,使用者可以自由調整模型引數、使用社群開發的擴充功能,並根據需求進行模型微調。AUTOMATIC1111 Web UI 作為一個功能強大的介面,簡化了 Stable Diffusion 的操作流程,並提供了諸如提示詞編輯、Img2Img、圖片升頻等進階功能,讓使用者能更精確地控制影像生成過程。理解這些進階技術的原理和使用方法,對於提升生成圖片的品質和效率至關重要。
使用 Stability AI 服務的優缺點分析與 AUTOMATIC1111 Web 使用者介面介紹
Stability AI 服務的實作細節與限制
先前章節中,我們探討瞭如何使用 Stability AI 的 API 進行圖片生成。以下程式碼範例展示了該過程的關鍵步驟:
import base64
from IPython.display import Image, display
# 假設 response 是從 Stability AI API 獲得的回應
response = ...
# 建立儲存圖片的目錄
if not os.path.exists('out'):
os.makedirs('out')
image_paths = []
# 處理每個圖片
for i, image_data in enumerate(response['artifacts']):
# 設定檔案路徑
filename = f'out/image_{i}.png'
# 解碼 base64 圖片資料
image_bytes = base64.b64decode(image_data['base64'])
# 寫入檔案
with open(filename, 'wb') as f:
f.write(image_bytes)
# 將檔案路徑加入列表
image_paths.append(filename)
# 顯示第一張圖片(僅在 Jupyter Notebook 或 Google Colab 中有效)
display(Image(filename=image_paths[0]))
內容解密:
- 程式碼首先檢查是否存在名為
out的目錄,若無則建立該目錄以儲存生成的圖片。 - 對 API 回應中的每張圖片,程式碼會設定檔案名稱、解碼 base64 編碼的圖片資料,並將其寫入檔案。
- 每張圖片的檔案路徑都會被新增至
image_paths列表中。 - 在 Jupyter Notebook 或 Google Colab 環境中,程式碼會顯示列表中的第一張圖片。
然而,使用 Stability AI 服務存在一些缺點,例如對自定義設定的控制力不足。相較之下,開放原始碼的 Stable Diffusion 允許使用者修改模型的幾乎所有方面,並且可以利用社群開發的先進功能。此外,Stability AI 的服務可能會因應投資者、法律團隊和企業客戶的需求而變更或棄用某些功能或特性。
AUTOMATIC1111 Web 使用者介面:功能與優勢
對於重度使用 Stable Diffusion 的使用者,AUTOMATIC1111 Web 使用者介面是一個極具吸引力的選擇。該介面功能豐富,並且具備多個由社群開發的擴充功能。AUTOMATIC1111 是利用 Stable Diffusion 開放原始碼社群優勢的最佳途徑。
主要功能:
- 文字轉圖片(Text-to-Image)
- 圖片轉圖片(Image-to-Image)
- 圖片放大(Upscaling)
- 影像修復(Inpainting)
- 自定義模型的訓練與執行
使用者可以在 Hugging Face 和 Civitai 等社群平台上找到數千個公開分享的模型。然而,使用者需注意某些自定義模型可能包含不適合工作環境(NSFW)的內容。
在本地端安裝與執行 AUTOMATIC1111
要在本地端使用 AUTOMATIC1111,首先需要進行一些技術設定。建議參考 AUTOMATIC1111 Wiki 中的最新進行安裝。
安裝步驟(以 Windows 為例):
- 安裝 Python 3.10.6(選擇「Add to PATH」)和 Git。
- 開啟命令提示字元並執行
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui。 - 將下載的模型檔案(如
sd_xl_base_1.0.safetensors和sd_xl_refiner_1.0.safetensors)放入stable-diffusion-webui/models/Stable-diffusion資料夾中。 - 雙擊
webui-user.bat檔案並在瀏覽器中開啟顯示的網址(通常為http://127.0.0.1:7860)。
AUTOMATIC1111 安裝流程圖示
graph LR;
A[安裝 Python 和 Git] --> B[克隆 AUTOMATIC1111 儲存函式庫];
B --> C[下載 Stable Diffusion 模型];
C --> D[將模型放入指定資料夾];
D --> E[執行 webui-user.bat];
E --> F[在瀏覽器中開啟網址];
圖表翻譯: 此圖示呈現了安裝 AUTOMATIC1111 Web UI 的主要步驟,包括安裝必要的軟體、克隆儲存函式庫、下載模型、執行啟動指令碼等過程。
結語
AUTOMATIC1111 Web 使用者介面為使用者提供了對 Stable Diffusion 的高度自定義能力與豐富的功能,是進階使用者的理想選擇。雖然安裝過程需要一定的技術知識,但其靈活性和擴充性使其成為許多使用者的首選工具。未來,我們將進一步探討如何利用 AUTOMATIC1111 進行更複雜的圖片生成任務。
AUTOMATIC1111 Web 使用者介面進階操作
AUTOMATIC1111 Stable Diffusion Web UI 為使用者提供了豐富的影像生成與編輯功能,透過不同的引數設定與進階技巧,能夠實作更精確的影像控制。本章節將探討該介面的各項主要功能及其使用方法。
提示詞輸入與負向提示詞設定
在介面的主要輸入框中,使用者可以輸入正向提示詞以引導模型生成符合預期的影像。緊接著正向提示詞輸入框的是負向提示詞輸入區域,用於排除特定元素或概念,確保這些元素不會出現在生成的影像中(詳細的負向提示詞使用方法請參考第8章)。
介面下方提供了多項重要的引數設定:
- 種子值(Seed):設定為-1時,每次生成新的隨機影像。
- 取樣步數(Sampling Steps):控制模型生成影像的迭代次數。
- 批次數量(Batch Count):決定連續執行的生成次數。
- 批次大小(Batch Size):影響每次平行處理的影像數量(需足夠的VRAM支援)。
生成的影像可以直接從介面下載,或透過按鈕傳送至其他分頁檢視。預設情況下,所有輸出影像將儲存在 stable-diffusion-webui/outputs/ 目錄下,並按照生成方式(text2img或img2img)及日期進行分類別存放。
模型選擇與引數設定
當執行AUTOMATIC1111 Web UI時,所有已下載的模型將顯示在介面頂部的Stable Diffusion Checkpoint下拉選單中。使用者需要選擇適當的基礎模型,輸入提示詞並調整相關引數。對於SDXL模型,建議將影像大小設定為1024x1024,並將Refiner模組的「Switch at」引數設為1以僅執行基礎模型,如圖9-5所示。
取樣方法的選擇
取樣方法(Sampling Methods)是影響影像生成品質的重要引數,不同的方法在速度、品質和隨機性之間進行權衡:
- Euler方法:最簡單的取樣器,適合快速測試。
- DDIM方法:最早為擴散模型設計的取樣器,能提供不錯的生成效果。
- 帶有「a」的祖先取樣器(如Euler a):在生成過程中引入噪聲,導致結果具有較高的隨機性。
- DPM++ 2M Karras和UniPC取樣器:在20-30步的情況下能夠提供穩定且可重現的高品質影像。
- DPM++ SDE Karras或DDIM取樣器:在10-15步的情況下能夠生成更高品質但隨機性較強的影像。
CFG Scale引數詳解
CFG Scale(無分類別器指導強度)是控制模型對提示詞遵循程度的重要引數,其常見取值及對應效果如下:
| CFG Scale值 | 效果描述 |
|---|---|
| 1 | 基本忽略提示詞 |
| 3 | 允許模型較自由地發揮創意 |
| 7 | 在遵循提示詞和保持創意之間取得平衡 |
| 15 | 較嚴格地遵循提示詞 |
| 30 | 嚴格遵循提示詞內容 |
使用者亦可透過Height和Width引數調整生成影像的尺寸,並利用Batch Count控制生成影像的數量。此外,還有以下進階選項:
- 高解析度修復(Highres fix):使用升頻器生成更高解析度的影像。
- 面部修復(Restore faces):預設使用Codeformer模型修復Stable Diffusion常見的人臉缺陷。
- 可拼接影像(Tiling):生成可無縫拼接的影像紋理。
提示詞權重控制
AUTOMATIC1111支援透過括號語法實作提示詞權重的調整,類別似於Midjourney的使用方式。例如:
(pirate)將關鍵字權重提高約10%(1.1倍)。((pirate))將權重進一步提高至1.21倍(1.1 × 1.1)。(pirate:1.5)精確控制權重,使模型對該關鍵字的關注度提高50%。
相對地,使用方括號如 [pirate] 可降低關鍵字權重約10%(0.9倍)。此語法同樣適用於負向提示詞,用於更精細地控制不需要的元素。
進階技巧:提示詞編輯
進階使用者可利用提示詞編輯(Prompt Editing)功能,在擴散過程的不同階段切換不同的提示詞,從而實作對生成結果的精細控制。其語法格式為 [from:to:when],例如 [Emma Watson: Amber Heard: 0.5] 表示在擴散過程的中點從生成Emma Watson切換到Amber Heard,最終結果融合兩者的特徵。
實際範例操作
# 輸入範例
prompt = "Marilyn Monroe as a (pirate:1.5) on a desert island, detailed clothing, by Stanley Artgerm Lau and Alphonse Mucha"
negative_prompt = "racy, nudity, cleavage"
# 使用AUTOMATIC1111 API或指令碼執行生成任務
# 此處省略具體實作程式碼
圖9-6展示了上述輸入所生成的瑪麗蓮夢露海盜形象。
圖表翻譯:
此圖示說明瞭AUTOMATIC1111 Web UI的操作流程與主要功能分佈,包括提示詞輸入、引數設定區域以及輸出管理等關鍵部分,有助於讀者更直觀地理解介面操作邏輯。
graph LR
A[輸入提示詞] --> B[設定引數]
B --> C[選擇模型]
C --> D[執行生成]
D --> E[後處理最佳化]
E --> F[輸出結果]
圖表翻譯: 此圖表呈現了使用AUTOMATIC1111 Web UI進行影像生成的完整流程,從初始的提示詞輸入到最終的輸出結果,每一步驟均清晰標示,便於讀者理解整個操作的脈絡與關鍵節點。
自動化圖片生成技術進階:以Stable Diffusion為例
進階提示編輯技術
在圖片生成過程中,提示編輯(Prompt Editing)是一項進階技術,能夠深入影響擴散模型的內部運作機制。透過干預不同層對特定概念的反應,可以獲得創意十足的結果,但這需要深入瞭解模型運作原理並進行大量的試驗和錯誤修正。
混合概念生成
若要在兩個概念之間進行切換,可以使用語法 [Emma Watson|Amber Heard]。這種語法會在每一步驟中切換概念,最終產生混合效果。這種技術被視為一種進階技巧,專家可以利用它繞過某些生成難題。
例如,先生成模型容易處理的內容,然後在最後的細節階段切換到所需的目標內容。這種方法在某些情況下非常有效,但需要進行大量實驗才能獲得理想結果。
Img2Img 功能詳解
AUTOMATIC1111 網頁介面支援 Img2Img 功能(圖 9-8),這與 Midjourney 上傳圖片並搭配提示詞的功能相似。透過上傳圖片作為參考,Img2Img 賦予使用者對生成圖片的風格和構圖更大的控制權。
引數設定建議
要獲得良好的 Img2Img 結果,建議使用 Euler 取樣法、50 次取樣步驟,並將 CFG scale 設定在 20 至 30 之間。此外,denoising strength 引數控制了在原始圖片上新增的雜訊量:
- 設定為 0 時,不新增任何雜訊,輸出與輸入完全相同。
- 設定為 1 時,則完全替換為雜訊,等同於使用 Text2Image 功能。
通常需要同時調整 Denoising Strength、CFG scale 和 Seed 引數,並結合提示詞進行實驗,以獲得最佳效果。
實驗與引數調優
AUTOMATIC1111 提供了 X/Y/Z Plot 功能(圖 9-10),允許使用者同時測試多個引數的不同值組合,生成圖片網格以視覺化比較效果。這對於確定引數的最佳組態至關重要。
生成圖片品質評估
在本地執行 Stable Diffusion 的一大優勢是可以大規模生成不同引陣列合的圖片,從而直觀地評估各引數的影響及最佳組態。
中繼資料管理
AUTOMATIC1111 自動儲存每張生成圖片的中繼資料,包括使用的引數和提示詞。使用者可以透過 PNG Info 分頁(圖 9-11)讀取這些資訊,便於追溯和調整。
Resize Mode 選項說明
當上傳的圖片尺寸與目標尺寸不一致時,Resize Mode 提供多種處理選項:
- Just Resize:直接縮放圖片以符合目標尺寸,可能會改變長寬比。
- Crop and Resize:裁剪圖片以符合目標尺寸的長寬比。
- Resize and Fill:縮放圖片並填充空白區域。
- Just Resize (latent upscale):在潛在空間中縮放圖片。
圖片升頻技術詳解
AUTOMATIC1111 的 Img2Img 分頁提供了圖片升頻功能(Upscaling),允許使用者將圖片提升至更高的解析度。與 Midjourney 相比,這裡提供了更多的控制選項。
操作步驟
- 上傳待升頻的圖片。
- 在提示詞框中輸入如
highly detailed之類別的通用提示詞。 - 在 Scripts 下拉選單中選擇 SD Upscale 指令碼,並選擇合適的升頻器(upscaler)。
升頻器選擇
預設情況下,R-ESRGAN 4x+ 是一個不錯的選擇,但有時可能會使圖片呈現卡通化效果(圖 9-12)。使用者可以下載其他升頻模型(.pth 檔案)並放置於 ESRGAN 資料夾中,重啟介面後即可使用。
提示詞最佳化
適當調整提示詞有助於提升升頻效果,尤其是在細節保留和風格控制方面。但應避免使用原始生成時的提示詞,以免造成重複修復的效果。
結語
本章探討了 Stable Diffusion 的進階技術,包括提示編輯、Img2Img 功能、引數調優、圖片升頻等。這些技術賦予使用者更強大的控制能力,能夠生成更高品質和更具創意的圖片。然而,這些技術也需要大量的實驗和經驗積累,才能達到最佳應用效果。未來隨著技術的發展,我們可以期待更多創新性的應用出現。
隨著 AI 技術的不斷進步,Stable Diffusion 及相關工具將持續演化,提供更多創新的功能和應用場景。未來或許可以看到更多自動化和智慧化的工具,進一步簡化圖片生成的流程,並提升最終輸出的品質和創意性。
程式碼範例
# 以下是一個簡單的 Python 指令碼,用於呼叫 AUTOMATIC1111 的 API 進行 Img2Img 操作
import requests
# 設定 API 地址和引數
url = "http://localhost:7860/sdapi/v1/img2img"
payload = {
"init_images": ["base64_encoded_image_string"],
"prompt": "highly detailed",
"denoising_strength": 0.75,
"cfg_scale": 25,
"sampler_index": "Euler",
"steps": 50
}
# 傳送請求
response = requests.post(url, json=payload)
# 處理回應
if response.status_code == 200:
# 將生成的圖片儲存到本地
with open("output.png", "wb") as f:
f.write(response.content)
else:
print("Error:", response.status_code)
內容解密:
此指令碼展示瞭如何使用 Python 呼叫 AUTOMATIC1111 的 Img2Img API。首先,我們需要設定 API 的 URL 和請求引數,包括初始圖片、提示詞、denoising_strength、cfg_scale 等。接著,透過 requests.post 方法傳送請求。如果請求成功(狀態碼 200),則將傳回的圖片內容儲存到本地檔案 output.png 中。這種方式能夠靈活地整合 Img2Img 功能到自定義的工作流程中。
graph LR
B[B]
A[開始] --> B{檢查圖片}
B -->|合格| C[進行 Img2Img]
B -->|不合格| D[調整引數]
C --> E[生成圖片]
D --> B
E --> F[評估品質]
F -->|合格| G[儲存圖片]
F -->|不合格| D
圖表翻譯: 此流程圖展示了使用 Img2Img 功能生成圖片的過程。首先檢查輸入圖片是否合格,若合格則進行 Img2Img 操作;若不合格,則調整引數後重新檢查。生成圖片後進行品質評估,合格則儲存,不合格則再次調整引數。整個過程是一個持續最佳化的迴圈,直到獲得滿意的結果。