白話科普 | 一次性搞懂AI繪畫是如何生成圖像的!
為什么我們輸入一句話,人工智能便能產(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繪畫也就清晰了:
- 我只輸入了一句話,AI是怎么知道這句話描述的是什么?
- AI繪畫流程里提到的噪聲圖是哪里來的?
- 就算有了噪聲圖,噪聲圖是怎么被一點(diǎn)一點(diǎn)去掉“馬賽克”的?
- 那AI是怎么去掉無用的“馬賽克”的,最終去掉后是符合效果的?
- 就算有了最終效果,為什么重新作畫的結(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ù)測了三件事:
- 噪聲均值(mean of noise):預(yù)測每個(gè)時(shí)間步長的噪聲均值。
- 原始圖像(original image):直接預(yù)測原始圖像,一步到位。
- 圖像噪聲(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è)步驟:
- 從圖文數(shù)據(jù)集中隨機(jī)選擇照片;
- 生產(chǎn)不同強(qiáng)度的噪聲,順次排列;
- 隨機(jī)選擇某個(gè)強(qiáng)度的噪聲;
- 將該噪聲加到圖片里。
圖像繪制思路: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ù)。
這么有水平的大佬,竟然也露出了雞腳。
原來你也??你太美嘛
AI畫圖出來這么久,總算有大神把這事說明白了。
非技術(shù)人員,看的還是似懂非懂的,哈哈。點(diǎn)贊作者分享!