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

4 評(píng)論 6610 瀏覽 23 收藏 36 分鐘

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

寫在前面

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

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

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

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

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

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

先看總述:AI繪畫的繪制過程

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

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

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

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

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

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

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

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

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

圖像繪制:Designed byLiunn

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

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

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

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

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

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

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

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

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

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

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

按照上面所說的原理,圖片是被一點(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ù)來訓(xùn)練,另一方面又需要高效且快捷的處理,能承擔(dān)這個(gè)任務(wù)的,就是Openai在21年推出的OpenCLIP。

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

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

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

每次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è)不同的角度來描述這個(gè)圖)。

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

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

圖像繪制:Source: Designed byLiunn

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

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

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

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

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

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

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

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

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

好了,我們?cè)賮砜碈LIP是如何做到文本圖像的匹配的。

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

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

圖像繪制: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)簽的方式來不斷堆人了。

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

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

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

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

生成模型主要是生成圖像的,通過扔進(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

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

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

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

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

但問題又來了

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

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

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

擴(kuò)散模型最早是由斯坦福和伯克利學(xué)術(shù)專家,在2015年相關(guān)論文里提出的,依據(jù)正態(tài)分布給圖像逐步增加噪聲,到了2020年加噪聲的過程被改為根據(jù)余弦相似度的規(guī)律來處理。(文末附上了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í)別無用噪聲,精準(zhǔn)降噪。

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

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

但是這里有個(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都沒有吧?有的話 私我?。?/p>

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

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

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

圖像繪制:Designed byLiunn

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

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

現(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í),相同位置的信息在編碼、解碼過程中可以方便快捷的進(jìn)行信息傳輸。

那它是怎么工作的呢?

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

U-Net也是如此。

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

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

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

圖像繪制思路: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ì)通過圖像解壓器也就是VAE模型,重新還原回來,被重新釋放到像素空間里(可以理解為IPhone里云端存儲(chǔ)的照片,你最開始看的是縮略圖,當(dāng)你點(diǎn)開大圖想看的時(shí)候,會(huì)慢慢從云端下載,變成高清的)。

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

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

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

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

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

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

先看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

再來看U-net是怎么處理的。

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

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

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

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

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

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

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

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

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

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

通過輸入不同的描述詞,以及更改局部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)和原圖相似的概率很大。

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

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

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

其本質(zhì)你可以理解為是通過一張圖來訓(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è)圖像庫,然后不斷地訓(xùn)練大模型去識(shí)別這些圖像,最終給模型一兩個(gè)詞,大模型就能識(shí)別且生成相似的圖像,這樣就實(shí)現(xiàn)了Finetune一個(gè)自己的小模型的效果。

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

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

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

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

COCO(COCO Captions)

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

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

Visual Genome

Visual Genome是李飛飛在2016年發(fā)布的大規(guī)模圖片語義理解數(shù)據(jù)集,含圖像和問答數(shù)據(jù)。標(biāo)注密集,語義多樣。該數(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屬性過濾而來。CC數(shù)據(jù)集因?yàn)閿?shù)據(jù)量的不同分為CC3M(約330萬對(duì)圖文對(duì))以及CC12M(約1200萬對(duì)圖文對(duì))兩個(gè)版本。

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

YFCC100M

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

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

ALT200M

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

LAION-400M

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

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

LAION-5B

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

數(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)有些國家核心技術(shù)不能開源可以理解,但是AI開源這事,確實(shí)可以讓眾多研究人員、科學(xué)家、學(xué)者甚至野生的愛好者獲得最大的信息量和透明度。

以此;

在該基礎(chǔ)上快速、健康、多樣化的進(jìn)行衍生和發(fā)展,這是極其有利于整個(gè)AI生態(tài)的長期、可持續(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è)模式探索家,長期探索AI行業(yè)機(jī)會(huì),擅長AI+行業(yè)的解決方案設(shè)計(jì)及AIGC風(fēng)口、流量感知。

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

題圖來自 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. 這么有水平的大佬,竟然也露出了雞腳。

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

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

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

    來自四川 回復(fù)