僅以藝術創作者的角度,詮釋我對Stable Diffusion的理解。
使用AUTOMATIC 1111 WebUI介面。
Textual Inversion embedding
玩過Stable Diffusion(下以
SD略稱之),並且有前往
CIVITAI等網站下載其他人訓練的AI模型的玩家,應該會注意到在範例圖中提供的設定,其-Prompts(負提示)內常常出現「
Bad-Hands」、「
EasyNegative」、「
Bad-Artist」等關鍵字。
最初我以為SD這麼厲害,只要在-Prompts輸入這些字詞就知道不可以畫出「很醜的手」、不要模仿「不好的繪師」--但EasyNegative呢?而且就算輸入了,還是會出現很糟糕的手啊?
嗯?你不知道Pekora長什麼樣子?大概像這樣:
這是AUTOMATIC1111提供的TIE算出來的,Pekora的真愛粉請別打我。
至於我自己的理解如下:
TIE是一種定義提示字詞的「微」模型。(「詞嵌入」維基百科)
也就是說,不同於Dreambooth、LoRA、Hypernetwork等會實際更動算圖流程的模型,TIE是告訴SD「它代表的涵義是什麼」。
Dreambooth:教導既存大模型新的概念、改變了既存大模型 = 創造了新的大模型。可以想像為老師教學生學會新的畫風、新的內容,但這個過程有可能讓學生「忘記」或「重新解讀」先前學會的其他概念。
LoRA/Hypernetwork:在既存大模型的繪圖過程中插入額外步驟,引導大模型算出想要的結果。可以想像為老師在學生繪圖的過程中分階段介入修圖,藉此畫出想要的畫風和內容,而不會永久性地改變學生的已知概念(不會改變大模型)。只要老師不在(不使用LoRA/Hypernetwork模型),學生就不知道該怎麼畫。
TIE:定義提示字詞對SD所代表的涵義。可以想像為老師催眠學生:「XXX的意思就是這種畫風、這種形狀、這種顏色」,而當催眠解除(移除TIE時),學生就會忘記該字詞的涵義,同樣不會永久性地改變學生的已知概念。
Dreambook、LoRA/Hypernetwork的基本原理應該不難懂,但TIE的原理讀者可能會覺得「這怎麼可行」對吧?其實這和SD算圖的原理有關:將字詞代表的涵義擴散(Diffuse)到畫素上,所以TIE的原理就是告訴模型「你要用特定的方法擴散才能滿足這個字詞的定義」。
例如:柯基犬TIE:「你這樣擴散就能畫出柯基犬。」--但AI並不知道柯基犬長什麼樣。
但也是因為TIE的原理太「籠統」,所以訓練出的結果往往沒有其他方法要來得「精準」。
TIE為何會用在-Prompts?
因為TIE是「微」模型,大小以KB為單位卻能顯著影響繪圖成果,而且-Prompts原本就常包含定義很籠統的字詞,所以有些高手就花費時間訓練出「大多情況不想要在成果中出現」的TIE提供大家使用。那麼,接下來就準備上圖了:
SD設定:
chilloutmix_Ni / salutemix_v1
512x512
CFG Scale 10
Sampling steps 30
Seeds 3120725476 / 2308425211
Batch size 4
*Sampling method我忘了記錄,但應是Heun--至少文末的大圖是。
+Prompts
masterpiece, 1girl, 30 years old, noble, holding a scepter, interior, european castle, Middle Ages, portrait,
-Prompts
(low quality, worst quality:1.4), (monochrome:1.1), (greyscale), watermark, text, blurry, jpeg artifacts, cropped, normal quality, signature, username, artist name, cartoon, canvas frame, lowres, (disfigured), (bad art), (deformed), (extra limbs), (b&w), weird colors, (duplicate), (morbid), (mutilated), mutated hands, (poorly drawn hands), (poorly drawn face), (mutation), (ugly), (bad proportions), cloned face, out of frame, gross proportions, (malformed limbs), (missing arms), (missing legs), (extra arms), (extra legs), fused fingers, (long neck), lowres, (grayscale), (skin spots), acnes, skin blemishes, (age spot),
+/- Prompts會各別額外加入下列的TIE,請參考各圖片說明:
EasyNegative(*下載的TIE .py或.safetensor檔,請放到
webui的
embeddings資料夾內)
1. chilloutmix_Ni大模組系列(3120725476):
-Prompts bad_prompt_version2 *這到底是發生了啥事?
看到這的讀者,應該對bad_promts_version2很有意見,不過請先容我先接著貼--
2. salutemix_v1大模型(3120725476)的圖:
-Prompts bad_prompt_version2
現在是不是很霧煞煞,理應減少不良成果的bad_prompt_version2,以及把Pekora TIE放在-Prompts時--
怎麼產出的圖比不放它們要來得差?
我也很好奇,於是決定把上述四種用在-Prompts的TIE全都放在+Prompts跑了一遍(salutemix_v1、2308425211),問題根源就很明顯了:
bad-hand-5:
除了理應包含的「奇怪手部」,也包含了「女孩臉型/體型」、「鳳眼/東亞臉型」、「東亞傳統服裝」、「柔和無描線的畫風」等。
bad-artist:
除了「畫布畫框」、「難看的透明度點」、「過度曝光」、「文字」等確實常常不想要的內容外,也包含了類似「女孩臉型/體型」、「鳳眼/東亞臉型」、「東亞傳統服裝」、「柔和無描線的畫風」等。
*bad-hand-5、bad-artist包含的內容有高度相似之處,但查了一下並非同位作者。
+Prompts 見鬼----不是,是bad_prompt_version2
bad_prompt_version2:
包含了確實是大多數人不想要的內容,但「魔鬼藏在細節裡」,對照-Prompts的測試結果可推知,「瓜子臉/比較尖瘦的臉型」、「尖挺的鼻子」、「豐潤的嘴唇」、「有立體感的光影」等,竟也都算在了裡面!
--所以-Prompts的測試才會出現預期外的扁平臉!
EasyNegative:
包含了「單色背景」、「漸層背景」、「單調背景」、「書頁曲面般的背景」、「過黑」、「過暗」、「單調陰影」等,但會發現有「大小眼」的問題(在上圖右上人物,以及chilloutmix_Ni -Prompts EasyNegative左下人物較明顯,並且用在-Prompts時,較大的眼睛會從左眼變右眼)。
最後用Pekora壓壓驚:
但可以發現,Pekora的TIE把「強調上睫毛」、「黑色緊身衣/胸罩」和「胸形突出」等也算了進去,所以放在-Prompts時會有「上睫毛不明顯」、「變成超級平胸」且「排除黑色底的衣服」等現象。而放在+Prompts時,更能明顯注意到「強烈更改了畫風」。
總結:TIE會反應出作者和圖源中有意無意的偏見
其實不只TIE,我想所有的AI模型都有上述問題,不過因為SD是繪圖AI,而繪圖本身就是反映作者偏好的過程,所以單就這點而言其實問題不大。然而,本文所測試用於-Prompts的TIE,原本的用意是排除一些常見的不想要的錯誤,卻每一種都會額外影響到其他的層面,而這些層面卻可能是使用者不想排除的部分。
也因此,做完這篇文章的測試並和「無TIE」版本做了比較後,我決定只留下bad-hands-5的TIE,其他則寧可使用更多的字詞來包含我不想要的內容,如下:
bad-hands-5, (low quality, worst quality:1.4), (monochrome:1.1), (greyscale), watermark, text, blurry, jpeg artifacts, cropped, normal quality, signature, username, artist name, cartoon, canvas frame, lowres, (disfigured), (bad art), (deformed), (extra limbs), (b&w), weird colors, (duplicate), (morbid), (mutilated), mutated hands, (poorly drawn hands), (poorly drawn face), (mutation), (ugly), (bad proportions), cloned face, out of frame, gross proportions, (malformed limbs), (missing arms), (missing legs), (extra arms), (extra legs), fused fingers, (long neck), lowres, (grayscale), (skin spots), acnes, skin blemishes, (age spot),
最後,就以+Prompts加入Pekora TIE,-Prompts中使用bad-hand-5 TIE的圖片來收尾吧!
chilloutmix_Ni 3563761306
下次想聊聊紫色斑塊與VAEs。