白話科普 | 一次性搞懂AI繪畫是如何生成圖像的!

楠柯
4 評(píng)論 7826 瀏覽 25 收藏 36 分鐘
🔗 产品经理的核心价值是能够准确发现和满足用户需求,把用户需求转化为产品功能,并协调资源推动落地,创造商业价值

為什么我們輸入一句話,人工智能便能產(chǎn)出一幅畫作呢?AI繪畫究竟是如何生成圖像的?這篇文章里,作者將AI繪畫過(guò)程拆解成了5個(gè)核心問題,或許搞清楚這5個(gè)核心問題,你就能明白AI繪畫的工作原理了,一起來(lái)看看吧。

寫在前面

前段時(shí)間和Leader聊AIGC時(shí),提到了關(guān)于AI繪畫原理的話題,一直只知道人工智能是降噪畫圖的原理,但是很多細(xì)節(jié)不是很清楚,挺好奇為什么輸入一句話,人工智能就能理解,并且畫出來(lái)一幅“可圈可點(diǎn)”的畫作。

趁著周末爬了些資料,也找學(xué)術(shù)界朋友給推薦了一些研究論文,大概明白了AI繪畫是如何工作的,分享給大家,共勉。

Ps:主要通過(guò)白話的方式闡述AI繪畫原理,手動(dòng)繪制了插圖和流程圖作為示意,算法原理略去了很多細(xì)節(jié),適用于泛AIGC愛好者閱讀和學(xué)習(xí)了解。

整個(gè)AI繪畫過(guò)程,我拆解成了五個(gè)核心問題,搞清楚這五個(gè)問題,AI繪畫也就清晰了:

  1. 我只輸入了一句話,AI是怎么知道這句話描述的是什么?
  2. AI繪畫流程里提到的噪聲圖是哪里來(lái)的
  3. 就算有了噪聲圖,噪聲圖是怎么被一點(diǎn)一點(diǎn)去掉“馬賽克”的?
  4. 那AI是怎么去掉無(wú)用的“馬賽克”的,最終去掉后是符合效果的?
  5. 就算有了最終效果,為什么重新作畫的結(jié)果不一樣?

是不是看到這五個(gè)問題也有點(diǎn)懵,別著急,下面我們先看下AI繪畫的繪制過(guò)程,就清楚這五個(gè)問題都是在問什么了。

先看總述:AI繪畫的繪制過(guò)程

AI繪畫發(fā)展很快,最典型的就是去年的《太空歌劇院》,獲得科羅拉多州藝術(shù)一等獎(jiǎng),當(dāng)時(shí)還是蠻震撼的。

因?yàn)樵偻翱磶啄?,其?shí)AI繪畫的效果是這樣的(12年吳恩達(dá)和團(tuán)隊(duì)用1.6萬(wàn)GPU和上萬(wàn)張數(shù)據(jù),花了3天時(shí)間畫出來(lái)的貓…):

我們?cè)倏聪卢F(xiàn)在AI繪畫的效果(普通人輸入一句話,幾秒鐘畫出來(lái)的作品):

Source: https://liblib.ai/ 官網(wǎng)

可以看出畫質(zhì)高清、精致,寫實(shí)感很強(qiáng),甚至可以比得上攝影師的作品了。

所以AI到底是怎么越來(lái)越優(yōu)秀,根據(jù)一句話和幾個(gè)參數(shù)就能畫出這么好的作品呢?

先拋結(jié)論,AI繪畫原理就是:

去除馬賽克,就能看清了。

其實(shí)N多年前某些成人網(wǎng)就有了類似的技術(shù),不過(guò)那個(gè)是1vs1還原,AI繪畫本質(zhì)是1vsN還原,核心就是把馬賽克一點(diǎn)一點(diǎn)抹掉,最終“漏出”底圖,完成所謂的“AI繪畫”。

圖像繪制:Designed byLiunn

我們先看下,AI繪畫的使用場(chǎng)景,所有的軟件或模型,基本上第一步都是讓用戶輸入繪畫關(guān)鍵詞,也就是Prompt。

以Diffusion Model的示意如下,我們把最右邊的當(dāng)做正常圖片,從右到左是不斷模糊的,直至最后看不出來(lái)是什么,這個(gè)過(guò)程就是算法的疊加噪聲。

你可以理解為不斷對(duì)圖片進(jìn)行馬賽克處理,這就是最著名的“擴(kuò)散(Diffusion)”過(guò)程。

Source:https://mp.weixin.qq.com/s/ZtsFscz7lbwq_An_1mo0gg

打個(gè)比喻,我們把這個(gè)過(guò)程想象成你在發(fā)朋友圈照片時(shí),想屏蔽一些信息,所以使用“編輯”功能不斷地對(duì)某些區(qū)域進(jìn)行涂抹,直到這個(gè)區(qū)域看不清原本的內(nèi)容了。

并且每一次的噪聲迭代其實(shí)僅僅和上一次的狀態(tài)相關(guān)聯(lián),所以這本質(zhì)上也是一個(gè)馬爾科夫鏈模型(簡(jiǎn)單理解為隨機(jī)模型,細(xì)節(jié)可以移步google)。

此時(shí),如果把這個(gè)過(guò)程倒過(guò)來(lái),從左到右做處理,那么就是一步步把一個(gè)圖片逐漸去除噪聲,變清晰的過(guò)程。

也就是你的朋友圈照片馬賽克越來(lái)越少,這個(gè)過(guò)程就是Diffusion Model的原理。

OK,看到這里,我們明白了大概流程和原理,接下來(lái),我們來(lái)依次看五個(gè)核心問題。

第一個(gè)問題:如何理解文本信息

你輸入的文字,AI是怎么知道你想要描述的是什么?

按照上面所說(shuō)的原理,圖片是被一點(diǎn)點(diǎn)抹去馬賽克的,但是我寫的文本信息是怎么匹配到某一個(gè)馬賽克圖片的呢?

我們都知道,目前AI繪畫最主流的使用方式就是在模型或軟件里,輸入一句話(俗稱Prompt),可以寫主體、背景、人物、風(fēng)格、參數(shù)等等,然后發(fā)送,就可以得到一張圖。

比如,“一個(gè)穿背帶褲打球的雞”,效果如下:

圖像繪制:Source: Designed byLiunn

AI繪畫底層也是大模型,是一個(gè)圖像模型。

最早的時(shí)候文本控制模型的做法是讓模型生成一堆圖片,然后再讓分類器從中選出一個(gè)最符合的,這種方式?jīng)]什么不好,唯一的缺點(diǎn)就是當(dāng)數(shù)據(jù)量大到一定程度的時(shí)候,就會(huì)崩潰(想象一下,用excel處理上百億行的數(shù)據(jù),是不是負(fù)擔(dān)很大)。

所以一方面需要非常多的圖片數(shù)據(jù)來(lái)訓(xùn)練,另一方面又需要高效且快捷的處理,能承擔(dān)這個(gè)任務(wù)的,就是Openai在21年推出的OpenCLIP。

CLIP的工作原理其實(shí)可以簡(jiǎn)單理解為:爬蟲、文本+圖片的信息對(duì)。

第一,先看CLIP的爬蟲和數(shù)據(jù)庫(kù)。

CLIP的最大亮點(diǎn)之一就是采用了非常多的數(shù)據(jù),構(gòu)成了一個(gè)龐大的數(shù)據(jù)庫(kù)。

每次CLIP爬取到一張圖片后,都會(huì)給圖片打上對(duì)應(yīng)的標(biāo)簽以及描述(實(shí)際CLIP 是根據(jù)從網(wǎng)絡(luò)上抓取的圖像以及其 “alt” 標(biāo)簽進(jìn)行訓(xùn)練的)

Source:https://jalammar.github.io/illustrated-stable-diffusion/,引自Jay Alammar博客

然后從768個(gè)維度重新編碼這些信息(你可以理解為從768個(gè)不同的角度來(lái)描述這個(gè)圖)。

然后根據(jù)這些信息構(gòu)建出一個(gè)超多維的數(shù)據(jù)庫(kù),每一個(gè)維度都會(huì)和其他維度交叉起來(lái)。

同時(shí)相似的維度會(huì)相對(duì)靠攏在一起,按照這種方式CLIP不斷爬取,最終構(gòu)建了一個(gè)大概4~5億的數(shù)據(jù)庫(kù)。

圖像繪制:Source: Designed byLiunn

第二,再看CLIP的文本圖像匹配能力。

OK,有了數(shù)據(jù)庫(kù),庫(kù)里的圖像怎么和輸入的文字匹配呢?這里又分兩個(gè)步驟:

步驟01,怎么具備文本-圖像匹配的能力。

先看下圖,是算法的原理圖,看不懂沒關(guān)系,我在下面重新繪制了一幅降維版的示意圖。

Source: https://github.com/openai/CLIP

我們來(lái)看下面這幅示意圖,CLIP是如何識(shí)別文本和圖像的關(guān)聯(lián)。

作圖繪制參考Source: https://jalammar.github.io/illustrated-stable-diffusion/,Designed By Liunn

這里是一個(gè)簡(jiǎn)化的算法模型,其本質(zhì)是不斷地通過(guò)大量數(shù)據(jù)來(lái)訓(xùn)練CLIP去關(guān)聯(lián)、認(rèn)識(shí)圖片和文字,并且根據(jù)和答案的比對(duì),不斷地矯正,最后達(dá)到精確匹配關(guān)鍵詞和特征向量。

步驟02,如何去做文本-圖像匹配的關(guān)聯(lián)。

好了,我們?cè)賮?lái)看CLIP是如何做到文本圖像的匹配的。

當(dāng)我們開始作畫時(shí),會(huì)錄入文本描述(即Prompt),CLIP模型就會(huì)根據(jù)Prompt去上面的數(shù)據(jù)庫(kù)里從768個(gè)維度進(jìn)行相似度的匹配,然后拿圖像和文本編碼后的特征去計(jì)算出一個(gè)相似性矩陣。

再根據(jù)最大化對(duì)角線元素同時(shí)最小化非對(duì)角線元素的約束,不斷地優(yōu)化和調(diào)整編碼器,最終讓文本和圖片編碼器的語(yǔ)義強(qiáng)關(guān)聯(lián)起來(lái)。

圖像繪制:Source: Designed byLiunn

最后,當(dāng)找到最相似的維度描述后,把這些圖像特征全部融合到一起,構(gòu)建出本次要產(chǎn)出的圖像的總圖像特征向量集。

至此,輸入的一段話,就轉(zhuǎn)換成了這次生成圖像所需要的全部特征向量,也就是AI所謂的已經(jīng)“理解了你想畫什么樣的畫了”。

這個(gè)跨越已經(jīng)算是AI界的“登月一小步”了

有了CLIP的這個(gè)創(chuàng)新舉措,基本上徹底打通了文字和圖片之間的鴻溝,搭建了一個(gè)文本和圖像之間關(guān)聯(lián)的橋梁,再也不需要以前圖像處理界的打標(biāo)簽的方式來(lái)不斷堆人了。

第二個(gè)問題:原始噪聲圖的來(lái)源

上面講到AI繪畫是把“馬賽克”一點(diǎn)點(diǎn)抹掉,那所謂的“馬賽克”圖,也就是噪聲圖是怎么來(lái)的呢?

噪聲圖的是擴(kuò)散模型生成的,先記住這個(gè)概念“擴(kuò)散模型”。

講擴(kuò)散模型之前,需要先講另一個(gè)概念,AI生成圖片的過(guò)程,其實(shí)是人工智能領(lǐng)域的一個(gè)分支,生成模型(Generative Model)。

生成模型主要是生成圖像的,通過(guò)扔進(jìn)去大量真實(shí)的圖片讓AI不斷去了解、認(rèn)識(shí)和學(xué)習(xí),然后根據(jù)訓(xùn)練效果,自己生成圖片。

在生成模型里,有個(gè)自動(dòng)編碼器的東西,它包含兩個(gè)部分:編碼器和解碼器。

編碼器可以把比較大的數(shù)據(jù)量壓縮為較小的數(shù)據(jù)量,壓縮的前提是這個(gè)較小的數(shù)據(jù)量是能夠代表最開始的大數(shù)據(jù)量的;

解碼器可以根據(jù)這個(gè)較小的數(shù)據(jù)量在適當(dāng)?shù)臈l件下,還原為最開始的的大數(shù)據(jù)量。

所以這個(gè)時(shí)候就有意思了:

能否直接給它一個(gè)較小的數(shù)據(jù)量,看看它自己能隨機(jī)擴(kuò)大成一個(gè)什么樣的大數(shù)據(jù)量?

圖像繪制:Source: Designed byLiunn

答案是可以的,但,測(cè)試效果很一般。

所以自動(dòng)編碼器不行了,怎么辦呢,科學(xué)家發(fā)明了另一個(gè)東西,叫VAE(變分編碼器,Variational Auto-encoder)。

VAE是做什么的,主要是把較小的數(shù)據(jù)量進(jìn)行規(guī)律化,讓其符合高斯分布的概率。

這樣就可以依據(jù)這個(gè),來(lái)調(diào)整一個(gè)圖片信息按照概率的變化進(jìn)行對(duì)應(yīng)的改變,但是有個(gè)問題,這個(gè)太依賴概率了,大部分概率都是假設(shè)的理想情況,那怎么辦呢?

所以這個(gè)時(shí)候科學(xué)家就想,能不能做兩個(gè)AI,一個(gè)負(fù)責(zé)生成,一個(gè)負(fù)責(zé)檢驗(yàn)它生成的行不行,也就是AI互相評(píng)估真假,這就是GAN,對(duì)抗神經(jīng)網(wǎng)絡(luò)誕生了。

GAN一方面生成圖片,一方面自己檢測(cè)行不行,比如有時(shí)候有些圖片細(xì)節(jié)沒有按照要求生成,檢測(cè)的時(shí)候GAN發(fā)現(xiàn)了,它后面就會(huì)不斷加強(qiáng)這塊,最終讓自己覺得結(jié)果可以,這樣不斷地迭代成千上億次,最終生成的結(jié)果,檢測(cè)也OK的時(shí)候,就是生成了一個(gè)AI的圖片了。

但問題又來(lái)了

GAN一方面自己做運(yùn)動(dòng)員,一方面自己做裁判,太忙了,不僅消耗大量的計(jì)算資源,同時(shí)也容易出錯(cuò),穩(wěn)定性也不好,那怎么辦呢?能不能讓AI別搞這么復(fù)雜,用一套流程完成呢?

答案是肯定的,這就是跨越了生成模型時(shí)代后,擴(kuò)散模型的時(shí)代到來(lái)了。

話題回到擴(kuò)散模型這里。

擴(kuò)散模型最早是由斯坦福和伯克利學(xué)術(shù)專家,在2015年相關(guān)論文里提出的,依據(jù)正態(tài)分布給圖像逐步增加噪聲,到了2020年加噪聲的過(guò)程被改為根據(jù)余弦相似度的規(guī)律來(lái)處理。(文末附上了15年和20年的原始學(xué)術(shù)論文鏈接,感興趣可以自行閱讀)

根據(jù)余弦調(diào)度逐漸正向擴(kuò)散原始圖,就像把一個(gè)完整的拼圖一步一步拆開,直至完全打亂。

圖像繪制:Source:Designed byLiunn

到這里,第二個(gè)問題也解決了。當(dāng)你看到這里的時(shí)候,AI繪畫的輸入信息基本Ready了。

第三個(gè)問題:模型如何去除噪聲

AI把文字轉(zhuǎn)成了特征向量了,也拿到噪聲圖片了,但噪聲圖是怎么一點(diǎn)點(diǎn)被去除“馬賽克”的呢?

它是怎么消除掉馬賽克的呢?這里面分為兩個(gè)步驟:

步驟一,降維數(shù)據(jù)運(yùn)算,提升運(yùn)算效率;

步驟二,設(shè)計(jì)降噪網(wǎng)絡(luò),識(shí)別無(wú)用噪聲,精準(zhǔn)降噪。

先看步驟一:還記得上文提到的自動(dòng)編碼器么?

圖像特征向量和噪聲圖,會(huì)一起扔到編碼器里進(jìn)行降噪,也就是去除馬賽克的過(guò)程。

但是這里有個(gè)問題,就是一張512*512的RGB圖片就需要運(yùn)算786432次,即512*512*3=786432條數(shù)據(jù),這個(gè)運(yùn)算量太大了

所以在這些數(shù)據(jù)在進(jìn)入到編碼器之前,都會(huì)被壓縮到潛空間里去,降維到64*64*4=16384條數(shù)據(jù)(不知道你有沒有用SD的時(shí)候注意到,我們?cè)赟table Diffusion里調(diào)整圖像大小的時(shí)候,最小只能拖到64px,這就是其中的原因)。

Source:https://jalammar.github.io/illustrated-stable-diffusion,Designed byLiunn

這樣的話,整個(gè)文生圖的任務(wù)就能夠降維到消費(fèi)級(jí)的GPU上運(yùn)算(雖然現(xiàn)在算力依然是個(gè)問題,A100都沒有吧?有的話 私我!)

降低了落地門檻,運(yùn)算和配置效率都得到了極大的提升。

再看步驟二:設(shè)計(jì)一個(gè)降噪網(wǎng)絡(luò)。

明白了數(shù)據(jù)降維的問題,我們繼續(xù)看,AI怎么逐步去除噪聲生成新圖呢,圖像編碼器又是如何給圖像降噪,從而生成一張全新的圖片的呢?

圖像繪制:Designed byLiunn

關(guān)于降噪方式,ddpm在2020年年底的相關(guān)論文預(yù)測(cè)了三件事:

  1. 噪聲均值(mean of noise):預(yù)測(cè)每個(gè)時(shí)間步長(zhǎng)的噪聲均值。
  2. 原始圖像(original image):直接預(yù)測(cè)原始圖像,一步到位。
  3. 圖像噪聲(noise of image):直接預(yù)測(cè)圖像中的噪聲,以獲得噪聲更少的圖像。

現(xiàn)在的模型,大部分都是采用了第三種方式。

這個(gè)去除噪聲的網(wǎng)絡(luò)是怎么設(shè)計(jì)的呢?

這個(gè)主要?dú)w功于編碼器中的U-Net(卷積神經(jīng)網(wǎng)絡(luò)-圖像分割)了。

Source:https://jalammar.github.io/illustrated-stable-diffusion/

U-Net是一個(gè)類似于編碼-解碼器的漏斗形狀的網(wǎng)絡(luò)(上圖左),不同點(diǎn)在于U-Net在相同層級(jí)的編碼、解碼層增加了直連通道(你可以理解為兩棟大樓之間,同一樓層之間加了連橋,可以走動(dòng))

這樣好處在于處理圖片時(shí),相同位置的信息在編碼、解碼過(guò)程中可以方便快捷的進(jìn)行信息傳輸。

那它是怎么工作的呢?

剛才我們說(shuō)了,DDPM提到,目前基本上所有的模型都采用直接預(yù)測(cè)圖像中的噪聲,以便于獲得一張?jiān)肼暩俚膱D片。

U-Net也是如此。

U-Net根據(jù)拿到第一節(jié)里提到的圖像的全部特征向量集合后,從向量集合里通過(guò)采樣的方式抽取一部分特征向量,再根據(jù)這些向量識(shí)別出其中的無(wú)用的噪聲

然后用最開始的全噪聲圖和當(dāng)前這次預(yù)測(cè)的噪聲做減法(實(shí)際處理過(guò)程比這會(huì)復(fù)雜一些),然后得到一個(gè)比最開始噪聲少一些的圖,然后再拿這個(gè)圖,重復(fù)上述流程,再次通過(guò)采樣的方式抽取一部分特征向量,再去做噪聲預(yù)測(cè),然后再拿N-2次的圖像和N-1次的圖像相減,拿到N-3次的圖像

繼續(xù)重復(fù)上述流程,直至最終圖像清晰,沒有噪聲或沒有識(shí)別出無(wú)用的噪聲為止,最終生成一張符合要求的圖像。

圖像繪制思路:Source:https://jalammar.github.io/illustrated-stable-diffusion/,Designed byLiunn

這里面,有的同學(xué)注意到了,還涉及到一個(gè)采樣方法的環(huán)節(jié)。

每一次的采樣,根據(jù)不同的采樣方法,可以用同樣的方式,也可以用不同的采樣方式。不同的采樣方法會(huì)抽取出不同維度、不同特質(zhì)、不同規(guī)模的特征向量,最終確實(shí)會(huì)對(duì)輸出結(jié)果有影響(這也是影響AI繪畫可控性的因素之一)。

最后,還記得剛剛提到的數(shù)據(jù)降維嗎?

降維是為了降低運(yùn)算量,加快速度,降維后其實(shí)是進(jìn)入到一個(gè)潛空間里,那么圖像全部降噪完成后,會(huì)通過(guò)圖像解壓器也就是VAE模型,重新還原回來(lái),被重新釋放到像素空間里(可以理解為IPhone里云端存儲(chǔ)的照片,你最開始看的是縮略圖,當(dāng)你點(diǎn)開大圖想看的時(shí)候,會(huì)慢慢從云端下載,變成高清的)。

以上,就是噪聲模型網(wǎng)絡(luò)去噪的簡(jiǎn)易過(guò)程。

第四個(gè)問題:應(yīng)該去除哪些無(wú)用的噪聲

AI是怎么能夠按照我描述的來(lái)去除特定的馬賽克,而不是我寫了“狗狗”,畫出來(lái)一只“貓咪”呢?

U-Net模型如何識(shí)別應(yīng)該去除哪些噪聲呢?其實(shí)這就是一個(gè)模型訓(xùn)練的過(guò)程。

講解模型訓(xùn)練之前,需要先普及幾個(gè)概念:

  • 訓(xùn)練集:用來(lái)不斷讓AI學(xué)習(xí)和糾錯(cuò)的,讓AI可以不斷成長(zhǎng)的一個(gè)數(shù)據(jù)集合,你可以理解為打籃球時(shí)教練帶你在訓(xùn)練場(chǎng)訓(xùn)練。
  • 強(qiáng)化學(xué)習(xí):當(dāng)AI犯錯(cuò)的時(shí)候,告訴它錯(cuò)了;當(dāng)AI正確的時(shí)候,告訴他對(duì)了;你可以理解為籃球教練在不斷糾正你的投籃姿勢(shì),讓你訓(xùn)練的更快更強(qiáng)。
  • 測(cè)試集:用訓(xùn)練集訓(xùn)練一段時(shí)間后,看看AI能力如何的一個(gè)數(shù)據(jù)集合,你可以理解為打籃球時(shí)訓(xùn)練半年,組織了一場(chǎng)友誼賽。

先看U-Net的訓(xùn)練集是怎么構(gòu)建的,主要分為四個(gè)步驟:

  1. 從圖文數(shù)據(jù)集中隨機(jī)選擇照片;
  2. 生產(chǎn)不同強(qiáng)度的噪聲,順次排列;
  3. 隨機(jī)選擇某個(gè)強(qiáng)度的噪聲;
  4. 將該噪聲加到圖片里。

圖像繪制思路:Source:https://jalammar.github.io/illustrated-stable-diffusion/,Designed byLiunn

再來(lái)看U-net是怎么處理的。

U-Net的訓(xùn)練集是很多張已經(jīng)疊加了隨機(jī)噪聲的數(shù)據(jù)庫(kù),可以理解為很多添加了馬賽克的圖片(籃球訓(xùn)練場(chǎng)地),然后讓AI不斷地從這個(gè)數(shù)據(jù)庫(kù)里抽取圖片出來(lái),自己嘗試抹去噪聲,全部抹掉后再來(lái)和這張圖的原圖做比對(duì),看看差別多大。

圖像繪制思路:Source:https://jalammar.github.io/illustrated-stable-diffusion/,Designed byLiunn

計(jì)算出這個(gè)差距,然后重新去庫(kù)里抽取,再嘗試抹去噪聲(強(qiáng)化學(xué)習(xí)),循環(huán)無(wú)數(shù)次,最終實(shí)現(xiàn)的效果是,無(wú)論怎么隨機(jī)抽,并且換一個(gè)新的噪聲圖片庫(kù)(測(cè)試集),AI抹掉的噪聲后的圖像也能和原圖很像(風(fēng)格都類似,不一定是原圖,這也就是為什么AI每次出圖都不一樣)。

這樣的話就算通過(guò)了,這個(gè)模型就算Ready了(可以上線了)。

以上就是U-Net識(shí)別且去除無(wú)用噪聲的過(guò)程。

第五個(gè)問題(穩(wěn)定性控制),我應(yīng)該如何控制出圖效果?

經(jīng)常玩AI繪畫的小伙伴會(huì)發(fā)現(xiàn),其實(shí)目前大模型最不可控的地方就是它的不穩(wěn)定性。

那么如果想要稍微控制下AI繪畫的效果,有什么好的方法嗎?

這里給出四種方式,供大家參考。

first:調(diào)整Prompt(也就是改描述語(yǔ),本質(zhì)是調(diào)整圖片的CLIP特征)

通過(guò)輸入不同的描述詞,以及更改局部Prompt,一步步引導(dǎo)AI模型輸出不同的圖像,其本質(zhì)就是更改了匹配到的CLIP對(duì)應(yīng)的待處理的圖像特征向量集合,所以最終的出圖會(huì)不斷地調(diào)整、優(yōu)化(這里還有一些玄學(xué)技巧,比如給某些Prompt里的部分起名字,也可以獲得穩(wěn)定性,本質(zhì)是給部分Prompt結(jié)構(gòu)打標(biāo)記,便于AI算法識(shí)別…)。

Second:墊圖(也就是俗稱的img2img,本質(zhì)是加噪聲)

現(xiàn)在主流的AI繪畫軟件和模型都支持墊圖功能,也就是你上傳一張圖,然后根據(jù)你這張圖的輪廓或者大概樣式,再生成一張圖。

其本質(zhì)就是將你上傳的圖疊加幾層噪聲,然后拿這個(gè)疊噪后的圖片作為基礎(chǔ)再讓AI進(jìn)行去噪操作,后續(xù)流程不變,所以最終風(fēng)格、結(jié)構(gòu)和原圖相似的概率很大。

不過(guò)值得一提的是,現(xiàn)在很多Webui還支持選擇和原圖相似度多少的操作,對(duì)應(yīng)到算法上其實(shí)就是在問你要疊加多少層噪聲,當(dāng)然是疊加的噪聲越少,越和原圖相似,反之可能越不像(不過(guò)這也是概率問題,也會(huì)存在疊加的多的時(shí)候生成的圖也比疊加的少的時(shí)候更像)。

Third,插件(通過(guò)第三方插件/工具輔助控制,本質(zhì)是訓(xùn)練模型)

拿最典型、最經(jīng)典的ControlNet來(lái)說(shuō),可以通過(guò)任意條件或要求來(lái)控制生成的效果,基本上可以說(shuō)是指哪打哪的效果了。

其本質(zhì)你可以理解為是通過(guò)一張圖來(lái)訓(xùn)練模型,達(dá)到自己想要的效果。

它把去噪模型整個(gè)復(fù)制了一遍,然后兩個(gè)模型并行處理,一個(gè)做常態(tài)去噪,一個(gè)做條件去噪,最后再合并,達(dá)到穩(wěn)定控制的效果。

Fourth,訓(xùn)練模型(自己拿大量數(shù)據(jù)單獨(dú)訓(xùn)練,本質(zhì)是Finetune)

這個(gè)不解釋了吧,就是你自己有很多圖,自己建個(gè)圖像庫(kù),然后不斷地訓(xùn)練大模型去識(shí)別這些圖像,最終給模型一兩個(gè)詞,大模型就能識(shí)別且生成相似的圖像,這樣就實(shí)現(xiàn)了Finetune一個(gè)自己的小模型的效果。

注意:Finetune需要注意邊界和用力程度,測(cè)試集的效果的評(píng)判指標(biāo)要做好,否則訓(xùn)練時(shí)間很久的時(shí)候,就會(huì)對(duì)小樣本數(shù)據(jù)過(guò)擬合,這樣會(huì)失去大模型的泛化性,可能得不償失(也有解決方案,比如Reply,讓大模型重新學(xué)一遍,或者正則化模型,或者做并行模型,細(xì)節(jié)不展開)。

恭喜,當(dāng)你閱讀到這里的時(shí)候,基本上應(yīng)該已經(jīng)了解了AI繪畫的前龍去脈了,由于是把很多算法文章抽象為了白話文,所以很多細(xì)節(jié)也都略去了,拋磚引玉,有遺漏或不當(dāng)?shù)牡胤剑瑲g迎和大家交流、互相學(xué)習(xí)。

說(shuō)好的福利來(lái)了,相信AIGC死忠粉會(huì)喜歡。

驚喜:分享7個(gè)常見的文圖生成的數(shù)據(jù)集

COCO(COCO Captions)

COCO Captions是一個(gè)字幕數(shù)據(jù)集,它以場(chǎng)景理解為目標(biāo),從日常生活場(chǎng)景中捕獲圖片數(shù)據(jù),通過(guò)人工生成圖片描述。該數(shù)據(jù)集包含330K個(gè)圖文對(duì)。

數(shù)據(jù)集下載鏈接:https://cocodataset.org/

Visual Genome

Visual Genome是李飛飛在2016年發(fā)布的大規(guī)模圖片語(yǔ)義理解數(shù)據(jù)集,含圖像和問答數(shù)據(jù)。標(biāo)注密集,語(yǔ)義多樣。該數(shù)據(jù)集包含5M個(gè)圖文對(duì)。

數(shù)據(jù)集下載鏈接:http://visualgenome.org/

Conceptual Captions(CC)

Conceptual Captions(CC)是一個(gè)非人工注釋的多模態(tài)數(shù)據(jù),包含圖像URL以及字幕。對(duì)應(yīng)的字幕描述是從網(wǎng)站的alt-text屬性過(guò)濾而來(lái)。CC數(shù)據(jù)集因?yàn)閿?shù)據(jù)量的不同分為CC3M(約330萬(wàn)對(duì)圖文對(duì))以及CC12M(約1200萬(wàn)對(duì)圖文對(duì))兩個(gè)版本。

數(shù)據(jù)集下載鏈接:https: //ai.google.com/research/ConceptualCaptions/

YFCC100M

YFCC100M數(shù)據(jù)庫(kù)是2014年來(lái)基于雅虎Flickr的影像數(shù)據(jù)庫(kù)。該庫(kù)由一億條產(chǎn)生于2004年至2014年間的多條媒體數(shù)據(jù)組成,其中包含了9920萬(wàn)張的照片數(shù)據(jù)以及80萬(wàn)條視頻數(shù)據(jù)。YFCC100M數(shù)據(jù)集是在數(shù)據(jù)庫(kù)的基礎(chǔ)之上建立了一個(gè)文本數(shù)據(jù)文檔,文檔中每一行都是一條照片或視頻的元數(shù)據(jù)。

數(shù)據(jù)集下載鏈接:http://projects.dfki.uni-kl.de/yfcc100m/

ALT200M

ALT200M是微軟團(tuán)隊(duì)為了研究縮放趨勢(shì)在描述任務(wù)上的特點(diǎn)而構(gòu)建的一個(gè)大規(guī)模圖像-文本數(shù)據(jù)集。該數(shù)據(jù)集包含200M個(gè)圖像-文本對(duì)。對(duì)應(yīng)的文本描述是從網(wǎng)站的alt-text屬性過(guò)濾而來(lái)。(私有數(shù)據(jù)集,無(wú)數(shù)據(jù)集鏈接)

LAION-400M

LAION-400M通過(guò)CommonCrwal獲取2014-2021年網(wǎng)頁(yè)中的文本和圖片,然后使用CLIP過(guò)濾掉圖像和文本嵌入相似度低于0.3的圖文對(duì),最終保留4億個(gè)圖像-文本對(duì)。然而,LAION-400M含有大量令人不適的圖片,對(duì)文圖生成任務(wù)影響較大。很多人用該數(shù)據(jù)集來(lái)生成色情圖片,產(chǎn)生不好的影響。因此,更大更干凈的數(shù)據(jù)集成為需求。

數(shù)據(jù)集下載鏈接:https://laion.ai/blog/laion-400-open-dataset/

LAION-5B

LAION-5B是目前已知且開源的最大規(guī)模的多模態(tài)數(shù)據(jù)集。它通過(guò)CommonCrawl獲取文本和圖片,然后使用CLIP過(guò)濾掉圖像和文本嵌入相似度低于0.28的圖文對(duì),最終保留下來(lái)50億個(gè)圖像-文本對(duì)。該數(shù)據(jù)集包含23.2億的英文描述,22.6億個(gè)100+其他語(yǔ)言以及12.7億的未知語(yǔ)。

數(shù)據(jù)集下載鏈接:https://laion.ai/blog/laion-5b/

最后,一些題外話:

AIGC技術(shù)的發(fā)展,除了數(shù)據(jù)突破、算力突破、算法突破等等之外。

我覺得最重要的一點(diǎn)是:開源。

開源,代表的是公開、透明、分享、共同進(jìn)步,期待共創(chuàng)。

包括像上面提到的CLIP(OpenAI共享了模型權(quán)重),不可否認(rèn)有些國(guó)家核心技術(shù)不能開源可以理解,但是AI開源這事,確實(shí)可以讓眾多研究人員、科學(xué)家、學(xué)者甚至野生的愛好者獲得最大的信息量和透明度

以此;

在該基礎(chǔ)上快速、健康、多樣化的進(jìn)行衍生和發(fā)展,這是極其有利于整個(gè)AI生態(tài)的長(zhǎng)期、可持續(xù)、良性發(fā)展的。

分享即學(xué)習(xí),AI的新時(shí)代,永遠(yuǎn)是共享、透明的主旋律。

盡量拋棄有個(gè)好想法,閉門造車的狀態(tài),共同打造一個(gè)AIGC環(huán)境和氛圍。

這樣當(dāng)你坐在波音飛機(jī)上的時(shí)候,就可以不用太糾結(jié)坐前排還是坐后排了,因?yàn)槟惚旧硪呀?jīng)在超速前進(jìn)了……

附部分參考資料和CLIP源文檔:

  • OpenCLIP 的 GitHub 網(wǎng)址:https://github.com/mlfoundations/open_clip
  • 15年的擴(kuò)散模型論文:《Deep Unsupervised Learning using Nonequilibrium Thermodynamics》https://arxiv.org/abs/1503.03585
  • 20年的DDPM論文:《Denoising Diffusion Probabilistic Models》https://arxiv.org/abs/2006.11239
  • 《High-Resolution Image Synthesis with Latent Diffusion Models》:https://arxiv.org/abs/2112.10752
  • 《Hierarchical Text-Conditional Image Generation with CLIP Latents》:https://arxiv.org/pdf/2204.06125.pdf
  • 《Adding Conditional Control to Text-to-Image Diffusion Models》:https://arxiv.org/abs/2302.05543
  • 文末驚喜一的7個(gè)數(shù)據(jù)集的原始出處:引自 整數(shù)智能AI研究院《從文本創(chuàng)建藝術(shù),AI圖像生成器的數(shù)據(jù)集是如果構(gòu)建的》
  • 部分繪圖參考思路出處:引自亞馬遜云開發(fā)者《Generative AI新世界 | 走進(jìn)文生圖(Text-to-Image)領(lǐng)域》
  • 部分思路參考出處:引自騰訊云開發(fā)者《【白話科普】10分鐘從零看懂AI繪畫原理》
  • 【科普】你的文字是怎么變成圖片的?https://v.douyin.com/iemGnE9L/
  • 以及部分博客作者的博文

專欄作家

楠神,公眾號(hào):音波楠神,人人都是產(chǎn)品經(jīng)理專欄作家。大廠AI高級(jí)產(chǎn)品經(jīng)理,AIGC商業(yè)模式探索家,長(zhǎng)期探索AI行業(yè)機(jī)會(huì),擅長(zhǎng)AI+行業(yè)的解決方案設(shè)計(jì)及AIGC風(fēng)口、流量感知。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自 Unsplash,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 這么有水平的大佬,竟然也露出了雞腳。

    來(lái)自北京 回復(fù)
    1. 原來(lái)你也??你太美嘛

      來(lái)自浙江 回復(fù)
  2. AI畫圖出來(lái)這么久,總算有大神把這事說(shuō)明白了。

    來(lái)自北京 回復(fù)
  3. 非技術(shù)人員,看的還是似懂非懂的,哈哈。點(diǎn)贊作者分享!

    來(lái)自四川 回復(fù)
专题
30937人已学习14篇文章
不管你是产品、运营还是文案,你都需要懂用户思维。
专题
13100人已学习13篇文章
本专题的文章分享了产品经理数据分析方法论。
专题
88060人已学习12篇文章
世间万物皆有套路,面试更是如此,多拿几个靠谱offer。
专题
12347人已学习16篇文章
栅格系统在页面排版布局、尺寸设定方面给了设计者直观的参考,它让页面设计变得有规律,从而减少了设计决策成本。本专题的文章分享了浅析栅格系统。
专题
32152人已学习19篇文章
一个合格的购物车是怎么设计出来的?
专题
13448人已学习12篇文章
一款产品,若想做到极致满足用户的需求,产品功能会变得越发臃肿。但在产品设计中,也可以做做减法,去除一些不必要或不重要的功能和元素。本专题的文章分享了如何给产品做减法。