認識了sd和國內(nèi)版的平替liblib,有的小伙伴現(xiàn)在已經(jīng)迫不及待的想開始做畫了宪卿,執(zhí)行力強的小伙伴已經(jīng)用stay body fusion做出一些自己喜歡的圖片苫纤。
畢竟stability fusion不像major journey有張數(shù)的限制谦屑,我們可以在服務(wù)器上無限的作畫甫贯,無限的測試,它相較于miss jenny更專業(yè)一些牍戚,這對于我們新手來說還是很友好的侮繁。
今天我們來聊一聊這個stability就是繪畫的底層原理,畢竟我覺得通過了解這個stability fusion的底層原理如孝,我們才能更好的去控制它宪哩。我最近看了stability fusion相關(guān)的論文和一些視頻,里面涉及到一些專業(yè)的理論比如擴散算法第晰,神經(jīng)網(wǎng)絡(luò)锁孟,我試著用簡單的語言方式把這個ai繪圖的原理和過程解釋出來。
我站在窗前茁瘦,望著天津大學的校園品抽,一陣秋風吹過,零星的楊樹葉隨風飄落在柏油路上甜熔。說實話圆恤,看到這個我就突然開悟了,這個就是AI繪圖的原理啊腔稀。stable de fusion的核心原理呢盆昙,就是一個逆向降噪過程,舉個栗子焊虏,咱們來看一下這個圖淡喜,草坪上落了星星點點的花瓣,我們把草坪上的一片片花瓣看成圖片上的噪點诵闭。原來干凈的草坪被花瓣逐漸的填滿炼团,就是一個給圖片加噪點的過程澎嚣,這個過程在技術(shù)上來說呢,并沒有什么難度瘟芝。真正有難度的是把一張鋪滿噪點的圖片逆向恢復(fù)成原圖像易桃,就好比說把一個鋪滿花瓣的草坪用某種方法逆向還原成原來干凈草坪的樣子,而這個過程呢模狭,其實也就是ai繪圖的過程颈抚。
不論是stable diff US還是made journey,他在繪圖的時候都是先給出一個模糊的的圖片嚼鹉,然后這個圖片逐漸的清晰。本質(zhì)上呢驱富,這就是一個通過算法給圖片降噪的過程锚赤。那么現(xiàn)在就有兩個問題,第一就是為什么要給這個圖片加噪點褐鸥,第二呢线脚,就是這個噪點應(yīng)該如何去去除?我們先來說第一個問題啊叫榕,為什么要給這個圖片加噪點浑侥,其實就是為了給圖片降維,圖片是由一個個有顏色的像素排列而成的晰绎,而這個像素的顏色寓落,我們可以用這個rgb值來表示,如果一張512×512像素的圖片荞下,那么這張圖片在計算機的眼中就可以被轉(zhuǎn)化為512×512×3的一組數(shù)字伶选,這個三呢就代表紅綠藍三個是組合的像素顏色。對于計算機來說呢尖昏,讀取786432枚的數(shù)據(jù)是很容易的仰税,但是如果把它放在算法里去跑,顯然這個維度太高了抽诉,對神經(jīng)網(wǎng)絡(luò)學習陨簇,對算力有相當高的要求,顯然不是一張家用的顯卡能搞定的迹淌。解決這個問題的辦法呢河绽,也很簡單,就是通過加噪點給圖片進行降維巍沙。我們還是拿這個眼前的草坪來舉例子葵姥,大家把上面的花瓣想象成噪點,但我們一看到這個圖片就能知道它是一個草坪句携,雖然上面也有很多的花瓣榔幸,但它其實并沒有完全的蓋住草坪,所以我們大腦里看到這個景象的時候,已經(jīng)接收到了足夠的信息削咆,告訴我們花瓣下面的這個東西就是草坪牍疏。同樣的道理,我們通過不斷的給圖片加噪點拨齐,然后去訓練ai 鳞陨,ai就能逐漸的從一個滿是噪點的圖片中提取到這個圖片的關(guān)鍵信息,繼而知道這個圖片內(nèi)容是什么瞻惋。但是注意啊厦滤,我這里用的是不斷的給圖片加造,也就是說這個過程是循序漸進的歼狼,而在這個循序漸進的過程中掏导,ai只抓取到了重點的信息,對這張圖片進行了標注羽峰,因此它所用到的數(shù)據(jù)量相對于原圖來說是非常小的趟咆。小代表著兩件事情。第一梅屉,他可以學習更多的圖片值纱,而眾多的圖片通過ai的學習和分類被打包成了我們所謂的模型。第二坯汤,更少的信息代表著需要更少的算力虐唠,這也讓stability fusion有了在消費級顯卡上運行的可能性。
其實今天寫的stable di fusion的原理玫霎,也是一個降維的過程凿滤。因為關(guān)于stability fusion的具體原理還有神經(jīng)網(wǎng)絡(luò)是怎么運作的?不是一句話就能講清楚的庶近,需要大量的論文和專業(yè)知識翁脆,但是我把其中的一些關(guān)鍵點用比喻的方式講出來,方便理解鼻种,這實際上呢反番,也是對知識的一種降維,它的好處就是大家大概能理解sd運行的原理叉钥,比起看論文省去了大量的時間和腦細胞罢缸。缺點就是大家只是大概了解了,并沒有掌握它投队,因為這個知識被降維了枫疆。
第二個問題,這個噪點如何去去除敷鸦,說起這個問題呢息楔,又要涉及到一大堆名詞什么ve寝贡。1 unit呀clip呀巴拉巴拉巴拉什么之類的,那咱們 還是回到我們的草坪啊值依。如果說現(xiàn)在是一片草坪圃泡,上面只有一個花瓣,我們想把這個草坪恢復(fù)原貌是非常容易的愿险,只需把這個花瓣拿掉就可以了颇蜡。如果說又落下一片花瓣,想恢復(fù)原貌也容易辆亏,先把第二片花瓣拿掉风秤,然后就成了剛才這個只有一片花瓣的狀態(tài),再把第一片花瓣也拿掉扮叨,就恢復(fù)了唁情。以此論推,假設(shè)落了N次花瓣甫匹,只需要先把它恢復(fù)到第N-1的狀態(tài),然后類似剝洋蔥似的層層迭代惦费,就恢復(fù)到了最開始的狀態(tài)兵迅。而對應(yīng)到我們sd上面就是我們的采樣,通過上面說的清除花瓣的例子薪贫,我們能理解恍箭,步數(shù)越高,理論上來說瞧省,最后的效果也就越好扯夭。假如采樣步驟只有一步,相當于清潔工只清理了一下鞍匾,清理的效果交洗,也一定會非常的差。橡淑,那么我們清理花瓣的過程构拳,其實就是一個圖片降噪的過程,在ai的運行中會有專門的算法去預(yù)測圖片的噪點梁棠,然后每次迭代的去降噪置森,這也就是我們?yōu)槭裁纯吹絤ade journey或者stability fusion作圖的時候剛出來的這個圖片都是模糊的,然后逐漸清晰的原因符糊,因為這就是AI的不斷的迭代和降噪凫海。而對應(yīng)到sd里,這個步驟就是采樣器男娄,在sd的的后臺有不同的采樣器行贪,我們可以理解為對一個落滿花瓣的操作的不同的細節(jié)方法我們的呢有的人是一片片片去剪漾稀,有的人是用這個吸塵器吸,有的人用笤帚掃的瓮顽。大家如果還不理解的話可以想一想這個春天滿地的落花夏天滿天的飛沙秋天飄下的落葉還有冬天飄落的雪花其實都是一個加噪和降噪的過程如果說這個ai是一門藝術(shù)的話那這門藝術(shù)它肯定是源于生活的好我們現(xiàn)在呢县好。
大概知道了,這個ai是怎么通過降噪去畫出一張圖的暖混,那它又是如何根據(jù)我們的指令去作圖的缕贡?比如我告訴這個ai說給我畫一條太空中的狗,那他是怎么畫出來的拣播?要做到這個呢晾咪,需要兩個條件,首先呢贮配,就是我們上面講到的谍倦,必須有一個足夠大的降維的,能夠快速提供運算的圖片的數(shù)據(jù)庫泪勒,這個東西呢昼蛀,也就是我們通常說的模型,第二點呢圆存,就是要讓ai去理解我們要求的意思叼旋,并且呢,可以在模型中找到我們符合要求的圖片的庫去進行創(chuàng)作沦辙,那第一點呢夫植,我剛剛已經(jīng)說到了,就是通過這個降維和擴散算法來解決油讯,那我們來說一下這個第二點详民,說實話,我也沒有想到一個太好的比喻啊陌兑,但是其實那也不太難理解沈跨。簡單的說呢,就是我們說的每一個詞诀紊,在這個ai看來它都是一個數(shù)字谒出,這個就用到一個叫transformer的模型,chan的ppt里那個t啊邻奠,就是代表這個transform其實理解了圖片降維之后transform也可以簡單的理解為對文的一個降維笤喳,比如說太空中的狗,那么這個太空啊碌宴,可能就被ai轉(zhuǎn)換為數(shù)字十這個狗呢杀狡,可能會被轉(zhuǎn)換為數(shù)字20注意啊,我這里只是打個比方贰镣,這個數(shù)字肯定是不對的呜象,但是我們現(xiàn)在假設(shè)這個數(shù)字是對的膳凝,然后ai再通學習呢,將這個20的狗和我們圖片模型中狗的部分恭陡,比如說這個坐標是30相對應(yīng)蹬音,那么當我們輸入這個狗的時候ai就知道哦,我接收到了一個20休玩,然后著淆。我應(yīng)該去圖片素材庫里找這個30的坐標,那么這個30的坐標就代表著有許多拴疤。狗的圖片所以這就是為什么ai可以理解我們要求的意思并做出相應(yīng)的圖片就是因為他把這個文字的坐標和我們圖片的坐標做了一個對應(yīng)但是說歸這么說啊其實實際操作的過程會比這個復(fù)雜很多大家肉眼可見的就是ai在收到我們指令的時候他會先出一個很模糊的圖像然后再進行迭代圖片才會逐漸的清楚這就好比是一個小孩在這個積雪上畫一輛汽車他先畫出來一個車輪然后呢又下起雪來了他就回家休學習了一下學會了這個怎么畫車門然后雪停了之后他又出來他就把這個車門畫好了然后又下起雪來了他又回家休息了一下然后學會了這個畫車窗然后雪又停了他就又出來把這個車窗永部,畫也畫好,就這么去呐矾,反反復(fù)復(fù)的操作苔埋。這個下雪呢?就好比是在加造蜒犯,然后這個畫畫呢逻淌,就好比是在降噪马澈,最后呢小压,等這個雪停了之后掏愁,車也就畫好了。這個比喻可能不是那么的貼切啊毫炉,但是這個也是我現(xiàn)有的智商下能想到的恰當?shù)谋扔髁耍蚕M蠹夷芾斫馕疫@個意思削罩。那這節(jié)課呢瞄勾?說實話,有點無聊弥激,因為它太偏理論了进陡,可能很多小伙伴聽了會打瞌睡啊,但是我也實在想不出這個更好的解釋方式了微服,起碼感覺用這種比喻的方式來解釋趾疚,要比大家去看論文的話來的容易一些,那我們通過這節(jié)課打好了基礎(chǔ)之后以蕴,下節(jié)課呢糙麦,我們就可以開始實操了。