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]))

內容解密:

  1. 程式碼首先檢查是否存在名為 out 的目錄,若無則建立該目錄以儲存生成的圖片。
  2. 對 API 回應中的每張圖片,程式碼會設定檔案名稱、解碼 base64 編碼的圖片資料,並將其寫入檔案。
  3. 每張圖片的檔案路徑都會被新增至 image_paths 列表中。
  4. 在 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 為例):

  1. 安裝 Python 3.10.6(選擇「Add to PATH」)和 Git。
  2. 開啟命令提示字元並執行 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
  3. 將下載的模型檔案(如 sd_xl_base_1.0.safetensorssd_xl_refiner_1.0.safetensors)放入 stable-diffusion-webui/models/Stable-diffusion 資料夾中。
  4. 雙擊 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章)。

介面下方提供了多項重要的引數設定:

  1. 種子值(Seed):設定為-1時,每次生成新的隨機影像。
  2. 取樣步數(Sampling Steps):控制模型生成影像的迭代次數。
  3. 批次數量(Batch Count):決定連續執行的生成次數。
  4. 批次大小(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控制生成影像的數量。此外,還有以下進階選項:

  1. 高解析度修復(Highres fix):使用升頻器生成更高解析度的影像。
  2. 面部修復(Restore faces):預設使用Codeformer模型修復Stable Diffusion常見的人臉缺陷。
  3. 可拼接影像(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 StrengthCFG scaleSeed 引數,並結合提示詞進行實驗,以獲得最佳效果。

實驗與引數調優

AUTOMATIC1111 提供了 X/Y/Z Plot 功能(圖 9-10),允許使用者同時測試多個引數的不同值組合,生成圖片網格以視覺化比較效果。這對於確定引數的最佳組態至關重要。

生成圖片品質評估

在本地執行 Stable Diffusion 的一大優勢是可以大規模生成不同引陣列合的圖片,從而直觀地評估各引數的影響及最佳組態。

中繼資料管理

AUTOMATIC1111 自動儲存每張生成圖片的中繼資料,包括使用的引數和提示詞。使用者可以透過 PNG Info 分頁(圖 9-11)讀取這些資訊,便於追溯和調整。

Resize Mode 選項說明

當上傳的圖片尺寸與目標尺寸不一致時,Resize Mode 提供多種處理選項:

  1. Just Resize:直接縮放圖片以符合目標尺寸,可能會改變長寬比。
  2. Crop and Resize:裁剪圖片以符合目標尺寸的長寬比。
  3. Resize and Fill:縮放圖片並填充空白區域。
  4. Just Resize (latent upscale):在潛在空間中縮放圖片。

圖片升頻技術詳解

AUTOMATIC1111 的 Img2Img 分頁提供了圖片升頻功能(Upscaling),允許使用者將圖片提升至更高的解析度。與 Midjourney 相比,這裡提供了更多的控制選項。

操作步驟

  1. 上傳待升頻的圖片。
  2. 在提示詞框中輸入如 highly detailed 之類別的通用提示詞。
  3. 在 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_strengthcfg_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 操作;若不合格,則調整引數後重新檢查。生成圖片後進行品質評估,合格則儲存,不合格則再次調整引數。整個過程是一個持續最佳化的迴圈,直到獲得滿意的結果。