1、序言
大家好,歡迎來到AI手工星的頻道,我是專注AI領(lǐng)域的手工星。AIGC已經(jīng)成為AI又一個非常爆火的領(lǐng)域,并且與之前的AI模型不同,AIGC更適合普通人使用,我們不僅可以與chatgpt對話,也能通過繪畫模型生成想要的圖片。很多朋友都想去深入的了解和掌握AIGC的原理,但是AIGC需要一定的學(xué)習(xí)成本,其入門門檻較高。因此手工星制作了這一系列的入門教程,希望能夠幫助到有需要的朋友。大家注意哦,由于AIGC的范圍較廣,而手工星的能力有限,因此這一系列的入門教程將限定在適用于圖像、視頻生成的擴(kuò)散模型領(lǐng)域,手工星將圍繞擴(kuò)散模型的原理,環(huán)境搭建、使用、改進(jìn)、數(shù)學(xué)推導(dǎo)等多個方面來幫助大家入門。注意到這里手工星將數(shù)學(xué)推導(dǎo)放在了最后,那是因為手工星覺得對于擴(kuò)散模型一開始就講解數(shù)學(xué)推導(dǎo),會令很多朋友索然無味,早早放棄。我們先通過感性的方式認(rèn)識擴(kuò)散模型,使用擴(kuò)散模型,了解了一些基本概念,有了一定的實踐基礎(chǔ)之后,再去推導(dǎo)數(shù)學(xué)公式就水到渠成了??傊?,這個系列的規(guī)劃大致就是這樣子的,可能的文章順序大概是這樣的(不排除編寫過程中做調(diào)整):
- AIGC入門系列1:感性的認(rèn)識擴(kuò)散模型
- AIGC入門系列2:如何控制擴(kuò)散模型生成我們想要的內(nèi)容
- AIGC入門系列3:什么是潛在擴(kuò)散模型
- AIGC入門系列4:擴(kuò)散模型的應(yīng)用(文生圖、圖生圖以及圖像編輯)
- AIGC入門系列5:擴(kuò)散模型環(huán)境搭建(diffusers)
- AIGC入門系列6:在diffusers上嘗試文生圖、圖生圖以及圖像編輯
- AIGC入門系列7:DreamBooth
- AIGC入門系列8:ControlNet
- AIGC入門系列9:擴(kuò)散模型的數(shù)學(xué)原理
- AIGC入門系列10:擴(kuò)散模型的改進(jìn)
- AIGC入門系列11:擴(kuò)散模型的展望
由于手工星工作比較忙,出教程的速度可能無法保證,還請大家多多見諒。如果你喜歡手工星的頻道的話,記得點贊收藏哦。
2、什么是擴(kuò)散模型?
2.1、污水的擴(kuò)散
本期教程作為AIGC入門系列的第一篇,我們來聊聊什么是擴(kuò)散模型。當(dāng)然,我們限定在感性認(rèn)知的前提下。首先想到擴(kuò)散,我們很容易想到這是一個由小到大,或者由淺入深的過程。例如,工廠偷偷向湖泊里面排放污水,污水會逐漸擴(kuò)散,最后將整個湖泊都污染了,使得我們原來干凈透徹的湖水變得面目全非。
那么如果我們要治理污水,恢復(fù)湖泊本來的面目。我們可以怎么做呢?第一步,我們可以先用化學(xué)試劑與污染物起反應(yīng),消除掉一部分污染物,此時河面會稍微清澈一些。然后我們可以往河水里加入絮凝劑,又可以沉淀掉一些污染物,河水也更干凈了一些。最后我們可以種植一些能夠吸收污染物的綠色植物,將湖泊里的污染物徹底清理干凈。自此,前面擴(kuò)散的污染就被全部清理干凈,湖泊恢復(fù)了本來的面貌。(注意哦,手工星完全不懂治污流程,上面的過程純粹是瞎編的!)
通過上面的流程,我們其實就已經(jīng)經(jīng)歷了擴(kuò)散與逆擴(kuò)散的過程。工廠偷偷排污,以致于污染了整個湖泊,這就是一個污染物擴(kuò)散的過程;而治理污水就是一個逆擴(kuò)散的過程,將擴(kuò)散出來的污染物一點點的清除掉。有了這個感性的認(rèn)識,我們再來看看AIGC當(dāng)中大名鼎鼎的擴(kuò)散模型。
2.2、擴(kuò)散模型的概念
如果我們對一張干凈的圖片進(jìn)行“排污",這里我們用高斯噪聲作為污染物,所以"排污"就是對圖片加噪的過程。那么隨著持續(xù)的加噪,噪聲擴(kuò)散的強(qiáng)度越來越大,使得我們原來干凈的圖片變得逐漸模糊,以至于最后面目全非,完全分辨不出是一個騎行的小姐姐了,如下圖所示。
如果此時我們訓(xùn)練一個“治污模型”,它能夠?qū)D片恢復(fù),就像上面的湖泊“治污”流程那樣,一步一步的治理污染,去除噪聲,慢慢的將面目全非的圖片恢復(fù)到干凈的原始圖片,如下圖所示。
那么這個“治污模型”就是一個非常好用的生成模型了。為什么這么說呢?這個“治污模型”不只是把一張被污染的很嚴(yán)重的圖片給恢復(fù)了而已嗎?它并沒有生成新的圖片???這個思考非常棒,也很有代表性。那么既然它沒法生成新的圖片,為什么手工星稱它已經(jīng)是一個非常好用的生成模型呢?其實它確實具備了生成圖片的能力。因為當(dāng)你把一張圖片持續(xù)加噪,得到一張面目全非的圖片,那么這張面目全非的圖片,實際上跟我們直接從高斯分布隨機(jī)取一張噪聲圖,是等價的。也就是說,當(dāng)有了一個“治污”模型之后,我們直接送給他一張隨機(jī)生成的噪聲圖,它也能通過一步一步的去噪流程,生成一張符合我們審美的圖片了。amazing!是不是很神奇,這樣的話,我們是不是確實可以稱它為“生成模型了”。
2.3、時間步的概念(time-step)
前面的流程我們一直在強(qiáng)調(diào)一步一步的加噪或者一步一步的降噪。為什么沒法一步到位,直接進(jìn)行一步加噪和一步降噪呢?想象一下我們湖泊污染過程,污水是慢慢擴(kuò)散到整個湖泊的,而不是瞬間就把整個湖泊給污染了。同樣的,治污過程也不是一蹴而就的,沒法直接快速的將所有污染治理干凈,一般都是一步一步,一點一點的治理的。這在直覺上很好理解,一步一步的操作總要比一步到位簡單很多,同樣的在擴(kuò)散模型中也是一步一步的降噪比一步到位的降噪更容易學(xué)習(xí)。因此也會有更好的效果。所以擴(kuò)散模型中一般都有時間步的概念(time-step),就是事先定義好花多少步將一張圖片完全加噪為面目全非的隨機(jī)噪聲,同樣也對應(yīng)著降噪過程花多少步慢慢的恢復(fù)到正常圖片。當(dāng)然,這里的時間步會存在一個矛盾,就像治理污水一樣,步數(shù)太多,雖然每一步的效果比較容易保證,但是需要的步數(shù)太多,流程太慢。而步數(shù)如果定義的太少,那么雖然效率提升了,但是并不容易得到好的恢復(fù)效果。不過最后,手工星還是要友情提醒一下,這里是我們感性認(rèn)識擴(kuò)散模型的部分,實際上的加噪過程是可以通過數(shù)學(xué)公式簡化,實現(xiàn)一步到位的。但是對于目前我們?nèi)腴T來說,可以暫時先不考慮優(yōu)化。另外這個時間步通常是很大的,例如可以是1000步,所以當(dāng)前階段,大家只要要時間步的概念,并且知道它通常是比較大的就行了。
3、擴(kuò)散模型的訓(xùn)練
我們都知道,AI是基于學(xué)習(xí)的方法。AIGC也不例外,擴(kuò)散模型也不例外。學(xué)習(xí)就意味著需要提供很多數(shù)據(jù)。那么我們需要如何準(zhǔn)備數(shù)據(jù)才能訓(xùn)練出一個治污高手模型(去噪模型)呢?這里我們使用一個例子來說明。手工星非常喜歡寵物狗,手機(jī)壁紙都是狗子的圖片,每次鎖屏都想看到不一樣的狗子,奈何手機(jī)里面狗子的圖片不多。因此想用擴(kuò)散模型方法訓(xùn)練一個去噪模型,這樣就能生成無窮無盡的狗子圖片。
首先是搜集狗子的圖片,并且越多越好,于是手工星從網(wǎng)絡(luò)上爬取了大量的狗子圖片,做成了一個狗子數(shù)據(jù)集。
然后我們開發(fā)一個“排污”程序(加噪程序),它的作用就是按照前面介紹的加噪方法,給正常圖片一步一步的加入噪聲,直到圖片面目全非。然后從加噪過程隨機(jī)選擇一些“時間步-噪聲-加噪后圖片”組成的訓(xùn)練三元組。
有了這些訓(xùn)練三元組,我們就可以很方便的訓(xùn)練去噪模型了。對于去噪模型來說,輸入就是加噪后的圖片以及時間步,輸出就是去噪模型預(yù)測的噪聲。我們訓(xùn)練的目的就是讓去噪模型在每一個時間步預(yù)測的噪聲和真實噪聲盡量接近。當(dāng)經(jīng)過幾萬、幾十萬次的訓(xùn)練后,我們的去噪模型預(yù)測的噪聲已經(jīng)和真實噪聲非常接近了。
4、擴(kuò)散模型的推理
有了上面訓(xùn)練出來的狗子去噪模型,下面就是激動人心的時刻了,我們可以使用去噪模型生成狗子圖片了。首先我們從高斯分布中隨機(jī)采集一張高斯噪聲圖片,然后送入到去噪模型當(dāng)中,假設(shè)我們的時間步設(shè)置的是1000,那么就將高斯噪聲圖片經(jīng)過去噪模型的1000次降噪,最后就會得到一個狗子圖片了。而且這個狗子圖片和我們訓(xùn)練數(shù)據(jù)中的狗子圖片不一樣,完全是去噪模型生成出來的,就像是我們的大腦腦補(bǔ)出來的圖片一樣。并且當(dāng)我們采集的高斯噪聲不同,生成出來的狗子圖片也完全不同,此時我們就已經(jīng)實現(xiàn)了一個能夠生成無窮無盡狗子圖片的“生成模型”了!
文章來源:http://www.zghlxwxcb.cn/news/detail-776617.html
5、總結(jié)
這一期的感性認(rèn)識擴(kuò)散模型到這里就結(jié)束了,是不是并沒有想象相中的那么難!我們從湖泊的污染和治理說起,引申到圖片的加噪與去噪。最后介紹了如何用去噪模型生成圖片。下一期我們將介紹擴(kuò)散模型中的文本控制。大家有沒有發(fā)現(xiàn)我們現(xiàn)在的生成模型缺少控制能力。例如上面介紹的狗子去噪模型,它訓(xùn)練完之后確實能生成狗子的圖片,但是假如我想生成一張黃皮膚、大眼睛的狗子圖片,我們的狗子去噪模型就無能為力了。因為它生成的圖片具有一定的隨機(jī)性,雖然是一只狗子,但是狗子的屬性我們完全無法控制。而在很多生成領(lǐng)域,我們其實是希望能夠具體控制模型生成的效果的。因此下一期將介紹如何通過文本描述來控制模型生成一張符合我們要求的圖片,喜歡的朋友可以收藏手工星的頻道“AI手工星”,我們下期見吧。文章來源地址http://www.zghlxwxcb.cn/news/detail-776617.html
到了這里,關(guān)于AIGC入門系列1:感性的認(rèn)識擴(kuò)散模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!