AI 本地模型 – Stable Diffusion

0. 前言


Stable Diffusion 在圖像生成領域長期展現卓越的成績,甚至引起繪畫市場的洗板與恐慌,如今已然到第三代。那如果只是基礎功能的使用,實際上不用費工的安裝 Web UI 並透過 API 進行呼叫。

在本篇文章我們將探討在不安裝 AUTOMATIC1111 的 Web UI 的情況下,如何在專案中直接使用。

1. 重點


需要準備至少 7 GB 的磁碟空間

2. 內容


2.1. 準備環境

各位可以回顧【PyTorch 環境安裝】事前在 venv 中安裝所需之環境。

由於 SD2 與 SD3 擁有極大的 GPU 要求,範例這邊採用基礎的 SDXL 1.0,從官方的範例稍作修改增加更多的調整項目。

Python
from diffusers import AutoPipelineForText2Image
import torch

pipeline_text2image = AutoPipelineForText2Image.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16,
    variant="fp16",
    use_safetensors=True,
).to("cuda")

# The positive prompt
pos_prompt = "Futuristic city skyline with flying cars, cutting-edge AI technology, holographic interfaces, sleek designs, vibrant and glowing, 8k, highly detailed"
# The negative prompt
neg_prompt = "dystopian, dark, old technology, broken machines, messy environment"

# The number of denoising steps
num_inference_steps = 20
#
guidance_scale = 7.0
# The size of the result
width = 768
height = 768
# The number of images generated
num_images_per_prompt = 1


image = pipeline_text2image(
    prompt=pos_prompt,
    negative_prompt=neg_prompt,
    guidance_scale=guidance_scale,
    width=width,
    height=height,
    num_inference_steps=num_inference_steps,
    num_images_per_prompt=num_images_per_prompt,
).images[0]

image.save("result.png")

此時我們需要另外安裝 diffusers 套件,在專案 Terminal 內輸入以下指令進行安裝 or 更新。

Python
pip install -U diffusers

2.2. 嘗試生圖

在 HuggingFace 下載模型前,由於該模型屬於受管控的,我們必須填寫頂層的表單後才擁有權限使用。

在 CLU 有登入 HuggingFace 的情況下,複製剛才頁面上的程式實際跑一次,便會開始下載模型。設備偏弱的讀者可以另外調整圖片的寬高,減少系統的負擔,不過記得 SDXL 在 768 到 1024 pixels 的範圍效果較佳。

當完成後就能看看最終成效如何囉!

3. 後話


事實上 SDXL 還是多數用戶使用的模型,不僅僅在於設備的限制,同時也歸咎於【Civitai】過往累積的大量偏旁模型可以進行調整。

但總歸來說最基礎的引入就足以包辦許多的業務,雖然許多網頁提供免費生圖,但在開發層面則可以省下許多呼叫的生成費用。

4. 參考


[1] SDXL 1.0 — Official Docs on HuggingFace
https://huggingface.co/docs/diffusers/using-diffusers/sdxl

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.