第一部分
4.1 自動安裝
4.2 自定義安裝
1.1 Textual Inversion 簡介
1.2 Textual Inversion of webai
1.1.1 摘要
1.1.2 算法
1.1.3 模型效果
1.2.1 預訓練embedding用于圖片生成
1.2.2 訓練embedding
1.2.3 Finding embeddings online
1.2.4 Hypernetworks
一、 Features:Textual Inversion(文本反轉)
二、 Features: Negative prompt
三、Xformers依賴
四、NVidia GPUs安裝
五、命令行參數和優化
六、安裝和使用自定義腳本
第二部分 kaggle notebook
2.1 Prompt運用規則及技巧
2.2 Model資源
2.3 Embedding/ Hypernetwork使用及訓練
2.4 Dreambooth使用及訓練
2.5 插件介紹
1.1 kaggle notebook
1.2 colab、windows部署
一、模型部署
二、進階教程
??文生圖模型為通過自然語言指導創作提供了前所未有的自由。然而,目前尚不清楚如何運用這種自由來生成特定獨特概念的圖像,修改其外觀,或將其合成新角色和新場景。換言之,要把現實中的一些新概念(new concept
)引入到生成中,單從文本出發還是不夠的。
??本文提出了 personalized text-to-image generation,即個性化的文轉圖生成。可以基于文本+用戶給的3-5張圖(“new concepts”)來生成新的圖像。
??提出了textual inversions
,用于把圖片概念轉換成pseudo-words
(偽單詞)。然后一起合并到prompt中,從而生成一些具備這樣概念的圖片。
??在大多數文生圖模型的文本編碼階段,第一步是將prompt
轉換為數字表示,而這通常是通過將words
轉換為tokens
來完成的,每個token相當于模型字典中的一個條目(entry)。然后將這些entries轉換為embeddings
進行訓練。
??我們發現了可以添加用戶提供的special token (S*
,表示新概念)來作為新的embedding。然后,將這個embedding link到新的偽單詞,偽單詞可以同其它詞一樣被合并到新的句子中。在某種意義上,我們正在對凍結模型的文本嵌入空間進行反轉,所以我們稱這個過程為Textual Inversion
(文本反轉)。
??我的理解,之前都是將文本編碼為embedding進行訓練,而Textual Inversion是將用戶提供的圖片(“A photo of S*”)以embedding的形式鏈接到某個偽單詞上來表示一種概念。即embedding→文本,和之前是相反的過程。
模型結構如下圖所示:
本文是基于latent diffusion做的,只改進了其中text encoder部分的詞表部分,添加S*
來表達新概念,其它token的embedding不變,從而實現與新概念的組合。
為了訓練S*
對應的文本編碼v*
,使用prompt “A photo of S*”生成新的圖片,我們希望這個概念生成圖片和用戶給的圖片相符合,從而學習到v*
這個新概念。學到之后就可以利用S*
來做新的生成了。
損失函數:讓通過這個句子prompt產生的圖片和用戶給的small sample(3~5張圖)越近越好:
Image Variations:相似圖生成
??因為embedding 的學習目標本身就是要生成一摸一樣的圖片,所以本文的相似圖生成效果很好:
Text-guided synthesis(文本引導生成)
下面是基于學到的新概念的生成:
??和CLIP guided的方法的對比:最相近的工作是PALAVRA——把新概念圖片先得到image embedding,再用對比學習的方法轉成text embedding,然后再進行生成,而本文是直接學習pseudo-word。在guided diffusion中,有init image的生成效果會好很多,但是還是會出現原來圖片變形的問題。
Style transfer(風格遷移)
通過in the style of 這樣的prompt可以實現風格遷移:
Concept compositions(概念組合)
不同圖片概念,組合起來進行生成,Unfortunately, this doesn’t yet work for relational prompts, so we can’t show you our cat on a fishing trip with our clock.
Downstream applications
我們的偽詞適用于下游模型。例如,將舊照片添加一些新元素來增加它們的趣味性:(把第二排圖片中藍色部分替換為第一排的元素)
Reducing Biases(減少偏見,略)
?? webai
允許用戶使用Textual Inversion
將自己的圖片進行訓練,得到一個embedding(預訓練的embedding),用于指導新圖片的生成。這個預訓練embedding是一個.pt
或.bin
文件(前者是原始作者使用的格式,后者是diffusers library使用的格式)。
??將預訓練好的embedding(嵌入)放入embeddings目錄,并在prompt中使用其文件名,無需重新啟動程序即可生成新的圖片。例如,下面是webai作者在WD1.2模型上,用53張圖片(增強成119張)訓練19500步后得到的Usada Pekora embedding。
您可以在一個prompt中組合多個embedding:(相比上圖prompt多加了一個詞——mignon)
??使用embedding生成新的圖片時的模型,最好和訓練這個embedding時的模型保持一致,否則生成效果可能不好。下面是WD1.2模型訓練的usada pekora embedding,用在stable diffusion 1.4上進行生成的效果:(prompt和參數保持不變,但是生成的圖片不是最開始的風格了)
embedding訓練說明
該功能非常原始,使用風險自負
創建一個新的empty embedding,選擇待訓練圖像的目錄,進行embedding訓練。
啟用半精度浮點運算,但需試驗開啟前后效果是不是一樣好。如果顯存足夠,使用--no-half --precision full
更安全
用于UI自動運行圖像預處理的部分。
中斷后重啟訓練,不會丟失任何數據
不支持batch sizes 或 gradient accumulation(梯度累積,用于顯存不足),不支持–lowvram 和 --medvram flags。
參數說明
name
:embedding的文件名。后續在prompt使用這個embedding時就用這個名字。
Initialization text
(初始化文本):用于新建empty embedding的初始化。
Number of vectors per token
:empty embedding的size。
新建后會用Initialization text的embedding填充empty embedding。也就是如果你創建empty embedding后又不訓練,那么這個embedding和Initialization text的embedding是一樣的。
比如你新建一個名為“zzzz1234”的empty embedding,然后選“tree”這個詞作為Initialization text。那么不進行任何訓練時,“zzzz1234”和“tree”的embedding是一樣的
比如webai模型默認prompt的長度上限是75個token,如果設置Number of vectors per token=16,那么你將這個empty embedding加入prompt后,就只能再寫75-16=59個token了。
empty embedding的size越大,就可以融合更多的主題信息(概念信息),相應的,你就需要更多的圖片,才能訓練好這個empty embedding。
Creating an embedding
Preprocess
:將目錄下的圖片進行Textual Inversion,并將結果寫入另一個目錄
Source directory
:包含圖像的目錄
Destination directory
:將寫入結果的目錄
Create flipped copies
:對于每個圖像,還要寫入其鏡像副本
Split oversized images into two
:將過大的圖像拆分為兩張(短邊與所需分辨率相匹配,兩張圖片可能相交)
Use BLIP caption as filename
:使用BLIP模型向文件名添加標題。
Training an embedding
訓練風格使用style.txt
(只需要3、5張圖片),訓練主題使用subject.txt
(Number of vectors per token
越大,需要的圖片就越多)。文件中可以使用以下tag:
有關如何使用這些文件,請參閱textual_inversation_templates
目錄中的文件。
[name]
:embedding名稱
[filewords]
:來自數據集圖像文件名的單詞。有關更多信息,請參見下文。
比如在訓練中提示Loss:nan,訓練失敗)。使用默認值時,不會發生這種情況。
設置多個學習率,比如0.005:100, 1e-3:1000, 1e-5
表示前100步lr=0.005,101-1000步時lr=1e-3,最后lr=1e-5。
Embedding
:從下拉列表中選擇要訓練的嵌入。
Learning rate
:學習率,設置得太高,可能會破壞embedding
Dataset directory
:待訓練圖像的目錄。
Log directory
:樣本圖像和部分訓練的嵌入副本將寫入此目錄。
Prompt template file
: text file with prompts,每行一個,用于訓練模型。
Max steps
:Max steps
步后完成訓練。模型訓練一張圖片是一個step。如果您訓練中斷后重啟,會保留step數。
Save images with embedding in PNG chunks
:每次生成圖像時,都會將其與最近記錄的嵌入合并,并以可以作為圖像共享的格式保存到image_embeddings中,然后將其放入嵌入文件夾并加載。
Preview prompt
:如果不為空,此prompt將用于生成預覽圖;如果為空,the prompt from training will be used。
filewords
:
[filewords]
:提示模板文件( prompt template)的標簽,默認下去掉圖片文件名前面的數字和破折號(-)就是[filewords]
,比如圖片000001-1-a man in suit.png的[filewords]
就是a man in suit,是一個文本。這個文本可用在prompt中。
可以使用選項Filename word regex
和Filename join string
更改文件名中的文本。(感覺沒必要,詳情看原文檔)
第三方庫
webai訓練embeddings時還使用了Stable-textual-inversion_win和InvokeAI這兩個github倉庫。還有一些是關于diffusers library或者colab上訓練的選項。
huggingface concepts library :有很多不同的emb
16777216c:NSFW,動漫藝術家風格。
Catoroboto:一些匿名的動畫embedding。
viper1:NSFW,furry girls。
anon’s embeddings -NSFW:動漫藝術家。
rentry:包含多種SD模型的 Textual Inversion emb
??Hypernetworks是在不影響模型權重的情況下微調模型的概念。目前是在textual inversion選項卡里訓練hypernets,訓練方式和textual inversion相同,但是學習率很低,比如5e15或者5e-6。這部分可參考《Hypernetworks訓練指南》。
??Unload VAE and CLIP from VRAM when training
:這個選項卡允許降低預覽圖生成速度來減少顯存。
??Negative prompt用于指定不想生成的內容,使用Negative prompt可以消除了Stable Diffusion的常見畸形,比如多余的肢體。Negative prompt可單獨使用(即不用 prompt)。
??要使用Negative prompt,只需以下步驟:
# prompts = ["a castle in a forest"]# negative_prompts = ["grainy, fog"]c = model.get_learned_conditioning(prompts)uc = model.get_learned_conditioning(negative_prompts)samples_ddim, _ = sampler.sample(conditioning=c, unconditional_conditioning=uc, [...])
??采樣器(sampler)將比較prompt生成的圖片和Negative prompt生成的圖片之間的差異,并是最終生成結果逼近前者,遠離后者。下面是一個演示:
原始圖片有霧狀(fog)、顆粒感(grainy,畫質低)。Negative prompt為fog后霧狀沒了但是生成奇怪的紫色
Negative prompt為fog,grainy, purple,沒有霧狀,畫質高,也沒有奇怪的紫色了。
??Xformers
庫可以加速圖像的生成(可選),沒有適用于Windows的二進制文件(除了一個特定的配置外),可自行構建。
linux上構建Xformers的指南:
#切換到webui根目錄source ./venv/bin/activate cd repositories git clone https://github.com/facebookresearch/xformers.git cd xformers git submodule update --init --recursive pip install -r requirements.txt pip install -e
Windows上構建xFormers(見原文檔)
在嘗試安裝之前,請確保滿足所有必需的依賴項。
依賴項包括:
安裝
Python 3.10.6
和git
運行
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
下載webai
項目,后續可以使用git pull
命令更新項目。(windows用戶安裝git for windows后,在某個文件夾里右鍵單擊選擇Git Bash here
打開git,運行此命令下載項目。)下載Stable Diffusion 模型文件(
.ckpt
)、sd-v1-4.ckpt放在項目根目錄下的models/Stable-diffusion
文件夾里。Stable-diffusion 2.x 版本的模型,需要下載配套的
.yaml
配置文件,并放在.ckpt
同名的文件夾中:768-v-ema.ckpt config、512-base-ema.ckpt config、512-base-ema.ckpt config
windows:運行webui-user.bat
,如果運行失敗可以參考Troubleshooting 。
Linux:項目根目錄下運行:bash <(wget -qO- https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh)
python launch.py
可自動運行模型,運行時可以使用一些命令參數,比如:
python launch.py --opt-split-attention --ckpt ../secret/anime9999.ckpt
??更改webui-user.sh
中的變量,并運行bash webui.sh
,接下來自定義安裝步驟、AMD GPUs安裝、見原文檔。此文檔還有WSL2安裝,conda安裝等。
??更多關于安裝的詳細教程,可以參考帖子《使用stable-diffusion-webui部署NovelAi/Stable Diffusion1.4 /1.5/2.0 保姆級教程、命令解釋、原理講解(colab、windows、Linux )》
命令行參數 | 解釋 |
---|---|
--share | online運行,也就是public address |
--listen | 使服務器偵聽網絡連接。這將允許本地網絡上的計算機訪問UI。 |
--port | 更改端口,默認為端口7860。 |
--xformers | 使用xformers庫。極大地改善了內存消耗和速度。Windows 版本安裝由C43H66N12O12S2 維護的二進制文件 |
--force-enable-xformers | 無論程序是否認為您可以運行它,都啟用 xformers。不要報告你運行它的錯誤。 |
--opt-split-attention | Cross attention layer optimization 優化顯著減少了內存使用,幾乎沒有成本(一些報告改進了性能)。黑魔法。默認情況下torch.cuda,包括 NVidia 和 AMD 卡。 |
--disable-opt-split-attention | 禁用上面的優化 |
--opt-split-attention-v1 | 使用上述優化的舊版本,它不會占用大量內存(它將使用更少的 VRAM,但會限制您可以制作的最大圖片大小)。 |
--medvram | 通過將穩定擴散模型分為三部分,使其消耗更少的VRAM,即cond(用于將文本轉換為數字表示)、first_stage(用于將圖片轉換為潛在空間并返回)和unet(用于潛在空間的實際去噪),并使其始終只有一個在VRAM中,將其他部分發送到CPU RAM。降低性能,但只會降低一點-除非啟用實時預覽。 |
--lowvram | 對上面更徹底的優化,將 unet 拆分成多個模塊,VRAM 中只保留一個模塊,破壞性能 |
*do-not-batch-cond-uncond | 防止在采樣過程中對正面和負面提示進行批處理,這基本上可以讓您以 0.5 批量大小運行,從而節省大量內存。降低性能。不是命令行選項,而是使用–medvramor 隱式啟用的優化–lowvram。 |
--always-batch-cond-uncond | 禁用上述優化。只有與–medvram或–lowvram一起使用才有意義 |
--opt-channelslast | 更改 torch 內存類型,以穩定擴散到最后一個通道,效果沒有仔細研究。 |
其它詳見原文檔。
??要安裝自定義腳本,請將它們放入scripts
目錄,然后單擊設置選項卡底部的Reload custom script
按鈕。安裝后,自定義腳本將出現在txt2img和img2img選項卡的左下方下拉菜單中。以下是Web UI用戶創建的一些著名的自定義腳本:
prompt改進腳本:https://github.com/ArrowM/auto1111-improved-prompt-matrix
本腳本支持prompt矩陣格式,用于一次生成多個prompt,每個prompt可生成多張圖片(腳本代碼)
使用<>
創建一個prompt矩陣,矩陣中用|
進行分隔。例如a <corgi|cat> wearing <goggles|a hat>
,表示4個prompt:a corgi wearing goggles
, a corgi wearing a hat
, a cat wearing goggles
, a cat wearing a hat
。
如果設置batch count > 1
,忽略 batch size,每個seed,每個prompt都會進行生成。
txt2img2img
:https://github.com/ThereforeGames/txt2img2img
大大提高任何角色/主題的可編輯性,同時保持其相似性。該腳本的主要動機是提高通過Textual Inversion
.創建的embedding的可編輯性。
txt2mask
:https://github.com/ThereforeGames/txt2mask
可以使用文本指定mask修復部分,而不是用筆刷。
Mask drawing UI
:https://github.com/dfaker/stable-diffusion-webui-cv2-external-masking-script
提供CV2支持的本地彈出窗口,允許在處理前添加掩碼。
Img2img Video
:https://github.com/memes-forever/Stable-diffusion-webui-video
使用img2img,依次生成圖片。
Seed Travel
:https://github.com/yownas/seed_travel
選擇多個種子,并在它們之間生成插值圖像序列,或者是一個視頻,點此查看示例。
Advanced Seed Blending
:https://github.com/amotile/stable-diffusion-backend/tree/master/src/process/implementations/automatic1111_scripts
可以設定seed權重,例如:seed1:2, seed2:1, seed3:1
,也可以使用浮點數:seed1:0.5, seed2:0.25, seed3:0.25
。
Prompt Blending:https://github.com/amotile/stable-diffusion-backend/tree/master/src/process/implementations/automatic1111_scripts
支持多個prompt的加權組合,例如:Crystal containing elemental {fire|ice}
,也支持嵌套:Crystal containing elemental {{fire:5|ice}|earth}
Animator:https://github.com/Animator-Anon/Animator
適用于制作視頻
余下內容有空再寫了。下面是模型部署和應用的一些資源收集貼,也沒有好好整理,感覺太麻煩了。
此筆記本基于stable-diffusion-webui項目,默認使用momoko模型,點此即可打開。
下載項目
#測試GPU!nvidia-smi#下載stable-diffusion-webui%cd /kaggle/working/!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui #在models文件夾下新建新建hypernetworks目錄!mkdir -p /kaggle/working/stable-diffusion-webui/models/hypernetworks %cd /kaggle/working/stable-diffusion-webui/models/Stable-diffusion
切換喜歡的模型,默認是momoko
momoko模型(色彩鮮艷,質量很高)和Anything模型的介紹,可參考視頻《一鍵搭建代碼更新anything及momoko-p模型》
更改模型的默認方法是,將input文件夾中你需要的模型移入working/stable-diffusion-webui/models/Stable-diffusion/
文件夾下
也可以使用ChangeModel函數更換模型,這種方式是更改讀取模型的路徑,所以不需要復制模型文件本體。如果模型生成圖片老是有點灰色,在下面紅色選項框中下拉選擇VAE(前提是將模型對應的VAE文件復制到/kaggle/working/stable-diffusion-webui/models/VAE文件夾下)
??下面是將
/kaggle/working/stable-diffusion-webui/modules/sd_models.py
中,默認的模型讀取地址model_dir = ".*?"用正則表達式替換為 model_dir = “/kaggle/input/{}”,其中 {} 被替換為變量 modelPath 的值。替換后將該內容寫入sd_models.py文件。
#最新切換模型方法import re,os,shutildef ChangeModel(modelPath):with open ('/kaggle/working/stable-diffusion-webui/modules/sd_models.py','r') as f:tt = f.read()tt = re.sub('model_dir = ".*?"','model_dir = "/kaggle/input/{}"'.format(modelPath),tt)with open ('/kaggle/working/stable-diffusion-webui/modules/sd_models.py','w') as f:f.write(tt)#在你想要使用的模型對應的代碼前去掉#,其他模型的對應代碼前加上#chooseModel = ''#二次元#chooseModel='animefulllatestckpt' #1. 7g animefull-final-latest,二次元和寫實風兼有#chooseModel='animefullfinalpruned' #2. 4g animefull-final-pruned,二次元風格#chooseModel='anythingv3' #3. 7g Anything-v3.0 Novel AI最新模型chooseModel='momoko' #4. momoko#chooseModel='mignon' #5. Mignon#chooseModel='moxing' #6. MomoCha&Mecha#chooseModel='nicenice' #7. nice#寫實風#chooseModel='stable-diffusion-1-5' #1. stable-diffusion 1.5#chooseModel='inpainting' #2. stable diffusion 1.5 inpainting,(專用于inpaint的模型)#chooseModel='stable-diffusion-2-768' #3. stable diffusion 2.0#chooseModel='redshiftdiffusionv1' #4. edshift diffusion v1#chooseModel='modf222' #5. f222#chooseModel='insins' #6. ins寫真風#chossModel='realyolyjijiajohn' #7. 融合多個模型的寫實風model_list=['momoko','animefullfinalpruned','redshiftdiffusionv1','mignon','nicenice','insins']if chooseModel in model_list:try:# shutil.copytree(src,dst)。將文件夾 src 中全部文件遞歸復制到 dst ,dst 若不存在時系統自動創建~shutil.copytree('/kaggle/input/tagcomplete3w2cn/wd14-tagger/wd14-tagger','/kaggle/working/stable-diffusion-webui/extensions/wd14-tagger')except:passelse:try:# 遞歸刪除整個文件夾下所有文件,包括此文件夾shutil.rmtree('/kaggle/working/stable-diffusion-webui/extensions/wd14-tagger/')except:passChangeModel(chooseModel)print('模型已切換成:'+chooseModel)
安裝擴張功能和插件、腳本
a. 擴展功能:
!apt install -y aria2 # Aria2是一個命令行下載器,可從百度網盤下載資源# 安裝animefull-final-latest (可選)!aria2c -d /kaggle/working/stable-diffusion-webui https://cloudflare-ipfs.com/ipfs/bafybeiav3j7npiuewbel3mi32l3sidgkw54kuleosbhxmdvddbnvtfi7yu/config.yaml#!aria2c https://pub-2fdef7a2969f43289c42ac5ae3412fd4.r2.dev/animefull-latest.ckpt#!aria2c -d /kaggle/working/stable-diffusion-webui/models/Stable-diffusion https://raw.githubusercontent.com/Stability-AI/stablediffusion/main/configs/stable-diffusion/v2-inference-v.yaml# 安裝embeddings (可選)!aria2c https://cloudflare-ipfs.com/ipfs/bafybeie3hdjchxs5tz4n75bos53nhcklslguxchdurc2ynrzcfv2kwyklu/embeddings.tar !tar xvf embeddings.tar -C /kaggle/working/stable-diffusion-webui/embeddings && rm -rf embeddings.tar# 安裝hypernetwork (可選)!aria2c https://cloudflare-ipfs.com/ipfs/bafybeiduanx2b3mcvxlwr66igcwnpfmk3nc3qgxlpwh6oq6m6pxii3f77e/_modules.tar !tar xvf _modules.tar -C /kaggle/working/stable-diffusion-webui/models/hypernetworks && rm -rf _modules.tar
b. 安裝插件
參考《Stable-diffusion-webui 插件拓展及依賴匯總》、插件翻譯列表((含主要插件)
詳細文檔和項目地址見《a1111-sd-webui-tagcomplete》,也可參考帖子《Prompt自動補全腳本》
tagcomplete:本腳本為 stable-diffusion-webui的自定義腳本,能在輸入Tag時提供booru風格(如Danbooru)的TAG自動補全。因為有一些模型是基于這種TAG風格訓練的(例如Waifu Diffusion),因此使用這些Tag能獲得較為精確的效果。
DeepDanbooru:DeepDanbooru是一個動漫風格的女孩圖像標簽評估系統,在webui的img2img選項頁,第一次點擊deepdanbooru時程序會自動下載pt檢查點文件并調用。
images-browser:這是一個圖像瀏覽器,用于瀏覽過去生成的圖片,查看其生成的信息,將提示發送到txt2img或img2img,將圖像收集到您的“收藏夾”文件夾,刪除您不再需要的圖像,您還可以在計算機中的任何文件夾中瀏覽圖像
webUI簡體中文語言包,簡體中文翻譯擴展,適用于 stable diffusion webui。
美學權重功能(以插件形式提供),借助該功能,可以在保持作品原始的總體構圖上提高美觀度。
結合hypernetwork使用效果更佳
支持txt2img和img2img
將上述插件下載后復制到extensions
文件夾,即可完成安裝。
%cd /kaggle/working/stable-diffusion-webui/extensions# 下載安裝webUI簡體中文語言包,tagcomplete補全Tag插件、images-browser!git clone https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN !git clone https://github.com/DominikDoom/a1111-sd-webui-tagcomplete !git clone https://github.com/yfszzx/stable-diffusion-webui-images-browser
c. 安裝腳本
webui也提供眾多腳本,詳細介紹參考官方文檔Custom Scripts。下面選了一個提示詞矩陣腳本。
本腳本支持prompt矩陣格式,用于一次生成多個prompt,每個prompt可生成多張圖片(腳本代碼)
使用<>
創建一個prompt矩陣,矩陣中用|
進行分隔。例如a <corgi|cat> wearing <goggles|a hat>
,表示4個prompt:a corgi wearing goggles
, a corgi wearing a hat
, a cat wearing goggles
, a cat wearing a hat
。
如果設置batch count > 1
,忽略 batch size,每個seed,每個prompt都會進行生成。
注意:使用提示詞矩陣腳本,但是其實沒有設置提示詞矩陣,圖片生成時會出現報錯
%cd /kaggle/working/stable-diffusion-webui/scripts/!git clone https://github.com/ArrowM/auto1111-improved-prompt-matrix
啟動模型,開始生成圖片
參考《使用stable-diffusion-webui搭建AI作畫平臺使用stable-diffusion-webui搭建AI作畫平臺》
--share
參數 會得到一個以.app.gradio
結尾的鏈接,這是在協作中使用該程序的預期方式。(不加 --share
沒法遠程使用)
安裝并啟動stable-diffusion-webui,成功后打開public URL就可以生成圖片了
報錯No module 'xformers'. Proceeding without it是因為沒裝xformers,運行以下代碼安裝
%cd /kaggle/working/stable-diffusion-webui# 加載模型。sed -i表示將字符串直接寫入sd_models.py文件!sed -i 's/map_location="cpu"/map_location="cuda"/g' /kaggle/working/stable-diffusion-webui/modules/sd_models.pyimport gc gc.collect()# use normal stable-diffusion!COMMANDLINE_ARGS="--share --gradio-debug --config config.yaml --disable-safe-unpickle " REQS_FILE="requirements.txt" python launch.py
將生成的圖片進行打包,方便下載。
!zip -q -r output.zip /kaggle/working/stable-diffusion-webui/outputs !mv /kaggle/working/stable-diffusion-webui/output.zip /kaggle/working/output.zip
webui界面介紹
通過前面的安裝配置,你就可以通過你設置的端口進行訪問。訪問內容后分為幾個大的模塊;
txt2img — 標準的文字生成圖像;
img2img — 根據圖像成文范本、結合文字生成圖像;
Extras — 優化(清晰、擴展)圖像;
PNG Info — 圖像基本信息
Checkpoint Merger — 模型合并
Textual inversion — 訓練模型對于某種圖像風格
Settings — 默認參數修改
此部分請參考知乎貼《模型應用—使用Stable Diffusion UI手冊》使用部分。
詳見《部署NovelAi/Stable Diffusion1.4 /1.5/2.0 保姆級教程》
參考《NovelAI資源及使用技巧收集匯總》、《Stable-diffusion 標簽Tag (臉部方法構造)》、元素同典、元素法典、《魔咒百科詞典》、《Prompt Magic Tutorial》
通用Tag起手式:
正向:
masterpiece, best quality, 更多畫質詞,畫面描述
反向:
nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers,extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry
越靠前的Tag權重越大;比如景色Tag在前,人物就會小,相反的人物會變大或半身。
生成圖片的大小會影響Prompt的效果,圖片越大需要的Prompt越多,不然Prompt會相互污染。
在Stable Diffusion 中使用()英文括號可增加括號中Tag在畫面中的權重 x1.1,[]可減小Tag權重x0.91。在NovelAi官網中,使用{}增加權重x1.05。
Prompt支持使用emoji,且表現力較好,可通過添加emoji達到表現效果。如??形容表情,??可修手。
“+” , “ AND” , “|” 用法:
“+”和“ AND ”都是用于連接短Tag,但AND兩端要加空格。"+“約等于” and "
“|” 為循環繪制符號(融合符號)
(Prompt A: w1)|(Prompt B: w2)
以上表達適用于WebUI,w1、w2為權重。AI會對A、 B兩Prompt進行循環繪制。可往后無限加入Prompt。
Prompt格式優化:簡易換行三段式表達:
第一段: 畫質tag,畫風tag
第二段:畫面主體,主體強調,主體細節概括。(主體可以是人、事、物、景)畫面核心內容。第二段一般提供人數,人物主要特征,主要動作(一般置于人物之前),物體主要特征,主景或景色框架等
第三段:畫面場景細節,或人物細節,embedding tag。畫面細節內容
元素同典調整版語法:
質量詞→前置畫風→前置鏡頭效果→前置光照效果→(帶描述的人或物AND人或物的次要描述AND鏡頭效果和光照)*系數→全局光照效果→全局鏡頭效果→畫風濾鏡(embedding)
實例展示:
Prompt:
(((masterpiece))), best quality, ultra-detailed, extremely detailed CG unity 8k wallpaper,best illustration, an extremely delicate and beautiful,floating,high resolution,dynamic angle,dynamic pose,(1girl),blue eyes,(multicolored_hair+silver hair:1.3+red hair:1.2+purple hair+yellow hair:1.3+green hair:1.3), white wuxia clothes,neck ribbon, beautiful face,too many drops of water,cloud,twilight, wide shot,watercolor,
Negative prompt:
lowres, bad anatomy, bad hands, text,error, missing fIngers,extra digt ,fewer digits,cropped, worst quality ,low quality,normal quality, jpeg artifacts,signature,watermark, username, blurry, bad feet,fused body,
Steps: 34, Sampler: DPM++ 2S a, CFG scale: 10.5, Seed: 1351767725, Size: 960x576, Model hash: 925997e9, Eta: 0.68, Clip skip: 2, ENSD: 31337
GFPGAN visibility:1.Upscale: 3, visibility: 1.0, model:ESRGAN_4x
更多內容請看原貼。
也可簡單一點,使用chatGPT來實現stable-diffusion描述詞生成、讓chatGPT幫你AI繪畫
??使用注意:與ckpt文件同名的vae.pt文件用于穩固該模型的表現,直接放在相同文件夾即可。訓練時將該文件改名或移走。并不是所有模型都需要使用vae文件
公開資源:
https://rentry.org/sdmodels(目前覺得比較全)
https://cyberes.github.io/stable-diffusion-models/(SD模型)
https://publicprompts.art/(App Icon Generator,比較有趣想資源)
https://huggingface.co/ (在網站中檢索) 作者:小白隨心所欲
參考《NovelAI資源及使用技巧收集匯總》、《NovelAI hypernetwork 自訓練教程》
Aesthetic-gradients(美術風格embedding)使用
素材保證高質量,尺寸不限,隨建隨用。優化畫風,效果同emb和hypernetwork。batch按圖片數量填就行。
建議圖片集盡量挑選畫風一致的圖片,就算是同一畫師,不同的畫也有區別。
X/Y plot(參數對比)
通過設置X軸和Y軸的參數,可以產出參數變化的對比圖。