發(fā)布時(shí)間:2024-04-03 10:01:57 瀏覽量:293次
作者:hking
Stable Diffusion 是 2022 年發(fā)布的深度學(xué)習(xí)文字到圖像生成模型。它主要用于根據(jù)文字的描述產(chǎn)生詳細(xì)圖像,能夠在幾秒鐘內(nèi)創(chuàng)作出令人驚嘆的藝術(shù)作品,本文是一篇使用入門(mén)教程。
建議使用不少于 16 GB 內(nèi)存,并有 60GB 以上的硬盤(pán)空間。需要用到 CUDA 架構(gòu),推薦使用 N 卡。(目前已經(jīng)有了對(duì) A 卡的相關(guān)支持,但運(yùn)算的速度依舊明顯慢于 N 卡,參見(jiàn):
Install and Run on AMD GPUs · AUTOMATIC1111/stable-diffusion-webui Wiki · GitHub
過(guò)度使用,顯卡會(huì)有損壞的風(fēng)險(xiǎn)。
進(jìn)行 512x 圖片生成時(shí)主流顯卡速度對(duì)比:
可以參考 webui 的官方 wiki 部署:Home ·
AUTOMATIC1111/stable-diffusion-webui Wiki (github.com)
stable diffusion webui 的完整環(huán)境占用空間極大,能達(dá)到幾十 G。同時(shí),webui 需要聯(lián)網(wǎng)下載安裝大量的依賴(lài),在境內(nèi)的網(wǎng)絡(luò)環(huán)境下下載很慢,請(qǐng)自帶科學(xué)上網(wǎng)工具。
覺(jué)得麻煩的同學(xué)可以使用整合包,解壓即用。比如獨(dú)立研究員的空間下經(jīng)常更新整合包。秋葉的啟動(dòng)器 也非常好用,將啟動(dòng)器復(fù)制到下載倉(cāng)庫(kù)的目錄下即可,更新管理會(huì)更方便。
打開(kāi)啟動(dòng)器后,可一鍵啟動(dòng):
如果有其他需求,可以在高級(jí)選項(xiàng)中調(diào)整配置。
顯存優(yōu)化根據(jù)顯卡實(shí)際顯存選擇,不要超過(guò)當(dāng)前顯卡顯存。不過(guò)并不是指定了顯存優(yōu)化量就一定不會(huì)超顯存,在出圖時(shí)如果啟動(dòng)了過(guò)多的優(yōu)化項(xiàng)(如高清修復(fù)、人臉修復(fù)、過(guò)大模型)時(shí),依然有超出顯存導(dǎo)致出圖失敗的幾率。
xFormers 能極大地改善了內(nèi)存消耗和速度,建議開(kāi)啟。準(zhǔn)備工作完畢后,點(diǎn)擊一鍵啟動(dòng)即可。等待瀏覽器自動(dòng)跳出,或是控制臺(tái)彈出本地 URL 后說(shuō)明啟動(dòng)成功
如果報(bào)錯(cuò)提示缺少 Pytorch,則需要在啟動(dòng)器中點(diǎn)擊配置:
Stable Diffusion webui 的更新比較頻繁,請(qǐng)根據(jù)需求在“版本管理”目錄下更新:
同樣地,也請(qǐng)注意插件的更新:
Stable Diffusion 可配置大量插件擴(kuò)展,在 webui 的“擴(kuò)展”選項(xiàng)卡下,可以安裝插件:
點(diǎn)擊“加載自”后,目錄會(huì)刷新,選擇需要的插件點(diǎn)擊右側(cè)的 install 即可安裝。
安裝完畢后,需要重新啟動(dòng)用戶(hù)界面:
文生圖最簡(jiǎn)流程
理論上,在應(yīng)用完全相同參數(shù)(如 Step、CFG、Seed、prompts)的情況下,生產(chǎn)的圖片應(yīng)當(dāng)完全相同。
提示詞所做的工作是縮小模型出圖的解空間,即縮小生成內(nèi)容時(shí)在模型數(shù)據(jù)里的檢索范圍,而非直接指定作畫(huà)結(jié)果。提示詞的效果也受模型的影響,有些模型對(duì)自然語(yǔ)言做特化訓(xùn)練,有些模型對(duì)單詞標(biāo)簽對(duì)特化訓(xùn)練,那么對(duì)不同的提示詞語(yǔ)言風(fēng)格的反應(yīng)就不同。
提示詞中可以填寫(xiě)以下內(nèi)容:
對(duì)于使用 Danbooru 數(shù)據(jù)的模型來(lái)說(shuō),可以使用西式顏文字在一定程度上控制出圖的表情。如::-) 微笑 :-( 不悅 ;-) 使眼色 :-D 開(kāi)心 :-P 吐舌頭 :-C 很悲傷 :-O 驚訝 張大口 :-/ 懷疑
根據(jù)自己想畫(huà)的內(nèi)容寫(xiě)出提示詞,多個(gè)提示詞之間使用英文半角符號(hào) [ , ],如:
masterpiece, best quality, ultra-detailed, illustration, close-up, straight on, face focus, 1girl, white hair, golden eyes, long hair, halo, angel wings, serene expression, looking at viewer
一般而言,概念性的、大范圍的、風(fēng)格化的關(guān)鍵詞寫(xiě)在前面,敘述畫(huà)面內(nèi)容的關(guān)鍵詞其次,最后是描述細(xì)節(jié)的關(guān)鍵詞,大致順序如:
(畫(huà)面質(zhì)量提示詞), (畫(huà)面主題內(nèi)容)(風(fēng)格), (相關(guān)藝術(shù)家), (其他細(xì)節(jié))
不過(guò)在模型中,每個(gè)詞語(yǔ)本身自帶的權(quán)重可能有所不同,如果模型訓(xùn)練集中較多地出現(xiàn)某種關(guān)鍵詞,我們?cè)谔崾驹~中只輸入一個(gè)詞就能極大地影響畫(huà)面,反之如果模型訓(xùn)練集中較少地出現(xiàn)某種關(guān)鍵詞,我們?cè)谔崾驹~中可能輸入很多個(gè)相關(guān)詞匯都對(duì)畫(huà)面的影響效果有限。提示詞的順序很重要,越靠后的權(quán)重越低。關(guān)鍵詞最好具有特異性,譬如 Anime(動(dòng)漫)一詞就相對(duì)泛化,而 Jojo 一詞就能清晰地指向 Jojo 動(dòng)漫的畫(huà)風(fēng)。措辭越不抽象越好,盡可能避免留下解釋空間的措辭。
可以使用括號(hào)人工修改提示詞的權(quán)重,方法如:
( n ) = ( n : 1.1 ) (( n )) = ( n : 1.21 ) ((( n ))) = ( n : 1.331 ) (((( n )))) = ( n : 1.4641 ) ((((( n )))) = ( n : 1.61051 ) (((((( n )))))) = ( n : 1.771561 )
請(qǐng)注意,權(quán)重值最好不要超過(guò) 1.5。
還可以通過(guò) Prompt Editing 使得 AI 在不同的步數(shù)生成不一樣的內(nèi)容,譬如在某階段后,繪制的主體由男人變成女人。
語(yǔ)法為:
[to:when] 在指定數(shù)量的 step 后,將to處的提示詞添加到提示
[from::when] 在指定數(shù)量的 step 后從提示中刪除 from處的提示詞
[from:to:when] 在指定數(shù)量的 step 后將 from處的提示詞替換為 to處的提示詞
例如: a [fantasy:cyberpunk:16] landscape 在一開(kāi)始,讀入的提示詞為:the model will be drawing a fantasy landscape. 在第 16 步之后,提示詞將被替換為:a cyberpunk landscape, 它將繼續(xù)在之前的圖像上計(jì)算
又例如,對(duì)于提示詞為: fantasy landscape with a [mountain:lake:0.25] and [an oak:a christmas tree:0.75][ in foreground::0.6][ in background:0.25][shoddy:masterful:0.5],100 步采樣, 一開(kāi)始。提示詞為:fantasy landscape with a mountain and an oak in foreground shoddy 在第 25 步后,提示詞為:fantasy landscape with a lake and an oak in foreground in background shoddy 在第 50 步后,提示詞為:fantasy landscape with a lake and an oak in foreground in background masterful 在第 60 步后,提示詞為:fantasy landscape with a lake and an oak in background masterful 在第 75 步后,提示詞為:fantasy landscape with a lake and a christmas tree in background masterful
提示詞還可以輪轉(zhuǎn),譬如
[cow|horse] in a field
在第一步時(shí),提示詞為“cow in a field”;在第二步時(shí),提示詞為"horse in a field.";在第三步時(shí),提示詞為"cow in a field" ,以此類(lèi)推。
實(shí)際上,程序是將輸入的關(guān)鍵詞以 Token 的形式傳入模型進(jìn)行計(jì)算的:
“ (Medieval astronomer using a telescope with a cosmic starry sky in the background.sketch, hand draw style, con, uncomplicated background )”轉(zhuǎn)換為 Token ID 即:263, 10789, 40036, 1996, 320, 19037, 593, 320, 18304, 30963, 2390, 530, 518, 5994, 8, 11, 263, 5269, 267, 2463, 4001, 1844, 267, 5646, 267, 569, 16621, 5994, 264 。
一個(gè)單詞可能對(duì)應(yīng)一個(gè)或多個(gè) Token,多個(gè)單詞也可能對(duì)應(yīng)同一個(gè) Token。
可參考Civitai | Stable Diffusion models, embeddings, hypernetworks and more中優(yōu)秀作品的提示詞作為模板。
類(lèi)似的網(wǎng)站還有:
Controlnet 允許通過(guò)線(xiàn)稿、動(dòng)作識(shí)別、深度信息等對(duì)生成的圖像進(jìn)行控制。
請(qǐng)注意,在使用前請(qǐng)確保 ControlNet 設(shè)置下的路徑與本地 Stable Diffusion 的路徑同步
基本流程
在 ControlNet 的設(shè)置下,可以調(diào)整可用 ControlNet 的數(shù)量。
在多個(gè) ControlNet 模式下,結(jié)果會(huì)將輸入的信息合并生成圖像:
模型能夠有效地控制生成的畫(huà)風(fēng)和內(nèi)容。常用的模型網(wǎng)站有:
Civitai | Stable Diffusion models, embeddings, hypernetworks and more > Models - Hugging Face > SD - WebUI 資源站 > 元素法典 AI 模型收集站 - AI 繪圖指南 wiki (aiguidebook.top) > AI 繪畫(huà)模型博物館 (subrecovery.top)
下載模型后需要將之放置在指定的目錄下,請(qǐng)注意,不同類(lèi)型的模型應(yīng)該拖放到不同的目錄下。模型的類(lèi)型可以通過(guò)Stable Diffusion 法術(shù)解析檢測(cè)。
一些模型會(huì)有觸發(fā)詞,即在提示詞內(nèi)輸入相應(yīng)的單詞才會(huì)生效。
對(duì)人物、姿勢(shì)、物體表現(xiàn)較好的模型,在 ckpt 模型上附加使用。在 webui 界面的 Additional Networks 下勾線(xiàn) Enable 啟用,然后在 Model 下選擇模型,并可用 Weight 調(diào)整權(quán)重。權(quán)重越大,該 Lora 的影響也越大。不建議權(quán)重過(guò)大(超過(guò) 1.2),否則很容易出現(xiàn)扭曲的結(jié)果。
多個(gè) lora 模型混合使用可以起到疊加效果,譬如一個(gè)控制面部的 lora 配合一個(gè)控制畫(huà)風(fēng)的 lora 就可以生成具有特定畫(huà)風(fēng)的特定人物。因此可以使用多個(gè)專(zhuān)注于不同方面優(yōu)化的 Lora,分別調(diào)整權(quán)重,結(jié)合出自己想要實(shí)現(xiàn)的效果。
LoHA 模型是一種 LORA 模型的改進(jìn)。
LoCon 模型也一種 LORA 模型的改進(jìn),泛化能力更強(qiáng)。
對(duì)人物、畫(huà)風(fēng)都有調(diào)整效果的模型。在提示詞中加入對(duì)應(yīng)的關(guān)鍵詞即可。大部分 Embedding 模型的關(guān)鍵詞與文件名相同,譬如一個(gè)名為為“SomeCharacter.pt”的模型,觸發(fā)它的關(guān)鍵詞檢索“SomeCharacter”。
以GitHub - bmaltais/kohya_ss為例,它提供了在 Windows 操作系統(tǒng)下的 GUI 訓(xùn)練面板。
如果需要在 Linux 上部署且需要 GUI,請(qǐng)參考GitHub - P2Enjoy/kohya_ss-docker: This is the tandem repository to exploit on linux the kohya_ss training webui converted to Linux. It uses the fork in the following link
需要保證設(shè)備擁有 Python 3.10.6 及 git 環(huán)境。
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
python -m venv venv
.\venv\Scripts\activate
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install --use-pep517 --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py
accelerate config
在執(zhí)行“accelerate config”后,它將詢(xún)問(wèn)一些設(shè)置選項(xiàng)。請(qǐng)按照以下選項(xiàng)依次選擇:
This machine No distributed training NO NO NO all fp16
30 系、40 系顯卡可選擇安裝 CUDNN:
.\venv\Scripts\activate
python .\tools\cudann_1.8_install.py
如果需要更新倉(cāng)庫(kù),請(qǐng)執(zhí)行以下命令:
git pull
.\venv\Scripts\activate
pip install --use-pep517 --upgrade -r requirements.txt
在 Powershell 中執(zhí)行:
.\gui.ps1
雙擊 gui.bat 也可以。彈出以下界面后,直接訪(fǎng)問(wèn) URL 即可。
模型訓(xùn)練主要有三種結(jié)果:欠擬合,效果好,過(guò)擬合。欠擬合:模型完全沒(méi)有從數(shù)據(jù)集中學(xué)習(xí)到經(jīng)驗(yàn),對(duì)各種輸入都得出差距很大的結(jié)果。效果好:模型不僅對(duì)訓(xùn)練集中的輸入有接近的結(jié)果,對(duì)不來(lái)自訓(xùn)練集中的輸入也有接近的效果。過(guò)擬合:模型只訓(xùn)練集中的輸入有非常非常接近的結(jié)果,對(duì)不來(lái)自訓(xùn)練集中的輸入給出差距很大的結(jié)果。
圖片盡可能高清,風(fēng)格統(tǒng)一但內(nèi)容形式多樣(譬如動(dòng)作多樣、服裝多樣)。
樣本數(shù)量可能影響到擬合結(jié)果。
樣本量太少,模型可能欠擬合;樣本量過(guò)大,模型可能過(guò)擬合。
譬如讓一個(gè)人學(xué)習(xí)英語(yǔ),只給他幾條例句去看,他可能什么都沒(méi)學(xué)會(huì)【欠擬合】;給了它幾十億條例句去看,他可能只會(huì)根據(jù)別人說(shuō)的話(huà)查字典一樣回話(huà),如果字典里沒(méi)有就完全不會(huì)說(shuō)了【過(guò)擬合】
將訓(xùn)練集裁剪為多個(gè)尺寸相同的圖片??梢栽?SD webui 界面中自動(dòng)裁剪,也可以手動(dòng)裁切。
一般使用的圖片尺寸是 512*512,也可更換為其他尺寸,尺寸越大占用顯存越高,但對(duì)細(xì)節(jié)的捕捉也會(huì)越好。
也可以在 sd webui 的頁(yè)面下打標(biāo):
比較這幾種不同的打標(biāo)器的效果,在同一輸入下:
【本義:一個(gè)在鐵匠鋪里打鐵的男鐵匠】
打標(biāo)器效果效果(中文翻譯)Stable Diffusion webui-訓(xùn)練-圖像預(yù)處理-BLIPa man in a kitchen with a fire in the fireplace and a hammer in his hand and a hammer in his other hand一個(gè)男人在廚房里,壁爐里生著火,手里拿著錘子,另一只手拿著錘子Stable Diffusion webui-訓(xùn)練-圖像預(yù)處理-deepbooru1boy, black_gloves, gloves, indoors, male_focus, shirt, short_sleeves, solo一個(gè)男孩,黑色手套,手套,室內(nèi),男人特寫(xiě),襯衫,短袖,單人Stable Diffusion webui-Tagger(WD14)1boy, cooking, frying pan, male focus, solo, gloves, apron, fire, brown footwear, black gloves, boots, stove, kitchen, holding, facial hair, bandana, blue shirt, shirt一個(gè)男孩,烹飪,煎鍋,男人特寫(xiě),單人,手套,圍裙,火,棕色鞋,黑色手套,靴子,爐子,廚房,握著,胡子,頭巾,藍(lán)色襯衫,襯衫kohya
webui-Utilities-Captioning-BLIP Captioninga man is working on a piece of metal一個(gè)男人正在加工一塊金屬kohya
webui-Utilities-Captioning-GIT Captioninga drawing of a blacksmith with a hammer and a glove on his hand.一幅畫(huà),畫(huà)的是一個(gè)手上戴著手套、拿著錘子的鐵匠。
打標(biāo)對(duì)圖片的描述越準(zhǔn)越好,如果條件允許,嘗試人工打標(biāo)。
--原關(guān)鍵詞1boy, cooking, frying pan, male focus, solo, gloves, apron, fire, brown footwear, black gloves, boots, stove, kitchen, holding, facial hair, bandana, blue shirt, shirt合并后Smith, cooking, frying pan, male focus, solo, gloves, apron, fire, brown footwear, black gloves, boots, stove, kitchen, holding, bandana, blue shirt, shirt
以此類(lèi)推,我們需要為目標(biāo)綁定什么要素,就將它從關(guān)鍵詞中刪去。而類(lèi)似于動(dòng)作、背景這種與對(duì)象綁定關(guān)系不緊密,在日后生成圖期間需要改變的,就保留在關(guān)鍵詞中。
訓(xùn)練集中的每張圖片通常能被分解為兩大部分:“訓(xùn)練目標(biāo)+其他要素”,依然以 Smith 為例:
-完整內(nèi)容訓(xùn)練目標(biāo)其他要素 | |
![]() | 在鐵匠鋪里打鐵的鐵匠 SmithSmith鐵匠鋪、打鐵、鐵匠 |
其中,”鐵匠鋪、打鐵、鐵匠“都是模型中已有的內(nèi)容,稱(chēng)為“先驗(yàn)知識(shí)”。我們需要將這部分知識(shí)為 AI 指明,省去重新學(xué)習(xí)這部分內(nèi)容的時(shí)間;也能引導(dǎo) AI 明確學(xué)習(xí)的目標(biāo),讓模型具有更好的泛化性。
正則化通過(guò)降低模型的復(fù)雜性提高泛化能力。模型越復(fù)雜,模型的泛化能力越差,要達(dá)到相同的泛化能力,越復(fù)雜的模型需要的樣本數(shù)量就越多,為了提高模型的泛化能力,需要正則化來(lái)限制模型復(fù)雜度。
正則化的標(biāo)簽需要與訓(xùn)練集中的 Class 相對(duì)應(yīng),圖片數(shù)量也要一致。正則化不是必須的,可以根據(jù)訓(xùn)練集的情況和訓(xùn)練目的的不同來(lái)調(diào)整。同一張圖片不允許在訓(xùn)練集和正則化中同時(shí)出現(xiàn)。
在訓(xùn)練前,我們需要用特定的方式組織文件路徑:譬如,訓(xùn)練目標(biāo)是一群女孩,其中有一位名為 sls 的女孩好一位名為 cpc 的女孩,那么文件路徑應(yīng)該為:
●train_girls ----○10_sls 1girl ----○10_cpc 1girl
●reg_girls ----○1_1girl
其中,traingirls 目錄下放置的是訓(xùn)練集,命名規(guī)則是“訓(xùn)練次數(shù)<標(biāo)識(shí)符> <類(lèi)別>”,如“10_sls 1girl”表示“名為 sls 的對(duì)象,她是一個(gè)女孩(類(lèi)別),這個(gè)文件夾下的訓(xùn)練集每個(gè)訓(xùn)練 10 次”。
reggirls 目錄下放置的是正則化內(nèi)容。命名規(guī)則是“訓(xùn)練次數(shù)<類(lèi)別>”,如“1_1girl“表示”文件夾下的圖片都是一個(gè)女孩,不重復(fù)使用數(shù)據(jù)“。*需要日后補(bǔ)充
在 kohya webui 界面訓(xùn)練時(shí),ckpt 與 lora 訓(xùn)練方法類(lèi)似。
a. 底模
它表明我們此次訓(xùn)練將以哪個(gè)模型為基礎(chǔ)進(jìn)行訓(xùn)練。這個(gè)模型需要根據(jù)自己的需求選擇。如果很明確自己的目標(biāo)是屬于某一大類(lèi)下的分支,那么可以用接近這一大類(lèi)的模型進(jìn)行訓(xùn)練。譬如想訓(xùn)練一個(gè)二次元角色,那么可以使用二次元的底模(如 NovelAI)進(jìn)行訓(xùn)練。如果自己的像訓(xùn)練的目標(biāo)需要比較好的泛化性,可以使用 sd 模型,因?yàn)樗娜宋?、物品、風(fēng)格最多。如果模型為 sd2.0,則需要勾選 v2 和 v_parameterization
b. 最大分辨率 Max resolution
Training parameters 下的 Max Resolution 用于指定當(dāng)前輸入訓(xùn)練集圖片的分辨率,請(qǐng)與文件夾內(nèi)的保持一致。如果尺寸不一會(huì)被裁切。
c. Epoch
Epoch 是指一次將訓(xùn)練集中的所有樣本訓(xùn)練一次(即對(duì)每個(gè)樣本完成一次正向傳播與一次反向傳播)的過(guò)程。有時(shí),由于一個(gè)訓(xùn)練樣本過(guò)于龐大,它會(huì)被分成多個(gè)小塊分批學(xué)習(xí),每個(gè)小塊就叫 batch。
在深度學(xué)習(xí)中,程序通過(guò)不斷地將數(shù)據(jù)集在神經(jīng)網(wǎng)絡(luò)中往復(fù)傳遞來(lái)更新網(wǎng)絡(luò)中的權(quán)重,以此建立對(duì)目標(biāo)的擬合關(guān)系,因此只有反復(fù)地迭代才能增強(qiáng)數(shù)據(jù)集的擬合度。隨著 epoch 的增加,模型將從欠擬合(右一,表示即便是來(lái)自于數(shù)據(jù)集中的輸入,模型也很難達(dá)到它應(yīng)該有的結(jié)果,類(lèi)似于“只做題庫(kù)里的題都做不對(duì)的差生”)變?yōu)?strong>過(guò)擬合(左一,表示模型對(duì)于來(lái)自于數(shù)據(jù)集中的輸入,總能精確地達(dá)到對(duì)應(yīng)的對(duì)結(jié)果,但是如果輸入一旦有些許偏差,比如輸入一些不是訓(xùn)練集中的輸入,那結(jié)果就會(huì)很差,類(lèi)似于“只會(huì)做題庫(kù)里的題的書(shū)呆子”)。我們希望能達(dá)到中間的效果,即對(duì)訓(xùn)練集輸出相對(duì)準(zhǔn)確的結(jié)果,又對(duì)不在訓(xùn)練集里的輸入也有較好的表現(xiàn)。這種特征就叫泛化。
因此,我們需要不少于一個(gè) epoch 才能建立起較好的擬合關(guān)系,當(dāng)然也不能太多。對(duì)于不同的數(shù)據(jù)集,使用的 epoch 都可能有所不同。
d. Batch size
batch size 表示訓(xùn)練時(shí)的批量大小,也就是一次訓(xùn)練中選取的樣本數(shù)量。這個(gè)參數(shù)對(duì)性能有一定要求,如果性能足夠,增加 batch size 在理論上會(huì)提高模型的準(zhǔn)確性。如果數(shù)據(jù)集樣本量較小,Batch Size 可以等于樣本數(shù)量,即把所有數(shù)據(jù)集一起輸入網(wǎng)絡(luò)進(jìn)行訓(xùn)練,這樣做的效果也很好;但是如果樣本量較大,這肯定讓設(shè)備吃不消,因此需要減小 Batch Size。但是,如果 Batch Size 太小,那么意味著在一個(gè) Epoch 中迭代的次數(shù)也會(huì)減小,訓(xùn)練時(shí)權(quán)重的調(diào)整速度變慢,為了抵消這種影響,還得提高 epoch 才能有更好的效果。所以 Batch Size 與 Epoch 參數(shù)二者是相輔相成的,他們二者的關(guān)系就好比一次刷多少題和總共刷多少次題。合適的 batch size 應(yīng)該讓 GPU 正好滿(mǎn)載運(yùn)行。
e. Save every N epochs
每 N 個(gè) Epoch 保存一次
f. 學(xué)習(xí)率 Learning Rate
學(xué)習(xí)率指的是一次迭代(即輸入一個(gè)樣本對(duì)它學(xué)習(xí),并用此次學(xué)習(xí)的經(jīng)驗(yàn)調(diào)整神經(jīng)網(wǎng)絡(luò))的步長(zhǎng)。這個(gè)值越大,表明一次學(xué)習(xí)對(duì)模型的影響越大。為了讓學(xué)習(xí)循序漸進(jìn),學(xué)習(xí)率不應(yīng)該太高,我們需要 AI 在訓(xùn)練中反復(fù)總結(jié)一點(diǎn)點(diǎn)經(jīng)驗(yàn),最后累積為完整的學(xué)習(xí)成果。合理的學(xué)習(xí)率會(huì)讓學(xué)習(xí)過(guò)程收斂,Loss 達(dá)到足夠低。
學(xué)習(xí)率太低,容易出現(xiàn)局部最優(yōu)解,類(lèi)似于“一個(gè)開(kāi)車(chē)的 AI 稀里糊涂地開(kāi)完全程,車(chē)技很菜”;學(xué)習(xí)率太高,容易使得模型不收斂,找不到解,類(lèi)似于“一個(gè)開(kāi)車(chē)的 AI 完全不會(huì)開(kāi)車(chē),只會(huì)原地打圈瞎操作”。
g. 學(xué)習(xí)率調(diào)度器 Learning Rate Scheduler
學(xué)習(xí)率調(diào)度器是一種用于動(dòng)態(tài)調(diào)整學(xué)習(xí)率的技術(shù),它可以在訓(xùn)練過(guò)程中根據(jù)模型的表現(xiàn)自動(dòng)調(diào)整學(xué)習(xí)率,以提高模型的訓(xùn)練效果和泛化能力。通常,學(xué)習(xí)率在訓(xùn)練開(kāi)始時(shí)設(shè)置為比較高的值,允許 AI“在一次訓(xùn)練中學(xué)得更多更快”。隨著訓(xùn)練的進(jìn)行,學(xué)習(xí)率會(huì)降低,逐步收斂到最優(yōu)。在訓(xùn)練過(guò)程中降低學(xué)習(xí)率也稱(chēng)為退火或衰減。
h.學(xué)習(xí)率預(yù)熱比例 LR warmup
剛開(kāi)始訓(xùn)練時(shí)模型的權(quán)重是隨機(jī)初始化的,如果此時(shí)選擇一個(gè)較大的學(xué)習(xí)率,可能會(huì)帶來(lái)模型的不穩(wěn)定。學(xué)習(xí)率預(yù)熱就是在剛開(kāi)始訓(xùn)練的時(shí)候先使用一個(gè)較小的學(xué)習(xí)率,先訓(xùn)練一段時(shí)間,等模型穩(wěn)定時(shí)再修改為預(yù)先設(shè)置的學(xué)習(xí)率進(jìn)行訓(xùn)練。
例如,假設(shè)我們?cè)谟?xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)設(shè)置了一個(gè)學(xué)習(xí)率為 0.1,預(yù)熱比例為 0.1。則在訓(xùn)練的前 10% 的迭代次數(shù)中,我們會(huì)逐漸將學(xué)習(xí)率從 0.01 增加到 0.1,然后在剩余的訓(xùn)練迭代次數(shù)中使用設(shè)定的學(xué)習(xí)率 0.1。
i. 優(yōu)化器 Optimizer
在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),我們需要在反向傳播中逐步更新模型的權(quán)重參數(shù)。優(yōu)化器的作用就是根據(jù)當(dāng)前模型計(jì)算結(jié)果與目標(biāo)的偏差,不斷引導(dǎo)模型調(diào)整權(quán)重,使得偏差不斷逼近最小。Adafactor 和 Lion 是推薦使用的優(yōu)化器。
j. Text Encoder 與 Unet
機(jī)器不能直接識(shí)別人類(lèi)的語(yǔ)言,Text Encoder 是一種用于將文本數(shù)據(jù)轉(zhuǎn)換為機(jī)器可讀形式的模型或算法。對(duì)于輸入的一串提示詞,程序會(huì)將它們分解為一個(gè)個(gè)標(biāo)記(Token)輸入給 Text Encoder(一個(gè) Token 通常代表著一個(gè)特征),這樣一句話(huà)就能被轉(zhuǎn)為一個(gè)向量為機(jī)器所識(shí)別 4
Unet 是一種用于圖像分割的深度學(xué)習(xí)模型,它的作用是將圖像分割為多個(gè)不同的構(gòu)成部分。經(jīng)過(guò)訓(xùn)練后,它可以來(lái)填充圖像中缺失或損壞的部分,或者對(duì)灰度草圖進(jìn)行著色。5
我們可以為它們?cè)O(shè)置不同的學(xué)習(xí)率,分別對(duì)應(yīng)了“識(shí)別文字描述”和“識(shí)別圖片”的能力。
在原版 Dreambooth 訓(xùn)練中,我們只能讓 AI 學(xué)習(xí) UNET 模型,XavierXiao 改進(jìn)添加了額外訓(xùn)練 Text Encoder 6 ,在本文使用的倉(cāng)庫(kù)中就沿用了這種改進(jìn)。
k. Network Rank(Dimension)
表示神經(jīng)網(wǎng)絡(luò)的維度,維度越大,模型的表達(dá)能力就越強(qiáng)。如果訓(xùn)練 lora,該值不要超過(guò) 64;如果訓(xùn)練 loha,該值不要超過(guò) 32;如果訓(xùn)練 locon,該值不要超過(guò) 12 參考 ,但還是要根據(jù)具體的訓(xùn)練目標(biāo)來(lái)定,如果目標(biāo)比較簡(jiǎn)單,就完全不需要太高的 Rank。
在神經(jīng)網(wǎng)絡(luò)中,每一層都由許多個(gè)神經(jīng)元節(jié)點(diǎn)構(gòu)成,它們縱橫交錯(cuò)構(gòu)成了一個(gè) N 維空間。維度越大,代表模型中就越多的神經(jīng)元節(jié)點(diǎn)可以處理各種要素?!?dāng)然,這也意味著模型的訓(xùn)練難度就越大,也可能變得更容易過(guò)擬合,它可能需要更多的、更準(zhǔn)確的數(shù)據(jù)集,更大的迭代次數(shù)。
l. Network Alpha
對(duì)模型過(guò)擬合的懲罰權(quán)重。它表示對(duì)模型在訓(xùn)練時(shí)出現(xiàn)完全擬合(即輸出結(jié)果與樣本一致)時(shí)的懲罰的權(quán)重,適當(dāng)提高它可以增加模型的泛化能力(當(dāng)然也不能太高)。目前經(jīng)驗(yàn)認(rèn)為設(shè)置為 alpha 設(shè)置在 1 以下效果更好 參考。
舉一個(gè)通俗的例子,一個(gè)學(xué)生在抄學(xué)霸的作業(yè),為了不與學(xué)霸的結(jié)果完全相同,他需要對(duì)每個(gè)答案做一些小小的改動(dòng)。對(duì)老師而言,一個(gè)完全照抄答案的學(xué)生約等于一個(gè)只會(huì)抄不會(huì)想的學(xué)生,而能稍作修改的學(xué)生說(shuō)明還有對(duì)題目思考理解的能力。所以我們要稍微地“懲罰”那些只會(huì)照抄的學(xué)生,引導(dǎo)學(xué)生自己思考。因此這個(gè)值不能太低(完全不懲罰照抄),也不能太高(太大的懲罰讓學(xué)渣完全不能從學(xué)霸的答案里獲得參考)。
m. Caption Dropout
Dropout 是在深度學(xué)習(xí)中一種防止過(guò)擬合的技術(shù),在訓(xùn)練中,可能模型會(huì)反復(fù)計(jì)算某些節(jié)點(diǎn),隨著訓(xùn)練的進(jìn)行,這可能導(dǎo)致錯(cuò)誤的路徑依賴(lài),即模型會(huì)變得總是依賴(lài)這些節(jié)點(diǎn)解決問(wèn)題,就像某個(gè)學(xué)生碰巧刷到了幾道解題方法相似的題目,就誤認(rèn)為所有的題目都要用這種解題方法。Dropout 的解決方法是隨機(jī)關(guān)閉某些神經(jīng)元,迫使模型在訓(xùn)練時(shí)減少神經(jīng)元之間的依賴(lài)關(guān)系,從而讓神經(jīng)網(wǎng)絡(luò)的泛化能力更強(qiáng)。當(dāng)然,在實(shí)際使用模型的時(shí)候,Dropout 是關(guān)閉的。
在訓(xùn)練中,我們也可以隨機(jī)將一些訓(xùn)練集的標(biāo)記(Caption)剔除。在 Drop out caption every n epochs 中,我們可以指定每隔多少 epoch 就剔除一些標(biāo)記;在 Rate of caption dropout 中,我們可以指定剔除幾成的標(biāo)記。
n. Noise Offset
在原版的 Stable Diffusion 中,模型得出的圖片在亮度上總是很平均,亮的場(chǎng)景不夠亮,暗的場(chǎng)景不夠暗,而且用傳統(tǒng)的訓(xùn)練方法也無(wú)法讓它學(xué)會(huì)避免這個(gè)問(wèn)題 7 。一般輸入 0.1。
通過(guò) Noise Offset,我們可以讓圖像在亮和暗上的表現(xiàn)更加明顯(右圖)。
o.xformers
Xformers 是一個(gè)用于加快圖像生成速度并減少顯存占用的庫(kù)。
p. Gradient checkpointing
梯度檢查點(diǎn)(Gradient checkpointing)是一種在訓(xùn)練模型時(shí)減少顯存占用的方法,但是會(huì)增加訓(xùn)練時(shí)長(zhǎng)。它避免在訓(xùn)練期間一次計(jì)算所有權(quán)重,而是逐步計(jì)算權(quán)重,從而減少訓(xùn)練所需的顯存量。關(guān)閉它不會(huì)影響模型的準(zhǔn)確性,但打開(kāi)它后我們可以使用更大的 Batch Size。
雖然單次訓(xùn)練的時(shí)長(zhǎng)可能增加了我們單次訓(xùn)練的時(shí)長(zhǎng),但如果我們?cè)龃罅?Batch Size,總的學(xué)習(xí)時(shí)間實(shí)際上可能會(huì)更快。
q. shuffle caption
打開(kāi)它,可以讓訓(xùn)練時(shí)訓(xùn)練集的標(biāo)簽被打亂(Shuffle,洗牌)。如輸入"鐵匠鋪,工人,打鐵",可能被轉(zhuǎn)換為”鐵匠鋪,打鐵,工人“或”工人,鐵匠鋪,打鐵“。
這種操作通常用于增強(qiáng)模型對(duì)于不同文本順序的魯棒性,從而提高模型的泛化能力。打亂操作可以多次進(jìn)行,從而更大程度地增加數(shù)據(jù)的隨機(jī)性。
Shuffle caption 可以在多種相似的圖像中使用。如果差異較大,就不要使用了。
在每一個(gè) epoch 中,輸入的前 4 個(gè) token 會(huì)被當(dāng)做觸發(fā)詞,此外的 token 會(huì)被當(dāng)做排除集。ai 會(huì)將排除集中的元素在素材中刪除后,把素材的剩余部分學(xué)進(jìn)前 4 個(gè) token 中。因此,如果不開(kāi)啟 keep tokens,在進(jìn)行打亂后,打標(biāo)中的每一個(gè) tag 在足夠多的 epoch 后,都將成為觸發(fā)詞。
r. Token
如果你的 Caption 比較長(zhǎng),那么可以擴(kuò)充一次輸入允許的 Token 量。如果不是必要,保持默認(rèn)值 75。
s. Clip Skip
Clip 是一個(gè)轉(zhuǎn)換提示詞為 Token 形式的神經(jīng)網(wǎng)絡(luò),是模型理解文字的源頭。
它開(kāi)啟與否與底模有關(guān)。譬如,一些模型在第一層的神經(jīng)網(wǎng)絡(luò)將輸入的詞轉(zhuǎn)換為 Token 讀取,傳輸給下一層網(wǎng)絡(luò),但是通過(guò) Clip Skip,我們可以手動(dòng)控制跳過(guò) Stable Diffusion 的 Clip 階段,直接使用模型的 Tokenizer 對(duì)某些層級(jí)直接傳輸 Token 進(jìn)去。有些時(shí)候調(diào)整這個(gè)參數(shù)可以讓結(jié)果更好。
默認(rèn)情況下 SD2.0 使用倒數(shù)第二層接收 Token,因此不要在 SD2.0 學(xué)習(xí)中指定。
訓(xùn)練集盡可能包含該畫(huà)風(fēng)對(duì)不同事物的描繪。
● 盡可能對(duì)訓(xùn)練集進(jìn)行正則化。如果數(shù)據(jù)足夠大,可以將數(shù)據(jù)二分,一部分作為訓(xùn)練集,一部分作為正則化圖集。如果數(shù)據(jù)不夠大,可以先用高學(xué)習(xí)率快速訓(xùn)練出一個(gè)臨時(shí)模型,用它產(chǎn)出接近于該畫(huà)風(fēng)的圖片,然后將它投入訓(xùn)練集。● 如果是小模型,可以在生成時(shí)變更大模以調(diào)整生成效果;如果是大模型,可以通過(guò)模型融合以調(diào)整效果?!?模型效果不好不一定是模型不好,提示詞與最終的效果有非常大的關(guān)系。
訓(xùn)練集盡可能包含人物在不同角度的畫(huà)面。
如果人物圖像很少,可以通過(guò)一下方式擴(kuò)充訓(xùn)練集:● 鏡像 ● 用高學(xué)習(xí)率快速訓(xùn)練出一個(gè)臨時(shí)模型,用它產(chǎn)出人物的新圖,將新圖投入訓(xùn)練集
作者:hking
來(lái)源:微信公眾號(hào):騰訊技術(shù)工程
出處
:https://mp.weixin.qq.com/s/8czNX-pXyOeFDFhs2fo7HA
熱門(mén)資訊
1. 照片變漫畫(huà)效果,這4個(gè)方法操作簡(jiǎn)單有效,快來(lái)試試吧!
想將照片變成漫畫(huà)效果?這篇文章分享了4個(gè)方法,包括Photoshop、聰明靈犀、VanceAI Toongineer、醒圖,簡(jiǎn)單操作就能實(shí)現(xiàn),快來(lái)嘗試一下吧!
2. 華為手機(jī)神奇“AI修圖”功能,一鍵消除衣服!原圖變身大V領(lǐng)深V!
最近華為手機(jī)Pura70推出的“AI修圖”功能引發(fā)熱議,通過(guò)簡(jiǎn)單操作可以讓照片中的人物換裝。想了解更多這款神奇功能的使用方法嗎?點(diǎn)擊查看!
3. 四款值得推薦的AI以圖生圖軟件,有需要的趕緊來(lái)試試!
近年來(lái),人工智能逐漸走入公眾視野,其中的AI圖像生成技術(shù)尤為引人注目。只需在特定軟件中輸入關(guān)鍵詞描述語(yǔ)以及上傳參考圖就能智能高效生成符合要求的...
4. AI視頻制作神器Viggle:讓靜態(tài)人物動(dòng)起來(lái),創(chuàng)意無(wú)限!
Viggle AI是一款免費(fèi)制作視頻的AI工具,能讓靜態(tài)人物圖片動(dòng)起來(lái),快來(lái)了解Viggle AI的功能和優(yōu)勢(shì)吧!
5. Logo Diffusion——基于sd繪畫(huà)模型的AI LOGO 生成器
這下LOGO設(shè)計(jì)徹底不用求人了。接下來(lái)詳細(xì)演示一遍操作流程首先進(jìn)入Logo D... 想學(xué)習(xí)更多AI技能,比如說(shuō)關(guān)于怎么樣利用AI來(lái)提高生產(chǎn)效率、還能做什么AI...
6. 零基礎(chǔ)10分鐘生成漫畫(huà),教大家如何用AI生成自己的漫畫(huà)
接下來(lái),我將親自引導(dǎo)你,使用AI工具,創(chuàng)作一本既有趣又能帶來(lái)盈利的漫畫(huà)。我們將一起探索如何利用這個(gè)工具,發(fā)揮你的創(chuàng)意,制作出令人驚嘆的漫畫(huà)作品。讓...
7. 趕緊收藏好!這4個(gè)完全免費(fèi)的AI視頻制作網(wǎng)站和工具
以下是一些免費(fèi)的AI視頻制作網(wǎng)站或工具,幫助您制作各種類(lèi)型的視頻。 1. Lumen5:Lumen5是一個(gè)基于AI的視頻制作工具,可將文本轉(zhuǎn)換為視頻。 用戶(hù)可以使...
8. AI顯卡繪畫(huà)排行榜:4090無(wú)懸念,最具性?xún)r(jià)比出人意料
在AI繪圖領(lǐng)域,Stable Diffusion的顯卡繪圖性能備受關(guān)注。本文整理了Stable Diffusion顯卡的硬件要求和性能表現(xiàn),以及2023年3月顯卡AI繪圖效率排行榜和性?xún)r(jià)比排行榜。歡迎查看最新的AI顯卡算力排行榜。
9. 一款免費(fèi)無(wú)限制的AI視頻生成工具火了!國(guó)內(nèi)無(wú)障礙訪(fǎng)問(wèn)!附教程
人人都可以動(dòng)手制作AI視頻! 打開(kāi)網(wǎng)址https://pixverse.ai/,用郵箱注冊(cè)后,點(diǎn)擊右上角Create,就可以開(kāi)始創(chuàng)作了。 PixVerse目前有文案生成視頻,和圖片生...
就能快速生成一幅極具藝術(shù)效果的作品,讓現(xiàn)實(shí)中不懂繪畫(huà)的人也能參與其中創(chuàng)作!真的超贊噠~趣趣分享幾款超厲害的AI繪畫(huà)軟件,提供詳細(xì)操作!有需要的快來(lái)...
最新文章
同學(xué)您好!