国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理

這篇具有很好參考價(jià)值的文章主要介紹了AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


大家好,我是風(fēng)雨無阻。


本文適合人群:

  • 想要了解AI繪圖基本原理的朋友。

  • 對Stable Diffusion AI繪圖感興趣的朋友。


本期內(nèi)容:

  • Stable Diffusion 能做什么

  • 什么是擴(kuò)散模型

  • 擴(kuò)散模型實(shí)現(xiàn)原理

  • Stable Diffusion 潛擴(kuò)散模型

  • Stable Diffusion文本如何影響圖片生成

  • Stable Diffusion Cross-attention 技術(shù)

  • Stable Diffusion noise schedule 技術(shù)

  • Stable Diffusion文生圖底層運(yùn)行演示


一、 Stable Diffusion能做什么


通過前面幾篇文章關(guān)于 Stable Diffusion 整合包的安裝、ControlNet插件的介紹使、sd模型的安裝和使用以及文生圖功能的介紹后,相信看過的朋友應(yīng)該都清楚的知道 Stable Diffusion 是做什么的吧?


對于新朋友,想詳細(xì)了解的話,請前往:

AI 繪畫Stable Diffusion 研究(一)sd整合包v4.2 版本安裝說明
AI 繪畫Stable Diffusion 研究(二)sd模型ControlNet1.1 介紹與安裝
AI 繪畫Stable Diffusion 研究(三)sd模型種類介紹及安裝使用詳解
AI 繪畫Stable Diffusion 研究(四)sd文生圖功能詳解(上)
AI 繪畫Stable Diffusion 研究(五)sd文生圖功能詳解(下)
AI 繪畫Stable Diffusion 研究(六)sd提示詞插件


這里再用最直白的話說一下:SD它是一個(gè)text-to-image模型 ,通過給定的 text prompt(文本提示詞),可生成一張匹配文本的圖片。


二、什么是擴(kuò)散模型


大家都經(jīng)常聽到有人說,Stable Diffusion是一種潛在擴(kuò)散模型(Diffusion Models)。

那我們先弄明白什么是擴(kuò)散模型?

為什么叫擴(kuò)散模型呢?因?yàn)樗臄?shù)學(xué)公式看起來非常像物理上的擴(kuò)散現(xiàn)象。


1、前向擴(kuò)散

假如我們訓(xùn)練一個(gè)模型如下:

AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


正如上圖所示,是一個(gè)前向擴(kuò)散的過程,它是在訓(xùn)練圖像上逐漸添加噪聲,最后變成完全隨機(jī)噪聲圖,并最終無法辨認(rèn)噪點(diǎn)圖對應(yīng)的初始圖片。


這個(gè)過程就像是一滴墨水滴在一杯清水里,會(huì)慢慢擴(kuò)散最終均勻分布在清水里一樣,且無法判斷它最初是從水杯的中心滴入,還是從邊緣滴入,擴(kuò)散這個(gè)名字就是這么來的。


2、反向擴(kuò)散


反向擴(kuò)散的思想是:輸入一張?jiān)朦c(diǎn)圖,反向擴(kuò)散(Reverse Diffusion),讓上述過程獲得逆向從隨機(jī)噪聲圖生成清晰圖像的過程。


從反向擴(kuò)散的角度來說,我們需要知道有多少“噪點(diǎn)”加入到了某張圖片里。


那么要知道答案的方式便是:訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)來預(yù)測添加的噪點(diǎn),這在SD里稱為噪點(diǎn)預(yù)測器(Noise Predicator),其本質(zhì)是一個(gè)U-Net模型。


訓(xùn)練流程為:

(1)、選擇一張訓(xùn)練圖(例如一張貓的圖片)

(2)、生成隨機(jī)的噪點(diǎn)圖

(3)、給這張圖繼續(xù)增加多輪噪點(diǎn)

(4)、訓(xùn)練Noise Predicator,預(yù)測加入了多少噪點(diǎn),通過神經(jīng)網(wǎng)絡(luò)訓(xùn)練權(quán)重,并展示其正確答案。


AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


反向擴(kuò)散訓(xùn)練的重點(diǎn)下圖中的噪聲預(yù)測器(Noise Predicator),它可以通過訓(xùn)練得出每次需要減掉的噪聲,每次需要減多少噪聲是預(yù)測出來的,從而實(shí)現(xiàn)還原清晰圖片的目的。


三、擴(kuò)散模型實(shí)現(xiàn)原理


擴(kuò)散模型(Diffusion Models)的成功,其實(shí)并非橫空出世,突然出現(xiàn)在人們的視野中。其實(shí)早在2015年就已有人提出了類似的想法,最終在2020年提出了擴(kuò)散模型的生成技術(shù)。


以下是擴(kuò)散模型推導(dǎo)公式:

AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


更詳細(xì)的原理:

參考:擴(kuò)散模型詳解原理+代碼


通過前面的介紹,我們大概明白了,什么是擴(kuò)散模型,但這并不是 Stable Diffusion的工作原理。

這是因?yàn)椋荷鲜鰯U(kuò)散過程是在圖片空間里完成的,無論是模型訓(xùn)練,還是生成圖片的過程,都是需要海量的算力支持和內(nèi)存需求。


想象一下:一張512 x 512的圖片(包含3個(gè)顏色通道:紅、綠、藍(lán)),它的空間是786432維,也就是說我們要為一張圖片指定這么多的值。因此,基本無法在單個(gè)GPU上運(yùn)行。


Stable Diffusion就是降低算力和內(nèi)存需求的一個(gè)解決方案。它讓Stable Diffusion在消費(fèi)級GPU上運(yùn)行成為了可能。


四、Stable Diffusion 潛擴(kuò)散模型

Stable Diffusion 它是一個(gè)Latent Diffusion Model(潛擴(kuò)散模型)。其方式是將圖片壓縮到一個(gè)“潛空間”(Latent Space)中,而不是在高維的圖片空間里工作。潛空間比圖片空間小了48倍,所以它可以節(jié)省大量計(jì)算,繼而運(yùn)行速度更快。


擴(kuò)散過程會(huì)分成很多步循環(huán),而每一步的過程如下圖所示,將文本描述、隱變量、步數(shù)等數(shù)值傳入U(xiǎn)Net,生成新的隱變量,而這個(gè)過程會(huì)涉及一些模型。

AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


在最后一步循環(huán),將隱特征經(jīng)由 Variational Autoencoder(VAE)解碼成圖像。

AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


這個(gè)過程的核心思想就是:壓縮圖像,它通過變分自編碼器 Variational Autoencoder(VAE)模型,把圖像壓縮到極致,我們把此類壓縮方式稱作降維,這種降維級別的壓縮不丟失重要信息。


經(jīng)過壓縮后,圖像被稱作低維潛在(Latent)“圖像”,作為U-net的輸入,去潛空間(Latent Space)里一步一步降噪后,完成反向擴(kuò)散的低維“圖片”還得通過VAE的解碼器,把圖像從潛空間轉(zhuǎn)換回像素空間(Pixel Space)。


VAE包含2部分:Encoder與Decoder。

  • Encoder將一張圖片壓縮到“潛空間”里的一個(gè)低維空間表示

  • Decoder從“潛空間”里的表示恢復(fù)為一張圖片

AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


下列代碼演示了VAE模型的使用方法,其中l(wèi)oad_vae為根據(jù)配置init_config去初始化模型,然后從預(yù)訓(xùn)練模型model.ckpt中讀取參數(shù),預(yù)訓(xùn)練模型的first_stage_model即指代VAE模型。


from ldm.models.autoencoder import AutoencoderKL
#VAE模型
def load_vae():
    #初始化模型
    init_config = {
        "embed_dim": 4,
        "monitor": "val/rec_loss",
        "ddconfig":{
          "double_z": True,
          "z_channels": 4,
          "resolution": 256,
          "in_channels": 3,
          "out_ch": 3,
          "ch": 128,
          "ch_mult":[1,2,4,4],
          "num_res_blocks": 2,
          "attn_resolutions": [],
          "dropout": 0.0,
        },
        "lossconfig":{
          "target": "torch.nn.Identity"
        }
    }
    vae = AutoencoderKL(**init_config)
    #加載預(yù)訓(xùn)練參數(shù)
    pl_sd = torch.load("model.ckpt", map_location="cpu")
    sd = pl_sd["state_dict"]
    model_dict = vae.state_dict()
    for k, v in model_dict.items():
        model_dict[k] = sd["first_stage_model."+k]
    vae.load_state_dict(model_dict, strict=False)

    vae.eval()
    return vae

#測試vae模型
def test_vae():
    vae = load_vae()
    img = load_image("girl_and_horse.png")  #(1,3,512,512)   
    latent = vae.encode(img).sample()       #(1,4,64,64)
    samples = vae.decode(latent)            #(1,3,512,512)
    save_image(samples,"vae.png")

test_vae()

五、Stable Diffusion 文本如何影響圖片生成


在 Stable Diffusion 模型中,prompt 是通過引導(dǎo)向量(guidance vector)來控制 U-Net 的。具體來說,prompt 會(huì)被編碼成一個(gè)文本嵌入向量(text embeddings),然后與其他輸入一起傳遞給 U-Net。

通過這種方式,prompt 能夠影響 U-Net 的輸出,從而在生成過程中引導(dǎo)模型產(chǎn)生符合預(yù)期的結(jié)果,即通過 prompt 產(chǎn)生我們想要的圖


在Stable Diffusion模型限制prompt在75個(gè)單詞。


下圖是文本提示詞(text prompt)如何處理并輸入到Noise Predictor的流程:


AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


根據(jù)上圖,我們可以看到這個(gè)流程:

首先,Tokenizer(分詞器)將每個(gè)輸入的單詞轉(zhuǎn)為一個(gè)數(shù)字,我們稱為token。

然后,每個(gè)token轉(zhuǎn)為一個(gè)768維的向量,稱為詞嵌入(embedding)。

最后,由Text Transformer處理詞嵌入,并可以被Noise predictor進(jìn)行消費(fèi)。


1、分詞器 (Tokenizer)

人類可以讀懂單詞,但計(jì)算機(jī)只能讀懂?dāng)?shù)字。所以這也是為什么文本提示詞首先要轉(zhuǎn)為單詞。

文本提示詞(text prompt)首先由一個(gè)CLIP tokenizer做分詞。

CLIP是一個(gè)深度學(xué)習(xí)模型,由Open AI開發(fā),用于為任何圖片生成文本描述。


以下是CLIP具體的實(shí)例

展示了如何將文本“蘋果”通過CLIP技術(shù)轉(zhuǎn)化為能輸入到神經(jīng)網(wǎng)絡(luò)中訓(xùn)練的tokens數(shù)據(jù)。

這里使用Python和OpenAI庫來實(shí)現(xiàn)。


(1)、安裝依賴庫

pip install torch openai

(2)、導(dǎo)入相關(guān)庫

import torch import openai

(3)、加載CLIP模型

model, preprocess = openai.clip.load("ViT-B/32")

(4)、準(zhǔn)備輸入文本

text_description = "蘋果"

(5)、將文本轉(zhuǎn)換為tokens

使用CLIP模型的tokenize方法將文本轉(zhuǎn)換為tokens

text_tokens = openai.clip.tokenize(text_description)

這里,text_tokens是一個(gè)PyTorch張量,形狀為(1, N),其中N是文本描述中的token數(shù)量。

在這個(gè)例子中,N=3,因?yàn)?蘋果"被分成了3個(gè)tokens。


(6)、 查看tokens

print(f"Tokens: {text_tokens}")

輸出結(jié)果可能類似于:

Tokens: tensor([[49406, 3782, 49407]])

這里,49406表示開始符號(start-of-sentence),3782表示“蘋果”,49407表示結(jié)束符號(end-of-sentence)。

通過以上步驟,我們將文本“蘋果”轉(zhuǎn)換為了tokens。


PS:

  • Stable Diffusion v1使用了CLIP模型的tokenizer

  • Tokenizer只能將其在訓(xùn)練過程中見到過的單詞進(jìn)行分詞

    例如:假設(shè)CLIP模型里有“dream”與“beach”單詞,但是沒有“dreambeach”單詞。

    Tokenizer會(huì)將“dreambeach”分成2個(gè)單詞“dream”與“beach”。

  • 1個(gè)單詞并非代表1個(gè)token,而是有可能進(jìn)一步進(jìn)行拆分

  • 空格也是token的一部分

    例如:短語 “dream beach” 產(chǎn)生了兩個(gè)token “dream” 和 “[space]beach”。

    這些標(biāo)記與 “dreambeach” 產(chǎn)生的標(biāo)記不同,后者是 “dream” 和 “beach”(beach 前沒有空格)。


2、詞嵌入(Embedding)


(1)、為什么需要詞嵌入(Embedding)?

因?yàn)橛行﹩卧~相互之間是非常相似,我們希望利用到這些語義信息。


例如:

man、gentleman、guy的詞嵌入是非常相近的,因此它們可以相互替換。

Monet、Manet以及Degas都以印象派的風(fēng)格繪畫,但是方式各不相同。

這些名字看起來是非常相似,但是在詞嵌入(Embedding)里是不一樣的。


(2)、詞嵌入(Embedding) 是如何工作的?


Embedding 將輸入的tokens轉(zhuǎn)換為一個(gè)連續(xù)的向量來表示,這個(gè)向量可以捕捉文本中的語義信息。在我們的例子中,"蘋果"的tokens經(jīng)過CLIP模型的encode_text方法后,會(huì)得到一個(gè)特征向量。


這個(gè)特征向量是一個(gè)高維空間中的點(diǎn),通常具有固定的維度(在CLIP模型中,維度為512)。請注意,由于模型權(quán)重和隨機(jī)性的原因,每次運(yùn)行時(shí)生成的特征向量可能略有不同。以下是一個(gè)示例輸出:


print(f"Text features: {text_features}")

輸出結(jié)果可能類似于:

Text features: tensor([[-0.0123,  0.0345, -0.0678, ...,  0.0219, -0.0456,  0.0789]])

這里,text_features是一個(gè)形狀為(1, 512)的PyTorch張量,其中包含了“蘋果”這個(gè)詞的向量表示。神經(jīng)網(wǎng)絡(luò)可以利用這個(gè)向量表示進(jìn)行訓(xùn)練和預(yù)測任務(wù)。


Stable diffusion v1使用Open AI的ViT-L/14模型,詞嵌入為768維的向量。


3、文本轉(zhuǎn)換器(text transformer)


(1)、為什么需要text transformer ?


既然通過embedding后可以直接輸入到模型中進(jìn)行訓(xùn)練,為何在stable diffusion中還需要將embedding通過text transformer轉(zhuǎn)換后再作為模型的輸入呢?


這是因?yàn)镾table Diffusion模型是一個(gè)圖像生成模型,它需要理解輸入文本的語義信息以生成與之相關(guān)的圖像。直接使用基本的文本embedding可能無法充分捕捉到文本中的復(fù)雜語義關(guān)系。通過使用text transformer,可以獲得一個(gè)更豐富、更具表現(xiàn)力的文本表示,這有助于提高生成圖像的質(zhì)量和與輸入文本的相關(guān)性。


使用text transformer 在捕捉文本語義信息時(shí),能夠考慮到更多上下文關(guān)系和抽象概念

這個(gè)轉(zhuǎn)換器就像是一個(gè)通用的條件(conditioning)適配器。


(2)、text transformer轉(zhuǎn)換示例


下面以"蘋果"為例進(jìn)行說明。

假設(shè)我們已經(jīng)獲得了"蘋果"的基本embedding(一個(gè)形狀為(1, 512)的PyTorch張量):

text_features = tensor([[-0.0123,  0.0345, -0.0678, ...,  0.0219, -0.0456,  0.0789]])

接下來,我們將這個(gè)張量輸入到text transformer中:

transformed_text_features = text_transformer(text_features)

經(jīng)過text transformer處理后,我們可能會(huì)得到一個(gè)新的張量,如:

print(f"Transformed text features: {transformed_text_features}")

輸出結(jié)果可能類似于:

Transformed text features: tensor([[ 0.0234, -0.0567,  0.0890, ..., -0.0321,  0.0672, -0.0813]])

這個(gè)新的張量(形狀仍為(1, 512))包含了更豐富的語義信息,例如上下文關(guān)系和抽象概念。

這有助于Stable Diffusion模型更好地理解輸入文本,并生成與之相關(guān)的圖像。


請注意:

由于模型權(quán)重和隨機(jī)性的原因,每次運(yùn)行時(shí)生成的特征向量可能略有不同。

此外,具體的變化過程取決于所使用的text transformer結(jié)構(gòu)和參數(shù)。


六、Stable Diffusion Cross-attention技術(shù)


Cross-attention 是通過提示詞產(chǎn)生圖片的核心技術(shù)。

文本轉(zhuǎn)換器的輸出,會(huì)被noise predictor在U-Net中使用到多次。

U-Net以一個(gè)叫做cross-attention機(jī)制的方式來使用它,cross-attention機(jī)制允許模型在不同的特征層次上關(guān)注相關(guān)的區(qū)域,從而提高生成結(jié)果的質(zhì)量,這即是prompt適配圖片的地方。


下面代碼是stable diffusion所使用的transformers塊,實(shí)現(xiàn)了cross-attention:

class SpatialTransformer(nn.Module):
    """
    Transformer block for image-like data.
    First, project the input (aka embedding)
    and reshape to b, t, d.
    Then apply standard transformer action.
    Finally, reshape to image
    """
    def __init__(self, in_channels, n_heads, d_head,
                 depth=1, dropout=0., context_dim=None):
        super().__init__()
        self.in_channels = in_channels
        inner_dim = n_heads * d_head
        self.norm = Normalize(in_channels)

        self.proj_in = nn.Conv2d(in_channels,
                                 inner_dim,
                                 kernel_size=1,
                                 stride=1,
                                 padding=0)

        self.transformer_blocks = nn.ModuleList(
            [BasicTransformerBlock(inner_dim, n_heads, d_head, dropout=dropout, context_dim=context_dim)
                for d in range(depth)]
        )

        self.proj_out = zero_module(nn.Conv2d(inner_dim,
                                              in_channels,
                                              kernel_size=1,
                                              stride=1,
                                              padding=0))

    def forward(self, x, context=None):
        # note: if no context is given, cross-attention defaults to self-attention
        b, c, h, w = x.shape
        x_in = x
        x = self.norm(x)
        x = self.proj_in(x)
        x = rearrange(x, 'b c h w -> b (h w) c')
        for block in self.transformer_blocks:
            x = block(x, context=context)
        x = rearrange(x, 'b (h w) c -> b c h w', h=h, w=w)
        x = self.proj_out(x)
        return x + x_in

七、Stable Diffusion noise schedule 技術(shù)

1、什么是 noise schedule ?

噪聲通過多次U-Net的處理,最終會(huì)輸出我們想要的圖片。

在這多次處理中,每一次的降噪的幅度是不同的,所以我們就要通過schedulers來控制每次降噪的幅度(幅度一般是遞減的)。這個(gè)技術(shù)就叫做 noise schedule

如圖:


AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


那么為什么要使用 noise schedule 技術(shù)呢?


在 Stable Diffusion 這種生成模型中,U-Net 是一個(gè)核心組件,用于從噪聲圖像中逐步恢復(fù)出原始圖像。在多次迭代過程中,降噪幅度逐漸減小的原因是為了更精細(xì)地恢復(fù)圖像的細(xì)節(jié)和結(jié)構(gòu)。


Stable Diffusion 的過程可以看作是一個(gè)逆向擴(kuò)散過程,它從一個(gè)高度噪聲的圖像開始,然后通過多個(gè)步驟逐漸去除噪聲以重建原始圖像。在這個(gè)過程中,U-Net 被用來預(yù)測每一步的降噪操作。


在前幾輪迭代中,圖像中的噪聲較大,因此需要較大的降噪幅度來消除這些噪聲。隨著迭代次數(shù)的增加,圖像中的噪聲逐漸減小,因此降噪幅度也應(yīng)相應(yīng)減小。這樣做的目的是避免過度平滑或損壞已經(jīng)恢復(fù)的圖像細(xì)節(jié)。


通過逐漸減小降噪幅度,U-Net 可以更好地控制去噪過程,使其在保留圖像細(xì)節(jié)的同時(shí)有效地去除噪聲。這有助于生成更清晰、更真實(shí)的圖像。


這里舉一個(gè)文生圖的代碼,用于說明noise schedule技術(shù):

def txt2img():
    #unet
    unet = load_unet()
    #調(diào)度器
    scheduler = lms_scheduler()
    scheduler.set_timesteps(100)
    #文本編碼
    prompts = ["a photograph of an astronaut riding a horse"]
    text_embeddings = prompts_embedding(prompts)
    text_embeddings = text_embeddings.cuda()     #(1, 77, 768)
    uncond_prompts = [""]
    uncond_embeddings = prompts_embedding(uncond_prompts)
    uncond_embeddings = uncond_embeddings.cuda() #(1, 77, 768)
    #初始隱變量
    latents = torch.randn( (1, 4, 64, 64))  #(1, 4, 64, 64)
    latents = latents * scheduler.sigmas[0]    #sigmas[0]=157.40723
    latents = latents.cuda()
    #循環(huán)步驟
    for i, t in enumerate(scheduler.timesteps):  #timesteps=[999.  988.90909091 978.81818182 ...100個(gè)
        latent_model_input = latents  #(1, 4, 64, 64)  
        sigma = scheduler.sigmas[i]
        latent_model_input = latent_model_input / ((sigma**2 + 1) ** 0.5)
        timestamp = torch.tensor([t]).cuda()

        with torch.no_grad():  
            noise_pred_text = unet(latent_model_input, timestamp, text_embeddings)
            noise_pred_uncond = unet(latent_model_input, timestamp, uncond_embeddings)
            guidance_scale = 7.5 
            noise_pred = noise_pred_uncond + guidance_scale * (noise_pred_text - noise_pred_uncond)

            latents = scheduler.step(noise_pred, i, latents)

    vae = load_vae()
    latents = 1 / 0.18215 * latents
    image = vae.decode(latents.cpu())  #(1, 3, 512, 512)
    save_image(image,"txt2img.png")

txt2img()

八、Stable Diffusion 文生圖底層運(yùn)行演示


在文本生成圖的場景下,我們給SD模型輸入一組文本提示詞,它可以返回一張圖片。


第一步、 Stable Diffusion在潛空間里生成一個(gè)隨機(jī)張量。

我們通過設(shè)置隨機(jī)種子seed來控制這個(gè)張量的生成。如果我們設(shè)置這個(gè)隨機(jī)種子為一個(gè)特定的值,則會(huì)得到相同的隨機(jī)張量。這就是我們在潛空間里的圖片。但是當(dāng)前還全是噪點(diǎn)。

AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


第二步、 Noise predictor U-Net將潛噪點(diǎn)圖已經(jīng)文本提示詞作為輸入,并預(yù)測噪點(diǎn)

此噪點(diǎn)同樣也在潛空間內(nèi)(一個(gè)4 x 64 x 64的張量)

AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


第三步、從潛圖片中抽取潛噪點(diǎn),并生成了新的潛圖片

AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


第二步 與 第三步重復(fù)特定采樣次數(shù),例如20次。


第四步、VAE 的decoder將潛圖片轉(zhuǎn)回像素空間

這便是我們通過SD模型最終得到的圖片。

AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理,AI繪畫,人工智能,stable diffusion,AI作畫,ai繪畫


參考資料:

1. How does Stable Diffusion work?

2. stable-diffusion

3.擴(kuò)散模型詳解原理+代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-646146.html

到了這里,關(guān)于AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • AI 繪畫Stable Diffusion 研究(六)sd提示詞插件

    AI 繪畫Stable Diffusion 研究(六)sd提示詞插件

    大家好,我是風(fēng)雨無阻。 今天為大家推薦一款可以有效提升我們使用 Stable Diffusion WebUI 效率的插件, 它就是 prompt-all-in-one, 它不但能直接將 WebUI 中的中文提示詞轉(zhuǎn)換為英文,還能一鍵為加權(quán)重,更能建立常用提示詞庫,這對于英語不熟練的朋友非常實(shí)用。 今天的內(nèi)

    2024年02月13日
    瀏覽(20)
  • AI 繪畫Stable Diffusion 研究(十五)SD Embedding詳解

    AI 繪畫Stable Diffusion 研究(十五)SD Embedding詳解

    大家好,我是風(fēng)雨無阻。 本期內(nèi)容: Embedding是什么? Embedding有什么作用? Embedding如何下載安裝? 如何使用Embedding? 大家還記得 AI 繪畫Stable Diffusion 研究(七) 一文讀懂 Stable Diffusion 工作原理 這篇文章中,曾提到過詞嵌入(Embedding)嗎? 我們來簡單回顧一下:Embedding 將輸

    2024年02月11日
    瀏覽(26)
  • AI 繪畫Stable Diffusion 研究(十七)SD lora 詳解(上)

    AI 繪畫Stable Diffusion 研究(十七)SD lora 詳解(上)

    大家好,我是風(fēng)雨無阻。 本期內(nèi)容: Lora的原理是什么? Lora如何下載安裝? Lora如何使用? 大家還記得 AI 繪畫Stable Diffusion 研究(三)sd模型種類介紹及安裝使用詳解 這篇文章中,曾簡單介紹了Lora的安裝和使用嗎 ? 但是我們并不清楚LORA 的原理是什么?以及使用過程中有什

    2024年02月10日
    瀏覽(19)
  • AI 繪畫Stable Diffusion 研究(四)sd文生圖功能詳解(上)

    AI 繪畫Stable Diffusion 研究(四)sd文生圖功能詳解(上)

    大家好,我是風(fēng)雨無阻。 通過前面幾篇AI 繪畫Stable Diffusion 研究系列的介紹,我們完成了Stable Diffusion整合包的安裝、模型ControlNet1.1 安裝、模型種類介紹與安裝,相信看過教程的朋友們,手上已經(jīng)有可以操作實(shí)踐的Stable Diffusion 環(huán)境了。 那么本篇文章將給大家?guī)?Stable Diff

    2024年02月12日
    瀏覽(26)
  • AI 繪畫Stable Diffusion 研究(一)sd整合包v4(1)

    AI 繪畫Stable Diffusion 研究(一)sd整合包v4(1)

    可選ControlNet模型 :可以不用下載,這里只是提供,按需下載,安裝方法參考我的另一篇教程:AI 繪畫Stable Diffusion 研究(二)sd模型ControlNet1.1 介紹與安裝。 啟動(dòng)器運(yùn)行依賴-donet-6.0.11.exe: 啟動(dòng)器運(yùn)行依賴,以前沒使用過啟動(dòng)器的需要安裝。 sd-webui-aki-v4.zip: 整合包 如圖: 二、

    2024年04月17日
    瀏覽(24)
  • AI 繪畫Stable Diffusion 研究(五)sd文生圖功能詳解(下)

    AI 繪畫Stable Diffusion 研究(五)sd文生圖功能詳解(下)

    大家好,我是風(fēng)雨無阻。 上一篇文章詳細(xì)介紹了sd文生圖的功能及使用注意事項(xiàng),感興趣的朋友可以前往查看:AI 繪畫Stable Diffusion 研究(四)sd文生圖功能詳解(上) 。 那今天這篇文章,我們接著介紹 sd文生圖功能,主要是 sd 提示詞prompt 。 大家都知道,提示詞是整個(gè)Sta

    2024年02月14日
    瀏覽(26)
  • AI 繪畫Stable Diffusion 研究(三)sd模型種類介紹及安裝使用詳解

    AI 繪畫Stable Diffusion 研究(三)sd模型種類介紹及安裝使用詳解

    本文使用工具,作者:秋葉aaaki 免責(zé)聲明: 工具免費(fèi)提供 無任何盈利目的 大家好,我是風(fēng)雨無阻。 今天為大家?guī)淼氖?AI 繪畫Stable Diffusion 研究(三)sd模型種類介紹及安裝使用詳解。 目前,AI 繪畫Stable Diffusion的各種模型層出不窮,這些模型都有什么作用?又該怎么安裝使用

    2024年02月12日
    瀏覽(22)
  • AI 繪畫Stable Diffusion 研究(十一)sd圖生圖功能詳解-美女換裝

    AI 繪畫Stable Diffusion 研究(十一)sd圖生圖功能詳解-美女換裝

    免責(zé)聲明: 本案例所用安裝包免費(fèi)提供,無任何盈利目的。 大家好,我是風(fēng)雨無阻。 為了讓大家更直觀的了解圖生圖功能,明白圖生圖功能到底是干嘛的,能做什么事情?今天我們繼續(xù)介紹圖生圖的實(shí)用案例-美女換裝的制作。 對于新朋友,想詳細(xì)了解Stable Diffusion 的話,請

    2024年02月12日
    瀏覽(21)
  • AI 繪畫Stable Diffusion 研究(十四)SD 圖生圖+剪映制作人物說話視頻

    AI 繪畫Stable Diffusion 研究(十四)SD 圖生圖+剪映制作人物說話視頻

    大家好,我是風(fēng)雨無阻。 前一篇,我們詳細(xì)介紹了使用 SadTlaker制作數(shù)字人視頻案例,感興趣的朋友請前往查看:AI 繪畫Stable Diffusion 研究(十三)SD數(shù)字人制作工具SadTlaker使用教程。 對于沒有安裝 SadTlaker 插件的朋友,可以查看這篇文章:AI 繪畫Stable Diffusion 研究(十二)SD數(shù)

    2024年02月11日
    瀏覽(25)
  • AI 繪畫Stable Diffusion 研究(一)sd整合包v4.2 版本安裝說明

    AI 繪畫Stable Diffusion 研究(一)sd整合包v4.2 版本安裝說明

    部署包作者:秋葉aaaki 免責(zé)聲明: 本安裝包及啟動(dòng)器免費(fèi)提供 無任何盈利目的 大家好,我是風(fēng)雨無阻。眾所周知,StableDiffusion 是非常強(qiáng)大的AI繪圖工具,需要詳細(xì)了解StableDiffusion的朋友,可查看我之前的這篇文章: 最近大火的兩大AI繪圖工具 Midjourney VS StableDiffusion。 那么從本

    2024年02月15日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包