激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

高校合作1:010-59833514 ?咨詢(xún)電話(huà):400-810-1418 服務(wù)與監(jiān)督電話(huà):400-810-1418轉(zhuǎn)接2

開(kāi)源圖像模型Stable Diffusion入門(mén)手冊(cè)

發(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ì)比:

環(huán)境部署

手動(dòng)部署

可以參考 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)工具。

  1. 安裝 Python 安裝 Python 3.10,安裝時(shí)須選中 Add Python to PATH
  2. 安裝 Git 在 Git-scm.com 下載 Git 安裝包并安裝。
  3. 下載 webui 的 github 倉(cāng)庫(kù) 按下win+r輸入 cmd,調(diào)出命令行窗口。運(yùn)行:cd PATH_TO_CLONE
    git clone https:
    //github.com/AUTOMATIC1111/stable-diffusion-webui.git
    請(qǐng)把代碼中的PATH_TO_CLONE
    替換為自己想下載的目錄。
  1. 裝配模型 可在如Civitai上下載標(biāo)注有CKPT的模型,有模型才能作畫(huà)。下載的模型放入下載后文件路徑下的models/Stable-diffusion目錄。
  2. 使用 雙擊運(yùn)行 webui-user.bat 。腳本會(huì)自動(dòng)下載依賴(lài),等待一段時(shí)間(可能很長(zhǎng)),程序會(huì)輸出一個(gè)類(lèi)似 http://127.0.0.1:7860/ 的地址,在瀏覽器中輸入這個(gè)鏈接開(kāi)即可。詳細(xì)可參見(jiàn)模型使用。
  3. 更新 按下win+r輸入 cmd,調(diào)出命令行窗口。運(yùn)行:cd PATH_TO_CLONE
    git pull
    請(qǐng)把代碼中的:PATH_TO_CLONE
    替換為自己下載倉(cāng)庫(kù)的目錄。

整合包

覺(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)注意插件的更新:

關(guān)于插件

Stable Diffusion 可配置大量插件擴(kuò)展,在 webui 的“擴(kuò)展”選項(xiàng)卡下,可以安裝插件:

點(diǎn)擊“加載自”后,目錄會(huì)刷新,選擇需要的插件點(diǎn)擊右側(cè)的 install 即可安裝。

安裝完畢后,需要重新啟動(dòng)用戶(hù)界面:

文生圖最簡(jiǎn)流程

  1. 選擇需要使用的模型(底模),這是對(duì)生成結(jié)果影響最大的因素,主要體現(xiàn)在畫(huà)面風(fēng)格上。
  2. 在第一個(gè)框中填入提示詞(Prompt),對(duì)想要生成的東西進(jìn)行文字描述
  3. 在第二個(gè)框中填入負(fù)面提示詞(Negative prompt),你不想要生成的東西進(jìn)行文字描述
  4. 選擇采樣方法、采樣次數(shù)、圖片尺寸等參數(shù)。
  • Sampler(采樣器/采樣方法)選擇使用哪種采樣器。Euler a(Eular ancestral)可以以較少的步數(shù)產(chǎn)生很大的多樣性,不同的步數(shù)可能有不同的結(jié)果。而非 ancestral 采樣器都會(huì)產(chǎn)生基本相同的圖像。DPM 相關(guān)的采樣器通常具有不錯(cuò)的效果,但耗時(shí)也會(huì)相應(yīng)增加。
    • Euler 是最簡(jiǎn)單、最快的
    • Euler a 更多樣,不同步數(shù)可以生產(chǎn)出不同的圖片。但是太高步數(shù) (>30) 效果不會(huì)更好。
    • DDIM 收斂快,但效率相對(duì)較低,因?yàn)樾枰芏?step 才能獲得好的結(jié)果,適合在重繪時(shí)候使用。
    • LMS 是 Euler 的衍生,它們使用一種相關(guān)但稍有不同的方法(平均過(guò)去的幾個(gè)步驟以提高準(zhǔn)確性)。大概 30 step 可以得到穩(wěn)定結(jié)果
    • PLMS 是 Euler 的衍生,可以更好地處理神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中的奇異性。
    • DPM2 是一種神奇的方法,它旨在改進(jìn) DDIM,減少步驟以獲得良好的結(jié)果。它需要每一步運(yùn)行兩次去噪,它的速度大約是 DDIM 的兩倍,生圖效果也非常好。但是如果你在進(jìn)行調(diào)試提示詞的實(shí)驗(yàn),這個(gè)采樣器可能會(huì)有點(diǎn)慢了。
    • UniPC 效果較好且速度非???,對(duì)平面、卡通的表現(xiàn)較好,推薦使用。
  • Sampling Steps(采樣步數(shù))Stable Diffusion 的工作方式是從以隨機(jī)高斯噪聲起步,向符合提示的圖像一步步降噪接近。隨著步數(shù)增多,可以得到對(duì)目標(biāo)更小、更精確的圖像。但增加步數(shù)也會(huì)增加生成圖像所需的時(shí)間。增加步數(shù)的邊際收益遞減,取決于采樣器。一般開(kāi)到 20~30。
  • 不同采樣步數(shù)與采樣器之間的關(guān)系:

  • CFG Scale(提示詞相關(guān)性)圖像與你的提示的匹配程度。增加這個(gè)值將導(dǎo)致圖像更接近你的提示,但它也在一定程度上降低了圖像質(zhì)量。可以用更多的采樣步驟來(lái)抵消。過(guò)高的 CFG Scale 體現(xiàn)為粗獷的線(xiàn)條和過(guò)銳化的圖像。一般開(kāi)到 7~11。CFG Scale 與采樣器之間的關(guān)系:
  • 生成批次每次生成圖像的組數(shù)。一次運(yùn)行生成圖像的數(shù)量為“批次* 批次數(shù)量”。
  • 每批數(shù)量同時(shí)生成多少個(gè)圖像。增加這個(gè)值可以提高性能,但也需要更多的顯存。大的 Batch Size 需要消耗巨量顯存。若沒(méi)有超過(guò) 12G 的顯存,請(qǐng)保持為 1。
  • 尺寸指定圖像的長(zhǎng)寬。出圖尺寸太寬時(shí),圖中可能會(huì)出現(xiàn)多個(gè)主體。1024 之上的尺寸可能會(huì)出現(xiàn)不理想的結(jié)果,推薦使用小尺寸分辨率+高清修復(fù)(Hires fix)。
  • 種子種子決定模型在生成圖片時(shí)涉及的所有隨機(jī)性,它初始化了 Diffusion 算法起點(diǎn)的初始值。

理論上,在應(yīng)用完全相同參數(shù)(如 Step、CFG、Seed、prompts)的情況下,生產(chǎn)的圖片應(yīng)當(dāng)完全相同。

  • 高清修復(fù)通過(guò)勾選 "Highres. fix" 來(lái)啟用。默認(rèn)情況下,文生圖在高分辨率下會(huì)生成非?;煦绲膱D像。如果使用高清修復(fù),會(huì)型首先按照指定的尺寸生成一張圖片,然后通過(guò)放大算法將圖片分辨率擴(kuò)大,以實(shí)現(xiàn)高清大圖效果。最終尺寸為(原分辨率*縮放系數(shù) Upscale by)。
    • 放大算法中,Latent 在許多情況下效果不錯(cuò),但重繪幅度小于 0.5 后就不甚理想。ESRGAN_4x、SwinR 4x 對(duì) 0.5 以下的重繪幅度有較好支持。
    • Hires step 表示在進(jìn)行這一步時(shí)計(jì)算的步數(shù)。
    • Denoising strength 字面翻譯是降噪強(qiáng)度,表現(xiàn)為最后生成圖片對(duì)原始輸入圖像內(nèi)容的變化程度。該值越高,放大后圖像就比放大前圖像差別越大。低 denoising 意味著修正原圖,高 denoising 就和原圖就沒(méi)有大的相關(guān)性了。一般來(lái)講閾值是 0.7 左右,超過(guò) 0.7 和原圖基本上無(wú)關(guān),0.3 以下就是稍微改一些。實(shí)際執(zhí)行中,具體的執(zhí)行步驟為 Denoising strength * Sampling Steps。
  • 面部修復(fù)修復(fù)畫(huà)面中人物的面部,但是非寫(xiě)實(shí)風(fēng)格的人物開(kāi)啟面部修復(fù)可能導(dǎo)致面部崩壞。
  • 點(diǎn)擊“生成”

提示詞

提示詞所做的工作是縮小模型出圖的解空間,即縮小生成內(nèi)容時(shí)在模型數(shù)據(jù)里的檢索范圍,而非直接指定作畫(huà)結(jié)果。提示詞的效果也受模型的影響,有些模型對(duì)自然語(yǔ)言做特化訓(xùn)練,有些模型對(duì)單詞標(biāo)簽對(duì)特化訓(xùn)練,那么對(duì)不同的提示詞語(yǔ)言風(fēng)格的反應(yīng)就不同。

提示詞內(nèi)容

提示詞中可以填寫(xiě)以下內(nèi)容:

  • 自然語(yǔ)言 可以使用描述物體的句子作為提示詞。大多數(shù)情況下英文有效,也可以使用中文。避免復(fù)雜的語(yǔ)法。
  • 單詞標(biāo)簽 可以使用逗號(hào)隔開(kāi)的單詞作為提示詞。一般使用普通常見(jiàn)的單詞。單詞的風(fēng)格要和圖像的整體風(fēng)格搭配,否則會(huì)出現(xiàn)混雜的風(fēng)格或噪點(diǎn)。避免出現(xiàn)拼寫(xiě)錯(cuò)誤??蓞⒖糡ags | Danbooru (donmai.us)
  • Emoji、顏文字 Emoji () 表情符號(hào)也是可以使用并且非常準(zhǔn)確的。因?yàn)?Emoji 只有一個(gè)字符,所以在語(yǔ)義準(zhǔn)確度上表現(xiàn)良好。關(guān)于 emoji 的確切含義,可以參考Emoji List, v15.0 (unicode.org),同時(shí) Emoji 在構(gòu)圖上有影響。

對(duì)于使用 Danbooru 數(shù)據(jù)的模型來(lái)說(shuō),可以使用西式顏文字在一定程度上控制出圖的表情。如::-) 微笑 :-( 不悅 ;-) 使眼色 :-D 開(kāi)心 :-P 吐舌頭 :-C 很悲傷 :-O 驚訝 張大口 :-/ 懷疑

提示詞語(yǔ)法

根據(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)重,方法如:

  • (word) - 將權(quán)重提高 1.1 倍
  • ((word)) - 將權(quán)重提高 1.21 倍(= 1.1 * 1.1)
  • [word] - 將權(quán)重降低至原先的 90.91%
  • (word:1.5) - 將權(quán)重提高 1.5 倍
  • (word:0.25) - 將權(quán)重減少為原先的 25%
  • (word) - 在提示詞中使用字面意義上的 () 字符

( 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)推。

Token

實(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)站還有:

  • Majinai:MajinAI | Home
  • 詞圖:詞圖 PromptTool - AI 繪畫(huà)資料管理網(wǎng)站
  • Black Lily:black_lily
  • Danbooru 標(biāo)簽超市:Danbooru 標(biāo)簽超市
  • 魔咒百科詞典:魔咒百科詞典
  • AI 詞匯加速器:AI 詞匯加速器 AcceleratorI PromptNovelAI 魔導(dǎo)書(shū):NovelAI 魔導(dǎo)書(shū)
  • 鱉哲法典:鱉哲法典
  • Danbooru tag:Tag Groups Wiki | Danbooru (donmai.us)
  • AIBooru:AIBooru: Anime Image Board

Controlnet

Controlnet 允許通過(guò)線(xiàn)稿、動(dòng)作識(shí)別、深度信息等對(duì)生成的圖像進(jìn)行控制。

請(qǐng)注意,在使用前請(qǐng)確保 ControlNet 設(shè)置下的路徑與本地 Stable Diffusion 的路徑同步

基本流程

  • 點(diǎn)擊 Enable 啟用該項(xiàng) ControlNet
  • Preprocessor 指預(yù)處理器,它將對(duì)輸入的圖像進(jìn)行預(yù)處理。如果圖像已經(jīng)符合預(yù)處理后的結(jié)果,請(qǐng)選擇 None。譬如,圖中導(dǎo)入的圖像已經(jīng)是 OpenPose 需要的骨架圖,那么 preprocessor 選擇 none 即可。
  • 在 Weight 下,可以調(diào)整該項(xiàng) ControlNet 的在合成中的影響權(quán)重,與在 prompt 中調(diào)整的權(quán)重類(lèi)似。Guidance strength 用來(lái)控制圖像生成的前百分之多少步由 Controlnet 主導(dǎo)生成,這點(diǎn)與[:]語(yǔ)法類(lèi)似。
  • Invert Input Color 表示啟動(dòng)反色模式,如果輸入的圖片是白色背景,開(kāi)啟它。
  • RGB to BGR 表示將輸入的色彩通道信息反轉(zhuǎn),即 RGB 信息當(dāng)做 BGR 信息解析,只是因?yàn)?OpenCV 中使用的是 BGR 格式。如果輸入的圖是法線(xiàn)貼圖,開(kāi)啟它。
  • Low VRAM 表示開(kāi)啟低顯存優(yōu)化,需要配合啟動(dòng)參數(shù)“--lowvram”。
  • Guess Mode 表示無(wú)提示詞模式,需要在設(shè)置中啟用基于 CFG 的引導(dǎo)。
  • Model 中請(qǐng)選擇想要使用解析模型,應(yīng)該與輸入的圖像或者預(yù)處理器對(duì)應(yīng)。請(qǐng)注意,預(yù)處理器可以為空,但模型不能為空。

可用預(yù)處理/模型

  • canny 用于識(shí)別輸入圖像的邊緣信息。
  • depth 用于識(shí)別輸入圖像的深度信息。
  • hed 用于識(shí)別輸入圖像的邊緣信息,但邊緣更柔和。
  • mlsd 用于識(shí)別輸入圖像的邊緣信息,一種輕量級(jí)的邊緣檢測(cè)。它對(duì)橫平豎直的線(xiàn)條非常敏感,因此更適用于于室內(nèi)圖的生成。
  • normal 用于識(shí)別輸入圖像的法線(xiàn)信息。
  • openpose 用于識(shí)別輸入圖像的動(dòng)作信息。OpenPose Editor 插件可以自行修改姿勢(shì),導(dǎo)出到文生圖或圖生圖。
  • scribble 將輸入圖像作為線(xiàn)稿識(shí)別。如果線(xiàn)稿是白色背景,務(wù)必勾選“Invert Input Color”
  • fake_scribble 識(shí)別輸入圖像的線(xiàn)稿,然后再將它作為線(xiàn)稿生成圖像。
  • segmentation 識(shí)別輸入圖像各區(qū)域分別是什么類(lèi)型的物品,再用此構(gòu)圖信息生成圖像。如果想繪制一張符合 segementation 規(guī)范的圖像,可以使用以下色表繪制。color_coding_semantic_segmentation_classes - Google 表格

多 ControlNet 合成

在 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è)。

  • 大模型(Ckpt):放入 models\Stable-diffusion
  • VAE 模型:一些大模型需要配合 vae 使用,對(duì)應(yīng)的 vae 同樣放置在 models\Stable-diffusion 或 models\VAE 目錄,然后在 webui 的設(shè)置欄目選擇。
  • Lora/LoHA/LoCon 模型:放入 extensions\sd-webui-additional-networks\models\lora,也可以在 models/Lora 目錄
  • Embedding 模型:放入 embeddings 目錄

模型使用

  • Checkpoint(ckpt)模型 對(duì)效果影響最大的模型。在 webui 界面的左上角選擇使用。

一些模型會(huì)有觸發(fā)詞,即在提示詞內(nèi)輸入相應(yīng)的單詞才會(huì)生效。

  • Lora 模型 / LoHA 模型 / LoCon 模型

對(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)。

  • Embedding

對(duì)人物、畫(huà)風(fēng)都有調(diào)整效果的模型。在提示詞中加入對(duì)應(yīng)的關(guān)鍵詞即可。大部分 Embedding 模型的關(guān)鍵詞與文件名相同,譬如一個(gè)名為為“SomeCharacter.pt”的模型,觸發(fā)它的關(guān)鍵詞檢索“SomeCharacter”。

模型訓(xùn)練

環(huán)境搭建

以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)境。

  1. 首先,以管理員模式啟動(dòng) Powershell,執(zhí)行“Set-ExecutionPolicy Unrestricted”命令,并回答“A"。然后可以關(guān)閉該窗口。
  2. 啟動(dòng)一個(gè)普通的 Powershell 窗口,在需要克隆該倉(cāng)庫(kù)的路徑下,執(zhí)行以下命令:
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

環(huán)境更新

如果需要更新倉(cāng)庫(kù),請(qǐng)執(zhí)行以下命令:

git pull
.\venv\Scripts\activate
pip install --use-pep517 --upgrade -r requirements.txt

界面啟動(dòng)

在 Powershell 中執(zhí)行:

.\gui.ps1

雙擊 gui.bat 也可以。彈出以下界面后,直接訪(fǎng)問(wèn) URL 即可。

訓(xùn)練流程

模型訓(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é)果。

1. 準(zhǔn)備訓(xùn)練集

圖片盡可能高清,風(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ò)擬合】

2. 圖片裁剪

將訓(xùn)練集裁剪為多個(gè)尺寸相同的圖片??梢栽?SD webui 界面中自動(dòng)裁剪,也可以手動(dòng)裁切。

一般使用的圖片尺寸是 512*512,也可更換為其他尺寸,尺寸越大占用顯存越高,但對(duì)細(xì)節(jié)的捕捉也會(huì)越好。

3. 圖片打標(biāo)

  • 關(guān)鍵詞生成 可以在訓(xùn)練環(huán)境的頁(yè)面下打標(biāo):

也可以在 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)鍵詞合并 在生成出的關(guān)鍵詞中,我們需要把與訓(xùn)練目標(biāo)強(qiáng)相關(guān)的關(guān)鍵詞劃為一個(gè)統(tǒng)一的特征表述。以"1boy, cooking, frying pan, male focus, solo, gloves, apron, fire, brown footwear, black gloves, boots, stove, kitchen, holding, facial hair, bandana, blue shirt, shirt"為例,假如我們的訓(xùn)練對(duì)象就是一個(gè)男性大胡子,那么他必然始終攜帶著”男人、胡子“這兩個(gè)要素,那么我們可以用一個(gè)詞總結(jié)這個(gè)角色,例如用”Smith“替代”1boy,facial hair",整條句子將變?yōu)椋?/span>

--原關(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)鍵詞中。

  • 編組 一些具有同組關(guān)系的圖片可以利用關(guān)鍵詞引導(dǎo) AI 去歸納它們。譬如,我們訓(xùn)練的對(duì)象 Smith 有三張圖,分別是全圖、背景、前景,那么我可以如此處理:

4. 正則化

訓(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)。

5. 文件路徑組織

在訓(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ǔ)充

6. 訓(xùn)練參數(shù)

在 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)為退火衰減

  • adafactor:自適應(yīng)學(xué)習(xí)率。
  • constant :恒定,學(xué)習(xí)率不變。
  • constant_with_warmup:恒定預(yù)熱。學(xué)習(xí)率在開(kāi)始會(huì)增大一點(diǎn),然后退回原學(xué)習(xí)率不變。
  • Cosine:使用余弦函數(shù)來(lái)調(diào)整學(xué)習(xí)率,使其在訓(xùn)練過(guò)程中逐漸降低。常被稱(chēng)為余弦退火。
  • cosine_with_restarts:余弦退火重啟。在 consine 的基礎(chǔ)上每過(guò)幾個(gè)周期將進(jìn)行一次重啟,該值在選擇后可以設(shè)定。
  • linear:線(xiàn)性。學(xué)習(xí)率線(xiàn)性下降。
  • Polynomial:使用多項(xiàng)式函數(shù)來(lái)調(diào)整學(xué)習(xí)率。

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)化器。

  • Adam:一種常用的梯度下降算法,被廣泛應(yīng)用于神經(jīng)網(wǎng)絡(luò)模型的優(yōu)化中。它結(jié)合了動(dòng)量梯度下降和自適應(yīng)學(xué)習(xí)率方法的優(yōu)點(diǎn),既可以加快收斂速度,又可以避免學(xué)習(xí)率調(diào)整不當(dāng)導(dǎo)致的振蕩和陷入局部最優(yōu)解。并且對(duì)于不同的參數(shù)有不同的學(xué)習(xí)率,更加適用于高維度的參數(shù)空間。
  • AdamW:對(duì) Adam 算法的改進(jìn)方案,對(duì)懲罰項(xiàng)參數(shù)進(jìn)行控制,能更好地控制模型的復(fù)雜度,防止模型過(guò)擬合,提高泛化性能。
  • AdamW8bit:8bit 模式的 AdamW,能降低顯存占用,略微加快訓(xùn)練速度。
  • Adafactor:自適應(yīng)優(yōu)化器,對(duì) Adam 算法的改進(jìn)方案,降低了顯存占用。參考學(xué)習(xí)率為 0.005 1 。
  • DAdaptation2:自適應(yīng)優(yōu)化器,比梯度下降(SGD)方法更加穩(wěn)定有效、使用時(shí)請(qǐng)將學(xué)習(xí)率設(shè)置為 1。
  • Lion3:自適應(yīng)優(yōu)化器,節(jié)省更多顯存、速度更快,與 AdamW 和 Adafactor 相比有 15%左右的加速。參考學(xué)習(xí)率為 0.001。
  • SGDNesterov:一種常用的優(yōu)化算法,基于梯度下降(SGD)方法進(jìn)行優(yōu)化,通過(guò)引入動(dòng)量的概念加速收斂速度。
  • SGDNesterov8bit:8bit 模式的 SGDNesterov,能降低顯存占用,略微加快訓(xùn)練速度。

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í)中指定。

風(fēng)格訓(xùn)練

訓(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)練

訓(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)課程推薦

熱門(mén)資訊

請(qǐng)綁定手機(jī)號(hào)

x

同學(xué)您好!

您已成功報(bào)名0元試學(xué)活動(dòng),老師會(huì)在第一時(shí)間與您取得聯(lián)系,請(qǐng)保持電話(huà)暢通!
確定