自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Stable Diffusion如何在企業(yè)中落地

原創(chuàng) 精選
開(kāi)發(fā) 項(xiàng)目管理
很多時(shí)候非技術(shù)人員或初學(xué)者在用Stable Diffusion或者在網(wǎng)上拿過(guò)來(lái)的做訓(xùn)練的時(shí)候,他們最大的問(wèn)題是不知道用多大的數(shù)據(jù)集,即便知道了用多大的訓(xùn)練集,也不知道再訓(xùn)練多少步,而知道該訓(xùn)練多少步后,又不知道該訓(xùn)練到什么時(shí)候停止。

嘉賓 | 黃鴻波

整理 | 徐杰承

本文整理自西山居人工智能技術(shù)專家黃鴻波在WOT2023大會(huì)上的主題分享,更多精彩內(nèi)容及現(xiàn)場(chǎng)PPT,請(qǐng)關(guān)注51CTO技術(shù)棧公眾號(hào),發(fā)消息【W(wǎng)OT2023PPT】即可直接領(lǐng)取。

圖片圖片

本次分享主要圍繞Stable Diffusion的技術(shù)原理和落地來(lái)展開(kāi)。第一部分為Stable Diffusion的工作原理。第二部分是Stable Diffusion做穩(wěn)定的訓(xùn)練的主要方法。第三部分則是如何在企業(yè)或團(tuán)隊(duì)里將Stable Diffusion落地。

1、Stable Diffusion的工作原理

Stable Diffusion實(shí)際上是擴(kuò)散模型,在Latent的模型里專用于做文圖生成的任務(wù),是基于LDM來(lái)構(gòu)建的。LDM是通過(guò)在一個(gè)潛在的表示空間中去迭代“去噪”,對(duì)數(shù)據(jù)進(jìn)行降噪和還原來(lái)進(jìn)行編解碼。最后在GPU上進(jìn)行圖片生成,降低落地門檻,帶來(lái)文生圖的體驗(yàn)。

其實(shí)文生圖技術(shù)早在幾年前就已經(jīng)有了,但那時(shí)候文生圖還是一個(gè)拼算力的東西,需要大量的算力,一般使用4卡或8卡的P100組合進(jìn)行訓(xùn)練,需要單獨(dú)訓(xùn)練文本的部分、單獨(dú)訓(xùn)練圖像部分。

那時(shí)還會(huì)用到一些模型生成網(wǎng)絡(luò),加上文本的生成,生成一張圖需要20秒、30秒甚至一分鐘,并且無(wú)法保證圖片質(zhì)量。另外一點(diǎn),生成內(nèi)容效果比較單一,彼時(shí)的技術(shù)只能生成例如一只貓、一只狗等圖像,無(wú)法理解太過(guò)復(fù)雜的語(yǔ)義。

而Stable Diffusion的出現(xiàn)或者說(shuō)LDM的出現(xiàn),解決了之前文生圖方向的一些缺點(diǎn)。Stable Diffusion準(zhǔn)確來(lái)說(shuō)是基于Latent Diffusion Models的整體架構(gòu),也就是LDM的架構(gòu)來(lái)完成的。

圖片圖片

其中主要分為三大部分。第一是Pixel部分的內(nèi)容,編解碼器,把圖像進(jìn)行編碼,其次經(jīng)過(guò)Latent Space,進(jìn)行Diffusion傳播,進(jìn)行去噪,然后進(jìn)行編輯,再進(jìn)行解噪。

整體來(lái)說(shuō),Stable Diffusion在訓(xùn)練的過(guò)程中是通過(guò)文本和圖像進(jìn)行匹配,然后進(jìn)入VAE和U-Net中進(jìn)行訓(xùn)練,訓(xùn)練后就可以理解文本和圖像的匹配的關(guān)系。之后再去加入新的文本,讓其進(jìn)行擴(kuò)散學(xué)習(xí),通過(guò)噪音的疊加部分,最后在潛在空間上進(jìn)行多次迭代,回到原始圖像。

圖片圖片

U-Net是從噪聲中生成圖像主要的模塊,其原理是通過(guò)預(yù)測(cè),在過(guò)程中反復(fù)調(diào)用U-Net模塊,將U-Net輸出噪聲的Slice從原有噪聲中進(jìn)行去除,得到一個(gè)去除后的結(jié)果。所以它一共分成三部分,像ResnetBlock、Transformer結(jié)構(gòu)、上采樣和下采樣的內(nèi)容,加在一起就是U-Net的結(jié)構(gòu)。

Diffusion的過(guò)程,其實(shí)就是擴(kuò)散的原理,將一個(gè)圖像通過(guò)各種各樣的迭代噪聲,產(chǎn)生最后的噪聲。下面通過(guò)噪聲,通過(guò)U-Net再還原成圖像,其實(shí)就是一個(gè)Forward的正常擴(kuò)散和逆向擴(kuò)散的過(guò)程。

圖片圖片

正向擴(kuò)散是逐步對(duì)圖像加入高斯噪聲,然后通過(guò)噪聲的迭代逐步增加,使得在每一步的過(guò)程中,高斯程度越來(lái)越高,就會(huì)產(chǎn)生一系列的噪聲圖像,最后得到的就是x-T。x-T會(huì)經(jīng)過(guò)U-Net的模型在x-T中進(jìn)行Denoising的解碼的工作,將所生成的噪聲模型進(jìn)行反向解碼得到清晰的圖。

與正向不同,逆向擴(kuò)散不能進(jìn)行反轉(zhuǎn)噪聲,直接進(jìn)行噪聲反轉(zhuǎn),是沒(méi)有辦法計(jì)算的。因?yàn)楦咚钩潭仍鲩L(zhǎng)是一個(gè)不可逆的過(guò)程,所以需要在Diffusion中訓(xùn)練神經(jīng)網(wǎng)絡(luò),來(lái)近似進(jìn)行q的還原,通過(guò)不斷迭代,使其形成一個(gè)服從正態(tài)分布的整體的形象,從而定義反轉(zhuǎn)。所以其逆向和正向的處理過(guò)程在這里是不同的。

2、如何利用Stable Diffusion訓(xùn)練出穩(wěn)定效果

對(duì)于媒體、游戲領(lǐng)域的公司來(lái)說(shuō),美術(shù)的要求會(huì)比較嚴(yán)格。例如一款游戲分國(guó)內(nèi)版、美版、日版,雖然從用戶角度來(lái)看,角色設(shè)計(jì)大同小異,但實(shí)際上美版和日版的美術(shù)設(shè)計(jì)可能會(huì)更符合美國(guó)或日本的審美,國(guó)內(nèi)則又是另一種審美,美術(shù)的實(shí)際細(xì)節(jié)并不一樣。

除此之外,國(guó)內(nèi)的許多武俠游戲,在大眾看來(lái),角色都是穿著長(zhǎng)袍、漢服或唐裝,外形看起來(lái)都一樣。但深度玩家會(huì)知道游戲存在著什么樣的特性,看到游戲的畫(huà)風(fēng),就能憑經(jīng)驗(yàn)知道是哪一款游戲。文生圖最大的矛盾,其實(shí)就在這里,程序員和美術(shù)的關(guān)注點(diǎn)是不同的。

想要解決這個(gè)矛盾,讓文生圖能夠生成符合美術(shù)要求的圖像,首先要了解什么是DreamBooth。DreamBooth是一個(gè)特征詞+類別標(biāo)簽。在做DreamBooth的訓(xùn)練或Stable Diffusion訓(xùn)練時(shí),一般的訓(xùn)練方式都是基于SD1.5、SD1.4或2.0來(lái)進(jìn)行的。

圖片圖片

但在原始模型中可能已經(jīng)存在了一些形象的概念,再專門訓(xùn)練某形象,需要讓模型知道這個(gè)形象要用符號(hào)代替。訓(xùn)練完成后,當(dāng)輸入特定符號(hào),就會(huì)出現(xiàn)特定的形象,這是DreamBooth的優(yōu)勢(shì),但同樣也是弊端。

例如使用Hugging Face時(shí),訓(xùn)練DreamBooth會(huì)讓你提供Prompt,以輸入“a abc dog”為例,增加類別為“a dog”,“abc”則是特定符號(hào),加上類別的好處在于它既學(xué)會(huì)了特定符號(hào)特征,又同時(shí)不會(huì)忘記類別特征。它的目的在于讓模型既學(xué)會(huì)新的知識(shí),又不會(huì)去忘掉舊的內(nèi)容。如果不加類別,新的知識(shí)學(xué)到了,但迭代的次增多,舊的知識(shí)可能反而會(huì)被忘記。

圖片圖片

LoRA則是一個(gè)比較常用的凍結(jié)式的微調(diào)模型。例如在原始的擴(kuò)散模型中,通過(guò)輸入,經(jīng)過(guò)各種各樣的模塊到輸出。這種模型的問(wèn)題在于每次訓(xùn)練時(shí),都要從頭到尾去訓(xùn)練,相當(dāng)于訓(xùn)練整個(gè)Stable Diffusion,這需要的顯存會(huì)比較高、對(duì)算力的要求比較高、對(duì)于數(shù)據(jù)集也會(huì)有比較高的要求。

微軟提出的LoRA方式,作用是把模型的大部分進(jìn)行凍結(jié),模型結(jié)構(gòu)不變,在結(jié)構(gòu)之上再加兩個(gè)LoRA層,只有這兩個(gè)LoRA層參與微調(diào),實(shí)際上相當(dāng)于整個(gè)模型不需要訓(xùn)練,只需要訓(xùn)練這兩個(gè)LoRA層。它的參數(shù)量相比于訓(xùn)練整個(gè)模型要小得多。

在LoRA層加上所需要的各種特征、細(xì)節(jié),從而進(jìn)行訓(xùn)練,這也就是為什么在LoRA放上幾個(gè)圖,加一個(gè)prompt,就能生成相關(guān)的內(nèi)容。LoRA的原理就是這樣,在一個(gè)大模型的基礎(chǔ)上將其凍結(jié),只把數(shù)據(jù)集和prompt對(duì)應(yīng)到兩個(gè)LoRA層之中,它就能夠得到我們想要的結(jié)果。

圖片圖片

但是這種結(jié)果其實(shí)也有一些弊端,它可能只適合簡(jiǎn)單風(fēng)格的訓(xùn)練,或者單一的針對(duì)于某一個(gè)點(diǎn)的訓(xùn)練,超出這個(gè)點(diǎn),可能就需要再用另外一種方法或者疊加LoRA。

所以很多做Stable Diffusion的人,會(huì)在網(wǎng)上找base模型,再去下載一堆LoRA,有微調(diào)眼睛的、微調(diào)鼻子的、微調(diào)手指的,把這些LoRA都疊加進(jìn)去再進(jìn)行圖像生成,效果就會(huì)很好。所以LoRA的優(yōu)勢(shì)就在于訓(xùn)練成本低,可以針對(duì)某一方面單獨(dú)進(jìn)行訓(xùn)練。

3、Stable Diffusion在企業(yè)中落地

但是在落地方面,如果LoRA和DreamBooth的效果都不能滿足企業(yè)需求,就需要Text-to-Image訓(xùn)練了。Text-to-Image訓(xùn)練也可以不是從頭到尾訓(xùn)練,如果基于一個(gè)已經(jīng)訓(xùn)練好的大模型,再對(duì)其進(jìn)行Finetune,其實(shí)就是Text-to-Image。但這對(duì)于算力的要求比較高,要想較好的訓(xùn)練效果,建議用40G以上的顯存。

Text-to-Image的處理分三部分,第一部分是數(shù)據(jù)集處理;第二部分是底模選擇;第三部分則是各種各樣的參數(shù),對(duì)整個(gè)模型、整體效果的影響。

首先數(shù)據(jù)集的處理,在圖片處理時(shí),可以用AI模型將圖片背景全都去掉了,并且貼一個(gè)白背景。去掉之后,就變成一個(gè)四通道,四通道訓(xùn)練并不好做,加上白背景,就變成一個(gè)三通道,再把大小處理成512×512。

圖片圖片

圖像到文字可以根據(jù)圖像一句一句挑描述,這樣是最精準(zhǔn)的。還有一種方法則是通過(guò)webUI的方式,webUI里一般都有clip等方式,可以生成描述,它生成的針對(duì)每一個(gè)文件是一個(gè)txt的文本,再把文本做一定的數(shù)據(jù)處理。生成之后可以直接使用描述,基本上不需要做太大的改變,除非需要增加一些比較特殊的詞,比如增加一些項(xiàng)目的名字或者特定的一些內(nèi)容的名字。

模型的選型方面,推薦用Hugging Face網(wǎng)站,其中有很多Stable Diffusion,有base模型,1.5、2.0、2.1、1.4都有,還有一些專用模型,可以根據(jù)需要搜索,把它作為base model進(jìn)行訓(xùn)練。C站更多的是比較適用于webUI。

圖片圖片

最后關(guān)于模型訓(xùn)練過(guò)程的一些心得和需要避開(kāi)的坑。當(dāng)有時(shí)模型跑不起來(lái)的時(shí)候,可以看它提供的一些用低模型的低顯存的方法,但是這里有一個(gè)坑,就是低顯存的方法在Text-to-Image中沒(méi)有,而在隔離的DreamBooth里說(shuō)了,可以把里面的兩行配置粘過(guò)來(lái),會(huì)發(fā)現(xiàn)它是能用的。

此外關(guān)于調(diào)參,經(jīng)常有一些非算法的同學(xué)問(wèn)我,說(shuō)這里面的學(xué)習(xí)率、這里面的loss到底是什么,怎么樣才算把模型訓(xùn)練好?我會(huì)建議他去看loss,看它的變化曲線,它最后是否收斂。

很多時(shí)候非技術(shù)人員或初學(xué)者在用Stable Diffusion或者在網(wǎng)上拿過(guò)來(lái)的做訓(xùn)練的時(shí)候,他們最大的問(wèn)題是不知道用多大的數(shù)據(jù)集,即便知道了用多大的訓(xùn)練集,也不知道再訓(xùn)練多少步,而知道該訓(xùn)練多少步后,又不知道該訓(xùn)練到什么時(shí)候停止。

這里可以提供一個(gè)參考,在做Stable Diffusion的大模型的訓(xùn)練的時(shí)候,最需要注意一點(diǎn)是,根據(jù)數(shù)據(jù)集的大小,根據(jù)圖片的尺寸,最大的訓(xùn)練步數(shù)需要進(jìn)行相應(yīng)的調(diào)整。當(dāng)然,數(shù)據(jù)集的描述也需要進(jìn)行調(diào)整,最終才能夠訓(xùn)練出比較好的效果。

嘉賓介紹:

黃鴻波,珠海金山網(wǎng)絡(luò)游戲科技有限公司(西山居)AI技術(shù)專家,高級(jí)算法工程師,谷歌機(jī)器學(xué)習(xí)方向開(kāi)發(fā)者專家,擁有多年軟件開(kāi)發(fā)經(jīng)驗(yàn),著有《TensorFlow進(jìn)階指南 基礎(chǔ)、算法與應(yīng)用》一書(shū)。曾在格力電器股份有限公司大數(shù)據(jù)中心擔(dān)任人工智能領(lǐng)域?qū)<?,且在多家公司?dān)任過(guò)高級(jí)工程師,技術(shù)經(jīng)理,技術(shù)總監(jiān)等職務(wù)。

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2017-04-24 11:40:26

大數(shù)據(jù)制造企業(yè)

2024-01-31 16:36:53

2023-02-10 21:12:41

GPUmacOSStable

2015-09-01 13:58:25

大數(shù)據(jù)企業(yè)

2014-06-06 09:52:42

大數(shù)據(jù)

2015-03-12 10:38:49

2023-05-26 15:53:48

MidjourneyAI圖像

2015-03-12 09:42:27

2023-01-10 16:08:04

人工智能擴(kuò)散模型

2024-09-14 14:09:40

2022-06-02 08:30:55

項(xiàng)目React重構(gòu)

2023-11-22 11:22:57

AI模型

2024-12-06 10:21:04

2024-06-13 17:45:16

2023-05-24 08:52:12

2022-06-02 11:11:43

AI深度學(xué)習(xí)

2024-03-06 23:23:36

2023-04-20 17:47:57

模型開(kāi)源

2022-10-20 16:04:26

模型質(zhì)量

2023-03-06 12:35:45

AI大腦畫(huà)面圖像
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)