7000字詳解!幼兒園都能看懂的Stable Diffusion工作原理
作為文生圖的大模型代表,Stable Diffusion在業(yè)內(nèi)被越來越多的人使用。但很多人其實并不明白其工作原理。這篇文章,作者梳理了Stable Diffusion的工作原理,希望能夠幫助大家更好的理解和使用它。
事先聲明!本文沒有苦澀難懂的各種專業(yè)術(shù)語和代碼公式,請大家放心食用!!
在過去的一年里,AIGC在繪畫領(lǐng)域的蓬勃發(fā)展對設計行業(yè)的沖擊相信大家都有目共睹。各個公司都在要求設計師必須會使用 AIGC 的相關(guān)工具,其中以 Stable Diffusion 為基礎的系列工具和 Midjourney 應用范圍最廣。
AI繪畫領(lǐng)域能夠取得如此巨大的進展,很大的功勞要歸屬于Stability AI發(fā)布了開源的Stable Diffusion。
它除了降低硬件要求,使其可以在相對普通的硬件上運行外。也正是因為它的開源性,應運而生的相關(guān)研究和為了更好控制模型的各種插件才發(fā)展的尤為繁榮。
本文也將從 Stable Diffusion 從發(fā),聊一聊它的工作原理,希望能夠幫助大家更好的理解和使用它。
為什么需要了解 SD 的工作原理
在使用 Stable Diffusion相關(guān)工具時,并非一定需要了解它的工作原理,但了解它對后續(xù)的使用會很有幫助。當遇到生成圖片質(zhì)量低,各種參數(shù)不知道怎么調(diào)整時,不會舉手無措。因為你會知道它的配置參數(shù)比如:種子、采樣器、步數(shù)、CFG 比例或去噪強度等是如何去影響最終生成圖片的,能夠幫助我們自定義調(diào)整算法以適應特定的設計需求和偏好,從而生成更符合預期的視覺內(nèi)容。
在接下來的內(nèi)容中,我會通過類比的方式讓大家了解 Stable Diffusion的內(nèi)部工作原理,以及它是如何能夠通過提示詞、圖像參考等輸入條件來生成各種創(chuàng)意圖像的,再次強調(diào)本文沒有苦澀難懂的各種專業(yè)術(shù)語和代碼公式,幾乎適合所有人。如果你在使用 Stable Diffusion 生圖得時候,出圖總是差強人意,相信看完這篇文章會對你有很大的幫助。
一、生成式模型的發(fā)展
生成模型發(fā)展初期主要是基于生成對抗網(wǎng)絡(GAN),但在2021年隨著擴散模型性能的顯著提升和生成質(zhì)量的大幅度改進逐漸成為主流。
因為它更接近人的思維模式,能夠?qū)崿F(xiàn)更自然和多樣化的生成內(nèi)容。
與傳統(tǒng)的GAN相比,擴散模型在生成樣本的質(zhì)量、多樣性和穩(wěn)定性上具有一定的優(yōu)勢。并且在跨模態(tài)應用中表現(xiàn)出色,例如OpenAI的GLIDE和DALL·E 2、谷歌的Imagen、以及Stability AI的Stable Diffusion等都是基于擴散模型的應用,凸顯了它在文本到圖像生成中的強大能力。
下面我們先來介紹一下兩者的工作原理,放心你一定能看懂!
1. 生成對抗網(wǎng)絡(GAN)的工作原理
生成對抗網(wǎng)絡(GAN)是由兩部分組成的深度學習模型,它的核心思想是讓兩個網(wǎng)絡一個生成器(Generator)和一個判別器(Discriminator)相互對抗,以此來提高生成數(shù)據(jù)的質(zhì)量。
接下來我們用設計師做比喻來解釋一下生成對抗網(wǎng)絡(GAN)的工作原理,想象一個由兩位設計師組成的團隊:一位是設計實習生(生成器),另一位是設計總監(jiān)(判別器)。他們相互配合完成客戶所要求的視覺作品。
設計實習生(生成器):
實習生的職責是創(chuàng)造出新的視覺作品,比如海報、廣告等。他的要求是制作出讓客戶滿意漂亮的作品,以至于讓客戶相信是出自一位設計大師之手。
在初始階段他的作品可能看起來比較生硬和不自然,很容易被識別出是新手做的。
設計總監(jiān)(判別器):
總監(jiān)主要是評價實習生的作品,并判斷它畫面是否和諧,字體、顏色等設計是否合理??偙O(jiān)具備視覺鑒賞的敏感眼光,能夠識別出畫面中的問題。
他的目標是確保提交的方案在視覺上沒有問題,畫面表達符合客服要求,保持高質(zhì)量的方案產(chǎn)出。
工作流程:
第一步: 設計實習生提交他的初步設計給設計總監(jiān)。早期的設計可能很容易出現(xiàn)視覺上的問題,因為缺乏工作經(jīng)驗和設計技法,需要不斷地學習。
第二步: 設計總監(jiān)審核這些設計,并提供反饋,指出畫面哪些部分有問題或者沒有很好的表達客戶的需求。在這個過程中會逐漸提高對實習生的要求。
第三步: 設計實習生根據(jù)這些反饋調(diào)整他的創(chuàng)作方法,學習新的技術(shù),嘗試改進他的畫面,讓它們更加精細美觀,能夠更好的表達客戶的需求。
重復: 這個過程不斷重復,實習生不斷改進他的作品,而總監(jiān)也在不斷提高對實習生的作品的視覺要求。
結(jié)果:
經(jīng)過多次迭代后,如果實習生能夠創(chuàng)造出,即使是非常有經(jīng)驗的設計總監(jiān)都難以挑出問題的作品。到這一步就可以說生成對抗網(wǎng)絡(GAN)已經(jīng)訓練完成了,生成器(設計實習生)已經(jīng)能夠制作出足夠優(yōu)秀的視覺作品,判別器(設計總監(jiān))的審美和視覺評判能力也得到了提升。通過兩者不斷地提高要求,GAN用于視覺生成,能夠產(chǎn)生質(zhì)量非常高的圖像。
2. 生成對抗網(wǎng)絡(GAN)被逐漸放棄的原因
GAN的訓練不穩(wěn)定:
設計總監(jiān)過于挑剔:對設計師的每一項作品都持懷疑態(tài)度,并拒絕接受大部分設計方案。
設計師走捷徑:為了通過審查,設計師開始不斷重復相似的設計作品(模式崩潰),最終喪失了創(chuàng)造力和多樣性。
難以評估設計質(zhì)量:
缺乏明確標準:沒有清晰的設計審美標準,很難判斷設計師的作品是否符合期望。
設計總監(jiān)的個人喜好:有時會因為自身的審美偏好對設計師的作品產(chǎn)生偏見,從而影響作品質(zhì)量的評估。
對資源要求高:
設計師與設計總監(jiān)的持續(xù)對抗需要大量的精力和時間,使得整個設計過程漫長而耗費資源。
設計師需要反復與總監(jiān)溝通調(diào)整,溝通成本較高。
與GAN不同,擴散模型就像是擁有明確方向且穩(wěn)定的設計團隊,通過漸進式的優(yōu)化逐步達成高質(zhì)量的設計效果。下面我們繼續(xù)來看一下擴散模型的工作原理。
二、擴散模型(Diffusion Models) 的工作原理
擴散模型之所以這樣命名,是因為它的生成過程和物理學上的分子擴散過程非常相似,就像把冰融化為水再把水凍結(jié)成冰,水會在這個過程中逐漸移動和擴散。
擴散模型也是由主要的兩個步驟組成,正向擴散和反向擴散,正向擴散是逐步增加噪聲直至原始圖像沒有任何可以辨別的特征,反向擴散是逐步去除噪聲直至恢復原始的數(shù)據(jù)讓畫面可辨認。
看不懂沒有關(guān)系,同樣我們做個比喻,比如用文物修復師的角色來形容擴散模型的工作原理,文物修復師的工作是修復一件經(jīng)歷了嚴重損壞的古老珍貴文物。
1. 損壞模擬(正向擴散的加噪過程)
- 修復師修復文物的時候,首先需要完全了解損壞的過程。因此他采取了一個看似逆向的方法:他先對一個完好無損的相似文物進行人工老化和損壞處理,逐步施加各種損害,比如裂紋、掉漆、褪色等,模擬多年來可能發(fā)生的自然磨損。
- 這個過程相當于擴散模型中的正向過程,即逐步增加噪聲。這里的“噪聲”不是字面意義上的聲音,而是指對文物中的各種損壞因素(裂紋、掉漆、褪色等),讓它從完好的狀態(tài)逐漸變?yōu)橥耆珦p壞的狀態(tài)。
2. 文物修復(反向擴撒的去噪過程)
- 接下來就到了修復師把老化的文物恢復到它原始未受損的狀態(tài)。這需要非常高超的技術(shù)和對文物原始狀態(tài)的深刻理解。修復師會使用各種工具和化學物質(zhì),仔細地去除每一處人為的損壞,包括填補裂縫、重新上色、并修復褪色和磨損的部分。
- 這一過程對應擴散模型中的逆向過程,即逐步去除噪聲。在這里,“去除噪聲”意味著修復師在消除之前刻意添加的所有損壞的同時,逐步還原文物的原始狀態(tài)。
3. 噪聲
在這個過程中,”噪聲”指的是刻意施加到文物上的各種損壞因素。
這些“噪聲”被有計劃地逐步加入到文物的破壞中,來模擬文物被隨機破壞。這個過程的目的是,在修復訓練中創(chuàng)建一個從完全有序到完全無序的連續(xù)過程,以便文物修復師學習如何把隨機破壞的文物重新恢復出完好的、精美的原始狀態(tài)。
4. 噪聲預測器和采樣
噪聲預測器和采樣在反向擴散中是不可或缺的關(guān)鍵技術(shù)。
噪聲預測器可以想象成一個高級的診斷工具,文物修復師使用它來分析藝術(shù)品的損壞程度和類型。這個工具能夠精確地確定每一處損傷的位置、深度和影響,為修復工作提供依據(jù)。
采樣過程可以視為修復過程中的實際操作步驟,每一步操作都基于噪聲預測器提供的數(shù)據(jù)。由于解決某一個破損的問題有很多種方法,所以采樣的實際操作步驟也可以分為很多種。對應到模型中就是各種采樣器,比如:Euler, Euler Ancestral, DDIM, DPM++ 2M Karras等。再簡單點來說,比如同一道數(shù)學題有多種解法,每一種解法就是一個個的采樣器。
通過上面的形容,把擴散模型的“加噪”和“去噪”用文物修復的過程來描述,相信大家應該都懂了,其中文物修復師不僅要理解文物人為加速老化過程,還要掌握如何從極端損壞中恢復出文物的原始狀態(tài)。經(jīng)過這樣不斷的雙重過程,加上修復工具(噪聲預測器和采樣等)的使用,先破壞再修復的方式,能夠讓文物修復師的能力逐漸提升,達到高質(zhì)量還原文物的目的?;氐綌U散模型,就是讓擴散模型在不斷的加噪和去噪中不斷訓練,提高模型的能力,讓其能夠生成更高質(zhì)量的圖片或其它逼真數(shù)據(jù)的目的。
我們經(jīng)常聽到的Stable Diffusion,與擴散模型(Diffusion Models)并不相等,擴散模型是通用的底層技術(shù)。而Stable Diffusion是一種實現(xiàn)了特定技術(shù)應用的擴散模型,OK,下面我們繼續(xù)來看一下Stable Diffusion 的工作流程。
三、Stable Diffusion 的工作流程
Stable Diffusion雖然與擴散模型的基本原理相同,但它更注重條件生成,名稱中的Stable(穩(wěn)定的)也強調(diào)了這一點,也正是因為條件生成的各項技術(shù),才能讓模型更接近我們的想法來生成圖片,所以條件生成也是Stable Diffusion的核心功能。
條件生成
條件生成技術(shù)在視覺領(lǐng)域扮演著核心角色,我們最常使用的文生圖(Text-to-Image)就是其最基礎的功能之一, 除了文本到圖像的轉(zhuǎn)換。如圖像到圖像(Image-to-Image)、圖像修復(Inpainting)、圖像擴展(Outpainting)以及深度到圖像(Depth-to-Image)等。這些技術(shù)都在各個不同的方向解決控制視覺和圖形的任務,下面來看一下它們具體是如何工作的。
文生圖(Text-to-Image):文本到圖像的轉(zhuǎn)換
將文本轉(zhuǎn)換為計算機能夠理解的內(nèi)容是Stable Diffusion最基本的功能,也就是我們常說的文生圖功能。它由以下幾部分組成。
分詞器(Embedding):
由于計算機不能直接理解人類的語言,只能處理數(shù)字和符號。分詞器的任務是把我們?nèi)祟惖恼Z言轉(zhuǎn)換成計算機可以理解的數(shù)字表示。舉個例子,比如:“一只在草地上跳舞的貓”,經(jīng)過分詞器處理后可能是:‘一只’,‘在’,‘草地上’,‘跳舞’,‘的’,‘貓’。通過預先定義的詞匯表,將每個詞語映射成一個唯一的數(shù)字編號。比如:{‘一只’: 1,‘在’: 2, ‘草地上’: 3,‘跳舞’: 4,‘的’:5,‘貓’: 6}。
嵌入(Embedding):
分詞器把文本處理好以后,嵌入將數(shù)字編號轉(zhuǎn)換為計算機可以處理的數(shù)字向量。嵌入向量可以讓模型理解文本的含義,并進行后續(xù)的任務,例如文本分類、翻譯或圖像生成,也就是賦予詞匯意義。
語言-圖像對比預訓練模型-CLIP(Contrastive Language-Image Pre-training):
通過學習大量的圖像和對應的文本描述,CLIP可以將兩者聯(lián)系在一起,使得模型能夠根據(jù)圖像找到相關(guān)的文本描述,根據(jù)文本描述找到相關(guān)的圖像。為計算機提供理解自然語言和視覺內(nèi)容之間關(guān)聯(lián)的能力,來指導圖像的生成。
類標簽(Class Labels)
類標簽作為條件信息,可以幫助模型生成特定類別的圖像。它作為一種補充信息能夠提高生成圖像的準確性。比如:“一支鮮花插在牛糞上”,可以使用“花”這個標簽來確保生成圖像中包含花的元素。還可以與特定的風格相關(guān)聯(lián),比如“漫畫風格”“賽博朋克”等,或者與其他類別標簽結(jié)合,比如:“賽博朋克風格的花插在牛糞上”,模型可以學習到每個類標簽與特定圖像風格的關(guān)聯(lián)性,從而生成符合標簽描述的風格圖像。
雖然在Stable Diffusion中主要依賴于文本提示(prompt)來指導圖像生成,但類標簽在某些應用場景中可以進一步加強生成圖像的準確性和多樣性。
CFG Scale值(Classification Free Guidance Scale)
CFG Scale值是一種調(diào)節(jié)參數(shù),它可以控制生成圖像多大程度上符合我們給的文本描述或其他條件,數(shù)值越大與提示詞的匹配度越高,反之越小。CFG Scale值的范圍一般在5到15之間,較高值通常在7-12可以生成更符合描述的圖像,較低在5以下,可以生成更具創(chuàng)意的多樣化圖像。在WebUI中CFG Scale值過高出現(xiàn)的過擬合現(xiàn)象,就是模型在盡可能的把提示詞中的元素全部畫出來,呈現(xiàn)的效果細節(jié)會非常多效果很差,這種情況是因為采樣的迭代步數(shù)不夠,不能夠畫出所有的細節(jié),提高迭代步數(shù)你會發(fā)現(xiàn)畫面會比低CFG Scale值更加精細,畫面也不會出現(xiàn)崩壞,但出圖占用更多的算力,出圖時間很長。
圖生圖(Image-to-Image)
圖生圖在Stable Diffusion中可以實現(xiàn)圖像風格轉(zhuǎn)換、圖像修復、圖像擴展、圖像編輯與變化、草圖到完整圖像等工作,它是以用戶提供初始圖像作為生成的基礎,模型從初始圖像開始,逐步增加或去除噪聲,結(jié)合文本描述等其它條件逐漸從初始圖像變?yōu)榉夏繕藯l件的最終圖像。
圖像深度(Depth-to-Image)
利用深度傳感器或者深度估計模型來生成圖像深度圖,把圖像的深度信息作為條件引導,可以讓模型理解圖像中各個物體到攝像機的距離,能夠更好地把握整個場景的幾何結(jié)構(gòu),提高圖像的準確性。
ControlNet
ControlNet 是一種神經(jīng)網(wǎng)絡,它以Stable Diffusion的U-Net架構(gòu)作為基礎,加入額外的網(wǎng)絡分支,用于處理特定的條件輸入??梢岳斫鉃樵赟table Diffusion本身的條件輸入外加入額外的限制條件,ControlNet通過額外的控制輸入(如深度圖、姿態(tài)圖、草圖等),可以實現(xiàn)對圖像生成過程的精確控制。
潛在空間(Latent Space)
潛在空間在Stable Diffusion中起著連接高維圖像空間與條件信息的橋梁作用。
就像是PS,文本描述、類標簽、ControlNet等就像是ps里的各個功能,并且設置好了動作,然后點一下就生成圖像
我們可以把它看做是一個巨大的存滿各種各樣畫作的收藏館,這里的畫不是真正的畫,而是包含圖像主要特征的各種元素,就像一幅沒有拼起來的拼圖。Stable Diffusion是這個收藏館的管理員,文本描述、類標簽、ControlNet 等就像是尋找指南,告訴管理員(Stable Diffusion)要尋找那一幅畫作,最終根據(jù)各種要求快速的找到符合描述的畫作。
變分自編碼器(Variational Autoencoder,簡稱VAE)
VAE是一種生成模型,用于學習數(shù)據(jù)的潛在表示并生成類似的樣本。我們同樣以畫作收藏館做比喻來理解一下它,VAE是收藏館的理貨員,負責藏館的畫作的擺放和目錄的整理,它能夠幫助管理員(Stable Diffusion)快速找到目標畫作,由于畫作是一個個拼圖塊,它還需要將其拼成完整的圖像交給管理員。在Stable Diffusion的工作流程中,VAE起著潛在空間和擴散模型之間的橋梁作用。
工作流程
潛在噪聲張量生成:基于固定或隨機種子生成具有潛在噪聲的張量;文物修復師拿到一件被破壞掉的文物,這是他開始工作的基礎。
條件嵌入生成:將文本描述、深度圖或類標簽等條件信息轉(zhuǎn)換為嵌入向量,以多個維度存儲特征。文本描述、深度圖、類標簽等就像修復師的修復指南,幫助他知道文物原來樣子。
CLIP Transformer處理:使用交叉注意力技術(shù)計算嵌入向量之間的關(guān)系,提供圖像生成的指導。CLIP Transformer就像修復師的“詳情說明書”,將修復指南轉(zhuǎn)化為詳細的修復步驟。
U-Net去噪過程:U-Net根據(jù)CLIP Transformer的結(jié)果引導去噪過程,以逐步生成符合目標描述的潛在向量。U-Net就像修復師,根據(jù)轉(zhuǎn)換好的詳情說明逐步還原被破壞的文物,讓它逐漸顯露出文物完好的形象。
采樣與噪聲調(diào)度器:采樣算法生成噪聲并從初始張量中減去,噪聲調(diào)度器控制去噪的非線性進度。采樣算法和噪聲調(diào)度器就像修復師的“工作計劃”,決定每次修復的細節(jié)和順序。
VAE與潛在空間:
- 編碼器:VAE編碼器將原始圖像壓縮成潛在向量,形成潛在空間中的索引。VAE編碼器就像修復師的“修復指南目錄”,負責將文物的形象特征記錄下來。
- 潛在空間:存儲由編碼器生成的潛在向量,是圖像的低維特征表示空間。潛在空間就像修復師的“特征庫”,存放著所有文物的形象特征。
- 解碼器:VAE解碼器將潛在向量解碼成完整的高分辨率圖像。VAE解碼器就像“文物特征組裝器”,將文物的特征轉(zhuǎn)換成完整的文物形象。
最終圖像生成:去噪過程完成后,張量通過VAE解碼器離開潛在空間,文物修復師通過最終的修復步驟,呈現(xiàn)出完整的文物形象。
寫在最后
作為一款開源工具,Stable Diffusion為我們提供了強大的可定制和控制能力,它不僅降低了硬件要求,讓大部分人都可以使用外,還通過豐富的插件生態(tài)系統(tǒng)拓展了模型的應用范圍。了解它的工作原理,能幫助我們更好地調(diào)整參數(shù),提高圖像質(zhì)量,滿足特定的設計需求和偏好。
在當前的環(huán)境下,熟悉使用AIGC技術(shù)已經(jīng)成為企業(yè)要求的必備能力,它不僅大幅降低了設計內(nèi)容的制作成本與時間,還拓展提高了設計的能力邊界,不再需要設計師為某種風格而去學習一門技法。但也降低了設計師工作的門檻,所以保持終身學習緊跟前沿技術(shù),才能立于不敗之地,愿你我共勉!
今天就寫到這里,bay~
本文由 @五幺六 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Pixabay,基于CC0協(xié)議。
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務。
現(xiàn)在的AI繪圖功能太多太亂了,但也給很多人提高了效率。