AI算圖咒語概論①|What the Prompt?

2023/11/15閱讀時間約 8 分鐘

你還記得,為了生成圖片而寫的第一串Prompt嗎?

你還記得,跟ChatGPT說的第一句話嗎?

最開始,剛接觸到AI生成工具時,我沒做甚麼深入的了解,就點開了Leonardo.Ai 和 ChatGPT的頁面,那時候的我也多少抱有幻想,以為電腦終於能夠跟人類產生自然流暢的對話,並且能理解我們的意思,也許產生自我意識、會做夢、成為真正的生命,都指日可待……

畢竟AI題材的科幻片也沒少看,有這麼一點見證歷史一頁的興奮,也是合情合理吧。🤣

不過真的使用下去後,很快,很快就理解到其實現在還差得很遠。電腦——AI現在依然無法做到「理解」人類的語言,它只是能夠「產出」人類的語言罷了。

(使用Leonardo.Ai)

(使用Leonardo.Ai)

在我看來,

就像是聰明且受過悉心調教的動物。

在學習AI相關的知識時,越是瞭解生成式AI的工作原理,越讓我想起這幾年很流行的,訓練寵物貓狗透過按留聲按鈕,來跟人類用人話交流的影片。或是更陽春一點,海生館的海豚和海狗表演。(聲明個人不支持強迫動物表演)

海豚的智商相當七歲人類,但當任一隨機遊客在表演中進行互動時,仍然需要使用訓練員教導的手勢,才能讓海豚做出對應的動作,而不單單只是走上前,跟他說一聲人類語言的「轉圈」。

AI也是一樣,它真正理解跟計算的都不是人類的語言,理解人類語言的方式也不是人類的方式,如果你不學著怎麼去跟它溝通,用它理解的方式來提出你的要求,那麼得不到你想要的結果,也是合情合理吧?

當然了,AI跟動物還是有區別的,大型語言模型(LLM)對人類語言的掌握度日益猛進,也許終有一天他們能達到人類也判斷不出的自然跟流暢,能達到確實理解人類在口語上,完全不顧語法死活的對話內容的境界。

但起碼現在不是,所以我們還是要學著怎麼跟機器溝通,以期達到事半功倍的效果。


你好,初學者。

本篇面向AI算圖新手、對寫prompt沒有概念的朋友,以diffusion model系AI繪圖工具為例,分享我自己從零開始學習寫圖像生成prompt的經驗,只談基本架構跟新手上路的方向。

寫prompt的路子有很多,我並不是唯一正解,只是其中的一種路子,希望每個走過路過的朋友,在看完後經過練習,都可以找到自己寫prompt的風格。

(使用Leonardo.Ai)

(使用Leonardo.Ai)



基本觀念

  1. 英文寫效果最好。
    市面上的AI的訓練幾乎都是以英文來進行的,所以英文prompt的生成效果最好。
  2. AI理解文字需要透過一個預先訓練好的文字編碼器(text encode)把人類的文字轉換成AI看得懂的東西,而非直接去閱讀文字。
  3. 寫法主要分為單詞片語自然語言兩種,個人推薦單詞片語式。
    自然語言就是人類講話,帶有描述、修辭、語法等口語化內容。在SDXL系列模型中,自然語言prompt的表現能力有顯著提升。
  4. 基本法則是越靠前的prompt權重越重,也就是說AI會更重視它。
  5. 字詞有天生權重,取決於各模型的訓練方式,天生就重的prompt即使放在後段也不容易被其他詞吃掉。反之有些輕的詞,在不增加權重的情況下,放排頭也不一定會出來。
  6. 同一個prompt在不同的模型、不同採樣器(sampler)、不同LoRA等不同條件中,會有不同的對應結果,因此需要明白prompt沒有絕對的萬用標準版
  7. 同樣是生成式AI,語言模型(e.g. ChatGPT)和繪圖模型(e.g. Stable Diffusion)是兩碼子事,工作原理完全不一樣。
  8. 各家prompt語法基本上不通用,效果也不盡相同,MJ用MJ自己的,Leo用Leo自己的,A1111用A1111的,使用前請詳閱各家公開說明書。🧐
  9. prompt如果寫了沒有被訓練過的內容,那這段prompt就不具備意義,而只作為一個亂數,但是,並不會導致無法生成,並且仍然會對生成結果造成一定的影響。
    簡單來說,AI會自己跳過它看不懂(沒學過)的部分,類似於有邊讀邊沒邊讀中間
  10. 大部分AI讀取prompt有一定長度限制,過長的prompt容易被忽略掉後段。
    在SDXL系列模型中,長篇prompt的表現能力有顯著提升。




學習軌跡

(使用Leonardo.Ai)

(使用Leonardo.Ai)


剛開始真的推薦先從抄襲別人的prompt學起,這個階段就像是學書法時的臨摹字帖,學畫畫時的臨摹名畫。

抄,不能盲目抄,盲目抄的話寫prompt的功力是不會進步的。

英文不是我們的母語,但生在這個時代我們有基本的google翻譯和強悍的chatGPT,看不懂的詞,稍微丟一下翻譯工具,一點點慢慢地記、慢慢地學,很快你就會發現自己不知不覺背下了很多單字,英打速度也突飛猛進。




從修改別人的prompt開始,把主體替換成你想要的描述,把背景替換成你想要的場域,把風格替換成你喜歡的風格。

略有熟悉後,就可以試試看,自己從無到有寫出一段prompt。一開始不用直接寫超長,一點點加就好。


完善流程

總結基本概念,以下是我對新手寫prompt的建議,也是我自己通常使用逐步完善prompt的方式:

用英文書寫,單詞構成,先寫出簡單的主體、想要表現的技法、色調、情緒等,加上基本上有寫有保佑的best quality。
🔽
根據使用平台可接受的語法來添加語法,先刷幾次看我寫的東西有沒有按照我想的方式表現出來。
🔽
依據結果調整prompt的前後順序,並增加更多細節元素,如negative prompt、藝術家名稱、第二色調等。
🔽
更換模型、更換畫布尺寸、更換其他條件設置。刷圖比對結果,根據結果調整prompt。



我第一串prompt真的是挖不出來了,目前可以找到最早的是:

Prompt:
Art nouveau, Alfons Maria Mucha, CLAMP, centered, approaching perfection, dynamic, highly detailed, watercolor painting, light blonde hair, light blue eyes, western facial features, full body, wearing fantasy ancient Chinese costumes, dress like a hobo, one is westerners facial features, deep eye socket, overall color is relatively deep, stick weapon,
Negative Prompt:
(((2 heads))), duplicate, blurry, abstract, disfigured, deformed, cartoon, animated, toy, figure, framed, 3d, cartoon, 3d, disfigured, bad art, deformed, poorly drawn, extra limbs, close up, b&w, weird colors, blurry, watermark, blur haze, 2 heads, long neck, watermark, elongated body, cropped image,out of frame,draft,deformed hands, twisted fingers, double image, malformed hands, multiple heads, extra limb, ugly, poorly drawn hands, missing limb, cut-off, over satured, grain, lowères, bad anatomy, poorly drawn face, mutation, mutated, floating limbs, disconnected limbs, out of focus, long body, disgusting, extra fingers, groos proportions, missing arms, mutated hands, cloned face, missing legs,

80%靠到處複製貼上,那時候對AI完全沒有概念,英文也很爛。

現在回頭檢查一遍可以改掉的地方好多,寫prompt有練習真的有差,現在的我也不會寫那麼長串的negative prompt了,大部分時候甚至是不寫,或是只寫基本款。

raw-image




希望這個教學對你有幫助,有任何問題可以在下面留言。

可以的話,跟我分享一下你的第一串、或是可以回溯到的最早的prompt吧!

Youtube頻道[你風哥 Wind Bro Draw]上各式生成AI工具教學及介紹影片的文字版,包含使用方法與小技巧,完整的影片文案重新梳理,或是實用小筆記,還有進階使用者的理論基礎部分。工具目前包含ComfyUI、Leonardo.Ai、Picsi.Ai、Pika Labs……等,緩慢新增中。
留言0
查看全部
發表第一個留言支持創作者!