文字轉圖片#
請先通過前文?調參基礎?了解 SD-WebUI 網頁應用提供的基本參數(shù)。
如何書寫提示詞#
這是一個通用的指南,內容是基本通用的,可能有例外情況,請讀對應的章節(jié)了解不同應用的特性。
寫什么?#
TIP
提示詞是提示而不是判定依據(jù),比如你輸入質量判定詞匯的時候,其實是在限制數(shù)據(jù)的范圍,而不是 “要求” AI 出一張很好的圖片。
單詞標簽#
對于在標簽單詞上特化訓練的模型,建議使用逗號隔開的單詞作為提示詞。
普通常見的單詞,例如是可以在數(shù)據(jù)集來源站點找到的著名標簽(比如 Danbooru)。單詞的風格要和圖像的整體風格搭配,否則會出現(xiàn)混雜的風格或噪點。
避免出現(xiàn)拼寫錯誤。NLP 模型可能將拼寫錯誤的單詞拆分為字母處理。
自然語言#
對于在自然語言上特化訓練的模型,建議使用描述物體的句子作為提示詞。
取決于訓練時使用的數(shù)據(jù)集,可以使用英文,日文,特殊符號或一些中文。大多數(shù)情況下英文較為有效。
避免?with
?之類的連接詞或復雜的語法,大多數(shù)情況下 NLP 模型只會進行最簡單的處理。
避免使用重音符(如 é 和 è)和德語 umlauts(如 ? 和 ?),它們可能無法被映射到正確的語義中。
不建議隨意套用現(xiàn)成模板,尤其是無法經過人類理解的模板。
Emoji#
Emoji (??,??,??,??,??,??,????,??,?????) 表情符號也是可以使用并且?非常準確?的。
Emoji 因為只有一個字符,所以在語義準確度上表現(xiàn)良好。
Emoji 在構圖上有影響,比如???????
。
表情符號參考
顏文字#
對于使用 Danbooru 數(shù)據(jù)的模型來說,可以使用顏文字在一定程度上控制出圖的表情。
例如:
:-)
?微笑?:-(
?不悅?;-)
?使眼色?:-D
?開心?:-P
?吐舌頭?:-C
?很悲傷?:-O
?驚訝 張大口?:-/
?懷疑
僅支持西方顏文字,詳細內容請見?Danbooru 顏文字部分?或?維基百科
空格#
逗號前后的少量空格并不影響實際效果。
開頭和結尾的額外空格會被直接丟棄。詞與詞之間的額外空格也會被丟棄。
標點符號#
用逗號、句號、甚至是空字符(\0
)來分隔關鍵詞,可以提高圖像質量。目前還不清楚哪種類型的標點符號或哪種組合效果最好。當有疑問時,只要以一種使提示更容易被閱讀的方式來做。
對于部分模型,建議將下劃線(_
)轉換為空格。
藝術風格詞#
可以通過指定風格關鍵詞來創(chuàng)作帶有特效或指定畫風的圖片。
參考資料:
NovelAI 使用教程和魔咒課堂人偶教室的測試記錄風格化: 32 種
或通過使用?微調模型?來創(chuàng)作圖片。
運動和姿勢#
如果沒有很大要求的話,選擇只與少數(shù)姿勢相關的提示。
這里的姿勢是指某一事物的物理配置:圖像主體相對于攝像機的位置和旋轉,人類/機器人關節(jié)的角度,果凍塊被壓縮的方式,等等。你試圖指定的事物中的差異越小,模型就越容易學習。
因為運動就其定義而言涉及到主體姿勢的巨大變化,與運動相關的提示經常導致身體的扭曲,如重復的四肢。另外,因為人類的四肢,特別是人類的手和腳有很多關節(jié),他們可以采取許多不同的、復雜的姿勢。這使得他們的可視化特別難學,對于人類和神經網絡都是如此。
簡而言之:人類站著/坐著的好形象很容易,人類跳著/跑著的好形象很難。
如何寫?#
模板#
先想一下要畫什么,例如 主題,外表,情緒,衣服,姿勢,背景 一類,然后參考數(shù)據(jù)集標簽表(如果有的話,比如 Danbooru, Pixiv 等)。
然后將想要的相似的提示詞組合在一起,請使用英文半角?,?
做分隔符,并將這些按從最重要到最不重要的順序排列。
一種模板示例如下:
(quality), (subject)(style), (action/scene), (artist), (filters)
-
(quality)
?代表畫面的品質,比如?low res
?結合?sticker
?使用來 “利用” 更多數(shù)據(jù)集,?1girl
?結合?high quality
?使用來獲得高質量圖像。 -
(subject)
?代表畫面的主題,錨定畫面內容,這是任何提示的基本組成部分。 -
(style)
?是畫面風格,可選。 -
(action/scene)
?代表動作/場景,描述了主體在哪里做了什么。 -
(artist)
?代表藝術家名字或者出品公司名字。 -
(filters)
?代表一些細節(jié),補充。可以使用 藝術家,工作室,攝影術語,角色名字,風格,特效等等。
大小寫#
CLIP 的標記器在標記之前將所有單詞轉為小寫。其他模型,如 BERT 和 T5,將大寫的單詞與非大寫的單詞區(qū)別對待。
但避免涉及特殊語法,以防被解釋為其他語義,例如?AND
。
詞匯順序#
demystifying_prompting_what_you_need_to_know/
似乎 VAE 使用了一種稱為貝葉斯定理的統(tǒng)計方法。在計算標記的去向時,前幾個單詞似乎錨定了其余單詞標記在潛在空間中的分布。
早期的標記具有更一致的位置,因此神經網絡更容易預測它們的相關性。在貝葉斯推理中,矩陣中的第一個標記或證據(jù)很重要,因為它設置了初始概率條件。但是后面的元素只是修改了概率條件。因此,至少在理論上,最后的令牌不應該比前面的令牌具有更大的影響。
但是解析器理解事物的方式是不透明的,因此沒有辦法確切地知道詞法順序是否具有“錨”效應。
可以?使用 X/Y 圖自動生成各種順序?進行嘗試。
提示詞長度#
避免過長的提示詞。
提示詞放入的順序就是優(yōu)先級。由于提示詞的權重值從前向后遞減,放置在特別靠后的提示詞已經對圖片的實際生成影響甚微。
不堆疊提示詞是一個好習慣,但是如果你確實有很多內容要寫,可以適當提高生成步數(shù),以便在生成過程中更好地利用提示詞。
SD-WebUI 突破最多 75 個詞組限制的方式是將每 20 + 55 個詞分為一組。選項?Increase coherency by padding from the last comma within n tokens when using more than 75 tokens
?讓程序試圖通過查找最后 N 個標記中是否有最后一個逗號來緩解這種情況,如果有,則將所有經過該逗號的內容一起移動到下一個集合中。該策略可適當緩解提示詞過多無法處理的問題,但可能破壞提示詞之間的權重關系。
除了 WebUI 對此情況進行了特殊處理外,由于 GPT-3 模型限制,提示詞處理空間并不是無限的,大多在在 75-80 之間,75 字符后的內容會被截斷。
特異性#
問題體現(xiàn)在語義偏移上。對于神經網絡的訓練來說,特征的質量很重要:輸入和輸出之間的聯(lián)系越強,神經網絡就越容易學習這種聯(lián)系。
換句話說,如果一個關鍵詞有非常具體的含義,那么學習它與圖像之間的聯(lián)系要比一個關鍵詞有非常廣泛的含義容易得多。
這樣一來,即使是像 "Zettai Ryouiki" 這樣很少使用的關鍵詞也能產生非常好的結果,因為它只在非常具體的情況下使用。另一方面,"動漫" 即使是一個比較常見的詞,也不會產生很好的結果,這可能是因為它被用于許多不同的情況,即使是沒有字面意思的動漫。如果你想控制你的圖片的內容,選擇具體的關鍵詞尤其重要。另外:你的措辭越不抽象越好。如果可能的話,避免留下解釋空間的措辭,或需要 "理解" 不屬于圖像的東西。甚至像 "大" 或 "小" 這樣的概念也是有問題的,因為它們與物體離相機近或遠是無法區(qū)分的。理想情況下,使用有很大可能逐字出現(xiàn)在你想要的圖像標題上的措辭。
語義失衡#
每一個提示詞就像染料一樣,它們的 “親和性“ 不同,如果更常見的提示詞,比如?loli
?(和其他提示詞并列放置)的影響就大于其他提示詞。
比如,如果你想生成動漫圖片,使用了 星空?startrail
?標簽,相比你期望出現(xiàn)的動漫星空,會有更多來自真實照片的星空元素。
許多詞匯在基準上的權重就不一樣,所以要根據(jù)效果進行合理調節(jié)。
否定提示詞#
SD-WebUI 網頁應用會在生成時?避免生成否定提示詞提及的內容。
否定提示是一種使用 Stable-Diffusion 的方式,允許用戶指定他不想看到的內容,而不對模型本身做額外的要求。
通過指定?unconditional_conditioning
?參數(shù),在生成中采樣器會查看去噪后符合提示的圖像(城堡)和去噪后看起來符合負面提示的圖像(顆粒狀、霧狀)之間的差異,并嘗試將最終結果遠離否定提示詞。
python
# 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, [...])
比如使用以下提示詞避免生成水印和文字內容
text
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
還如這個例子
text
ugly, fat, obese, chubby, (((deformed))), [blurry], bad anatomy,
disfigured, poorly drawn face, mutation, mutated, (extra_limb),
(ugly), (poorly drawn hands fingers), messy drawing, morbid,
mutilated, tranny, trans, trannsexual, [out of frame], (bad proportions),
(poorly drawn body), (poorly drawn legs), worst quality, low quality,
normal quality, text, censored, gown, latex, pencil
更多資料詳見?官方 Wiki
提示詞語法#
以下內容主要適用于 SD-WebUI。NovelAI 用戶可參照?官網文檔。
權重系數(shù)#
權重系數(shù)可改變提示詞特定部分的比重。
更多資料詳見?Wiki:Attention Emphasis
對于 SD-WebUI,具體規(guī)則如下:
-
(word)
?- 將權重提高 1.1 倍 -
((word))
?- 將權重提高 1.21 倍(= 1.1 * 1.1),乘法的關系。 -
[word]
?- 將權重降低 90.91% -
(word:1.5)
?- 將權重提高 1.5 倍 -
(word:0.25)
?- 將權重減少為原先的 25% -
\(word\)
?- 在提示詞中使用字面意義上的 () 字符
使用數(shù)字指定權重時,必須使用?()
?括號。如果未指定數(shù)字權重,則假定為?1.1
。指定單個權重僅適用于 SD-WebUI。
INFO
權重增加通常會占一個提示詞位,應當避免加特別多括號。
> ( n ) = ( n : 1.1 )
> (( n )) = ( n : 1.21 )
> ((( n ))) = ( n : 1.331 )
> (((( n )))) = ( n : 1.4641 )
> ((((( n )))) = ( n : 1.61051 )
> (((((( n )))))) = ( n : 1.771561 )
關于 NovelAI
因為 NAI 使用的是 WebUI 2022 年 9 月 29 日之前的實現(xiàn),所以權重增強語法是舊的?{}
?,新的 WebUI 更改為?()
。
換算關系
NAI 的?[word]
?= WebUI 的?(word:0.952)
?(0.952 = 1/1.05)
NAI 的?{word}
?= WebUI 的?(word:1.05)
NAI 花括號權重為 1.05/個,WebUI 圓括號權重為 1.1/個。
How It Works
每個單詞都將被解析為 768 維度空間內的一個向量,該向量“指向”概念的方向。
如果你縮放這個向量,這個概念會變得更強或更弱。
詳見?Here
無論使用何種具體的腳本,重復某個關鍵詞似乎都會增加其效果。
值得注意的是,你的提示中存在越多的提示詞,任何單一提示詞的影響就越小。你還會注意到,由于這個原因,在增加新的提示詞時,風格會逐漸消失。強烈建議隨著提示符長度的增加改變風格詞的強度,以便保持一致的風格。
標簽替換#
詳見?Prompt Editing
允許您開始先使用一個提示詞,但在生成過程中間切換到其他提示詞?;菊Z法是:
-
[to:when]
?在指定數(shù)量的 step 后添加 to 到提示 -
[from::when]
?在指定數(shù)量的 step 后從提示中刪除 from -
[from:to:when]
?在指定數(shù)量的 step 后將 from 替換為 to
其中?from
?與?to
?是替換前后的提示詞,when
?表示替換時機。
如果?when
?是介于 0 和 1 之間的數(shù)字,則它指進行切換的步數(shù)的百分比。如果它是一個大于零的整數(shù),那么這代表進行切換的字面步數(shù)。
替換標簽可無限嵌套。
示例:對于?a [fantasy:cyberpunk:16] landscape
- 開始時,模型將繪制?
a fantasy landscape
。 - 在第 16 步之后,它將采用?
a cyberpunk landscape
?繼續(xù)生成。
標簽輪轉#
詳見?Alternating Words
允許您在生成過程中每步輪換使用多個提示詞?;菊Z法是:
[a|b|c]
生成的第一步將使用?a
,第二步將使用?b
,第三步將使用?c
,第四步將使用?a
,依此類推。
多組提示詞生成#
詳見?Composable-Diffusion
WARNING
AND
?的語法優(yōu)先級最高,因此試圖使用?AND
?分離單個提示詞的操作是錯誤的。注意甄別部分公開教程中的錯誤示例。
允許在生成時同時使用多組提示詞,并將結果直接相加?;菊Z法是:
a, b, c AND d, e, f
這將使用兩組提示詞?a, b, c
?和?d, e, f
?生成,并將它們的結果相加。
Prompt matrix 參數(shù)矩陣#
使用?|
?分隔多個 Tag,程序將為它們的每個組合生成一個圖像。 例如,如果使用?a busy city street in a modern city|illustration|cinematic lighting
?,則可能有四種組合(始終保留提示的第一部分):文章來源:http://www.zghlxwxcb.cn/news/detail-512920.html
- a busy city street in a modern city
- a busy city street in a modern city, illustration
- a busy city street in a modern city, cinematic lighting
- a busy city street in a modern city, illustration, cinematic lighting
轉載自AiDraw | AiDraw文章來源地址http://www.zghlxwxcb.cn/news/detail-512920.html
到了這里,關于stable diffusion文字轉圖片(教程)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!