教學ComfyUI生圖的提示詞寫法。
我們來看提示詞要怎麼寫,以文生圖的提示詞為主。
不論用哪個模式生圖,生圖模型都是吃提示詞(prompt)來決定生成內容的。prompt,通俗的講法叫關鍵字、咒語、指令。
通常,你會在ComfyUI工作流看到CLIP Text Encode (Prompt)
的節點,接到KSampler
節點的positive槽位,那個就是填寫提示詞的地方,告訴AI要生成哪些東西。
如果有第二個CLIP Text Encode (Prompt)
節點,接到KSampler
節點的negative槽位,那就是負向提示詞 (Negative prompt),告訴AI不要生成哪些東西。
目前生圖模型幾乎都是用英文資料訓練,所以提示詞要用英文輸入。 若你真的英文不好,可以安裝翻譯用的自訂節點,降低語言隔閡。
要注意的是,AI生圖目前還沒有涵蓋全宇宙所有圖片的模型,所以除了提示詞外,使用的生圖模型亦會大大的影響生成結果。譬如,用寫實風格的Stable Diffusion
模型畫動漫人物,效果絕對會比使用PonyDiffusion
差的許多,因此在學會下提示詞以前,要先按照用途挑選適合的模型。
本文的範例,都是使用ComfyUI的「文生圖」工作流作為示範。請選擇你看得習慣的生圖模型就好。
1. 提示詞 Prompt#
- 下提示詞時,利用人事時地物的概念,寫個英文句子描述圖內場景,盡量將想看到的提示詞排在前面。例如在提示詞的欄位填入「一個亞洲女孩在沙灘上」,負向提示詞留空
an asian girl on the beach
- 不過英文不好的人其實不用寫整個句子,用單字加逗號將想看的特徵點出來通常就有不錯效果。且實務上我們會希望測試更多參數,例如加入畫風、要模仿的藝術家風格、身體特徵等,因此用逗號更方便調整。將圖片特徵拆成單字就會變成下面這樣:
; (繪圖時請刪除此行) 參考翻譯:一個女孩,亞洲人,沙灘,海洋
1girl, asian, beach, ocean
再算一次,但是結果變了?沒錯,即使提示詞相近,AI繪圖每次生圖結果都是隨機的。要維持上一次的結果並微調,你得保留每次算圖的種子碼(seed)。
- 接著可以多指定一點細節:這個女孩眼睛是什麼顏色的?髮型是什麼?有戴帽子嗎?是站著還是坐著呢?身上穿的是什麼衣服?天空是什麼顏色的?
; 參考翻譯:一個女孩,亞洲人,藍眼睛,短髮,草帽,站著,藍色比基尼,沙灘,海洋,橘色天空
1girl, asian, blue eyes, short hair, straw hat, standing, blue bikini, beach, ocean, orange sky
呼,好像一口氣加太多細節了呢,詳述細節的好處是避免AI亂生成,但也限制了其作畫創意。所以下面的例子會縮短,有時候讓AI隨機抽獎也不壞呀~
- 要改變風格,可以在提示詞加入「風格」的提示詞。這方面的提示詞有:相片(photoshop)、3D建模(3d model)、裝飾藝術(art deco)、石像(stone sculpture)等風格。
; 參考翻譯:一個女孩的石像,亞洲人,藍眼睛,沙灘,海洋
a stone sculpture of 1girl, asian, blue eyes, beach, ocean
但我使用的模型已是專攻動漫風格的模型,所以不用特別指定要畫出哪種風格,它一律都會是動漫風的圖片,很難畫出真人照片,所以說挑對模型很重要啊。
- 風格是很難界定的東西呢,一般來說我們會圖片像哪個藝術家的風格對吧?那麼不如直接「召喚」他們吧!提示詞可以包含某位畫家的名字,AI會嘗試模仿其風格。例如加上「慕夏的作品」,並加入「大師級作品」的風格提示詞:
; 參考翻譯:慕夏的作品,大師級作品,一個女孩,亞洲人,藍眼睛,沙灘,海洋
artwork by Alfons Maria Mucha, masterpiece, 1girl, asian, blue eyes, beach, ocean
生圖的結果就會變得像是慕夏的作品。順帶一提masterpiece
這個提示詞還蠻萬用的,可以讓作品維持一定水準。
- 當然還可以畫特定動漫人物的「二創」,只要將名字和作品名稱打上去就可以了。有名的動漫角色只要出現名字,不用特別指定身體特徵就會生成原作風格了,例如指定《新世紀福音戰士》的惣流·明日香·蘭格雷:
; 參考翻譯:新世紀福音戰士的明日香,大師級作品,一個女孩,沙灘,海洋
asuka_langley_souryuu from neon_genesis_evangelion, masterpiece, 1girl, beach, ocean
再次提醒,在下提示詞的時候,生成圖片使用的模型也需納入考量。譬如想要生成特定動漫人物,去Danbooru找到了英文姓名,加上提示詞,但你卻用畫真人的Stable Diffusion去算,則AI可能根本就不會認得你說的角色是誰,反之亦然。Danbooru的標籤風格跟一般圖片的描述還是有差距的。
除非日後有蒐羅全部網路圖片的超大模型出現,否則下提示詞須配合模型種類來決定。
如果AI怎樣都生成不出你要的風格或人物,請考慮換個模型,或是自行訓練模型。
2. 負向提示詞 Negative Prompts#
上面的例子,我們只有寫提示詞,但下面的負向提示詞的欄位都是空白。但生圖時常常還需要加入一些負向提示詞,避免掉不好的結果。AI繪圖有時不會一次就算出好結果,所以還需要加上負向提示詞來控制,尤其是大批算圖的時候更為重要。
註:有些模型不需要負向提示詞也能生圖。
- 負向提示詞會加入一些常見的「不好」的圖片特徵,例如低畫質、最糟品質、畫家簽名、模糊、浮水印
deformed, lowres, bad anatomy, text, error, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name
- 不想看到的東西也可以加進去。例如不想看到裸露、兵器、血、獵奇的元素出現,就加入
nsfw
、weapon
、blood
、guro
至負向提示詞
nsfw, weapon, blood, guro, lowres, bad anatomy, text, error, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name
提示詞並非越多越好,正向提示詞以不超過150個詞元(token)為原則;不過負向提示詞可以盡量把不想看到的都塞進去。
3. ComfyUI提示詞的特殊語法#
此節列出的語法為ComfyUI獨有。
如果你需要新增更多提示詞語法,通常能夠用自訂節點的方式達成。
關注度括號#
控制關注度的符號,增加算圖時對該提示詞的關注度。簡單來說,括號就是你想強調的重點元素,括號越多,生成的結果越可能符合括號裡的提示詞。
ComfyUI使用小括號控制關注度: ( )
小括號層次越多權重越高。不加小括號為1倍,每加一層小括號乘以1.1倍。例如,強調「藍眼睛」,生成的結果就更高機率是藍眼睛人物
asian, woman, ((blue eyes)), beach, ocean
亦可以直接寫明要增強幾倍關注度,但其實一般情況下不用設太強,用一二層的小括號就夠了。
asian, woman, (blue eyes:2.5), beach, ocean
ComfyUI還支援[ ]
中括號,越多權重越弱,一個中括號乘以1.1倍。通常用在負向提示詞欄位。
隨機切換提示詞#
用大括號{ }
將提示詞包起來,再使用|
隔開,代表在每個步數隨機選取提示詞。例如我要在生圖時於「藍眼睛」或「紅眼睛」或「黑眼睛」之間切換:
asian, woman, {blue eyes|red eyes|black eyes}, beach, ocean
加上註解#
ComfyUI的提示詞裡面允許加入註解。註解裡面的文本不會被當成提示詞處理。
//
加入單行註解。
// 參考翻譯:一個女孩,亞洲人,沙灘,海洋
1girl, asian, beach, ocean
用/* ... */
符號圈起來,可製作多行註解。
/*
參考翻譯:
一個女孩
亞洲人
沙灘
海洋
*/
1girl, asian, beach, ocean
4. 值得參考的提示詞網站#
Prompt Generator和NovelAI魔导书可以協助你組合提示詞。
Civitai除了下載模型外,還有很多現成的提示詞搭配模型的範例可以照抄。