熱門資訊> 正文
2022-11-07 11:33
神譯局是36氪旗下編譯團隊,關注科技、商業、職場、生活等領域,重點介紹國外的新技術、新觀點、新風向。
編者按:文本生成圖像現在火得不得了,不少模型都開放了免費試用的通道,讓大家都有了嚐鮮的機會。可惜的是,大部分工具都採用積分制,這意味着試用的機會有限。如果你的提示設計得不好,就很難在有限的次數內生成滿意的圖像。所以做好提示設計就非常重要了。本文介紹了文本生成圖像的提示設計的一些基本技巧,掌握了這些技巧之后,你就能更快得到自己滿意的圖像了。文章來自編譯。
如果你已經用過文本生成圖像模型,你就會知道生成自己喜歡的圖像有多麼困難。
隨着 Stable Diffusion、Midjourney、DALL·E2 的發佈,大家一直都在説提示設計(prompt engineering)也許會成為一個新的職業。因為 DALL·E2、 Midjourney Discord 服務器以及 StabilityAI 的 DreamStudio 都採用基於積分的定價模式,在這種模式的激勵下,用户一般都會爭取用盡可能少的提示來得到自己喜歡的圖像。
在這種模式的激勵下,用户一般都會爭取用盡可能少的提示來得到自己喜歡的圖像。
在你浪費掉所有的免費試用積分之前,不妨先看看本文提供的快速設計指南。這是一部通用指南,不過 DALL·E2、Stable Diffusion 和 Midjourney 之間是存在差異的。因此,並非所有提示都適用你正在使用的特定生成模型。
我們將使用一些基本提示,如「一隻貓戴着一副太陽鏡」。指南的圖像將使用 DreamStudio (採用 Stable Diffusion 模型的 GUI 節目)生成,採用默認設置,種子(seed)數固定是 42,目的是生成外觀相似的圖像,好進行比較。
有關提示設計的更多靈感,你還可以到 https://lexica.art/ 去看看,上面收集了很多提示,以及根據這些提示用 Stable Diffusion 生成的的結果圖像。
目前,大多數生成模型要麼是文本轉圖像,要麼是文本引導的圖像轉圖像生成模型。在這兩種情況下,至少其中一個輸入是提示,也就是對你要生成的圖像的描述。
提示應該相對較短。雖然 Midjourney 最多允許 6000 個字符,但提示應保持在 60 個單詞以下。同樣地,DALL·E2 的提示必須保持在 400 個字符以下。
從統計的角度來看,最好是用英語來表達提示。比方説,Stable Diffusion 用 LAION-5B 數據庫的一個子集上進行訓練,該數據庫包含來自 100 多種其他語言的 23 億個英語的圖像-文本對以及 22 億個圖像-文本對。
提示:「a cat wearing sunglasses」(一隻戴着墨鏡的貓,作者用DreamStudio製作出來的圖片)。
這意味着你可以不用受到西歐字母表的侷限。你可以用阿拉伯語或中文等非羅馬字符集,甚至用表情符號也可以。
提示:「サングラスをかけた貓」(日語為「戴着墨鏡的貓」)(作者用DreamStudio製作的圖片)
提示:「 🐱😎 」(作者用DreamStudio製作的圖片)
但是,如你所見,用日語提示生成的圖像以及僅用表情符號提示生成的圖像都沒法給貓安上一副太陽鏡。
不過,雖然可能沒有英語提示那樣好用,但你可以用其他語言提示來增強(參見「重複」章節)。
此外還有些注意事項,比方説 Midjourney 是不區分大小寫的。這意味着文字是不是大寫不會影響生成的圖像;所以,你可以用小寫字母編寫提示。
提示設計一般都按照以下模板進行。我們會在以下章節逐個介紹。
[Art form] of [subject] by [artist(s)], [detail 1], ..., [detail n]
提示設計上下文中的分詞(Tokenization)是指將文本分成更小的單元(符號,token)。提示設計可以用逗號 (,)、豎線 (|) 或雙冒號 (::) 作為硬分隔符。不過,分詞對生成的直接影響未必都能弄得很清楚 。
提示最重要的部分是主題。你想看什麼?雖説這也許是最簡單直接的部分,但就你想要提供的詳細信息量而言,也是最困難的部分。
提示:「a cat wearing sunglasses」(作者用DreamStudio製作的圖片)
複數
像「cats」這樣意思含糊糊的複數詞給解釋留下了很大的空間。你究竟是指兩隻貓還是13只貓?所以,當你想要生成多個主題時,請使用帶有特定數字的複數名詞。
提示:「cats wearing sunglasses」(作者用DreamStudio製作的圖片)
不過,隨時像DALL·E2這樣的模型在一個場景下生成多個主題沒有問題,但卻沒法將每個主題的某些特徵互相分離。
雖然上面用 Stable Diffusion 的DreamStudio生成了有兩隻不同的貓的圖像,但在接下來的那張圖卻暴露了它的問題。可以看出,左邊那隻貓沒有戴墨鏡。相反,那副墨鏡似乎在貓的身后漂浮。
提示:「three cats wearing sunglasses」(作者用DreamStudio製作的圖片)。
另外,據說DALL·E2可以很好地應付最多三個主題的提示,但是帶三個以上主題的提示就很難生成了,哪怕你説「12」、「十二」、「一打」,或者以多種方式説多次也不行。
在這個問題上,Stable Diffusion 再次顯展現出與 DALL·E2 的不同之處。不過,就算是Stable Diffusion也很難準確地生成 12 只戴墨鏡的貓。
提示:「twelve cats wearing sunglasses」(作者用DreamStudio製作的圖片)
權重
如果想賦予特定主題更高的權重,你有多種方法可以做到這一點。
順序:提示之前附近的符號權重高於提示之后的符號。
重複:通過用不同的措辭重複主題會影響其權重 。我還看到過用不同的語言或表情符號來重複主題的提示。
參數:比方説,在Midjourney中,你可以給提示的任何部分加上 :: weight 后綴來賦予權重(比如 ::0.5)。
排除項
文本生成圖像模型難以理解包含「not」、「but」、「 except 」和「without」等否定詞的提示。儘管Midjourney針對這種情況提供了一個特殊的命令 (--no),但你可以通過避免負面措辭而用正面措辭提示來繞過這個問題。
藝術形式是提示的關鍵部分。提示常用的藝術形式有:
攝影:studio photography(棚內攝影)、polaroid(寶麗來)、camera phone(手機攝像頭)等。
提示:「polaroid photo of a cat wearing sunglasses」(作者使用DreamStudio製作的圖片)
繪畫:oil paintings(油畫)、portraits(肖像)、watercolor paintings(水彩畫)等。
提示:「watercolor painting of a cat wearing sunglasses」(作者用DreamStudio製作的圖片)
插圖:pencil drawing(鉛筆畫)、charcoal sketch(炭筆素描)、etching(蝕刻)、cartoon(卡通)、concept art(概念藝術)、posters(海報)等。
提示:「charcoal sketch of a cat wearing sunglasses」(作者用DreamStudio製作的圖片)
數字藝術:3D renders (3D 渲染)、vector illustrations(矢量圖)、low poly art(低多邊形藝術)、pixel art(像素藝術)、scan(掃描)等。
提示:「vector illustration of a cat wearing sunglasses」(作者用DreamStudio製作的圖片)
電影劇照:電影、監控攝像等
提示:「CCTV still of a cat wearing sunglasses」(作者用DreamStudio製作的圖片)
如你所見,你甚至可以為每種藝術形式定義特定的媒介。比方説,對於攝影,你可以通過定義下面這類細節讓生成的圖像更加具體:
膠片類型(black & white、polaroid、35mm等)
取景(close up特寫、wide shot廣角等)
相機設置(fast shutter speed告訴快門速度、macro微距、fish-eye魚眼、motion blur動態模糊等)
光線(golden hour黃金時刻、studio lighting演播室照明、natural lighting自然光等)
還有其他各種藝術形式,如stickers(貼紙)和刺青(tattoos)等 。如需更多靈感,可參見文末[11]。
如果提示沒有指定藝術形式,生成模型通常會選擇自己在訓練期間看到最多的那種。對於許多主題而言,一般攝影就是最普遍的藝術形式。
模板當中可能會嚴重影響生成圖像結果的還有樣式或藝術家 。使用方法是「by [artists]」 或「in the style of [style or artist]」。
提示:「oil painting of a cat wearing sunglasses by van gogh」(作者用 DreamStudio 製作的圖片)
要想生成有趣的圖像,有兩個技巧:
將兩位或多位藝術家的風格混搭
提示:「oil painting of a cat wearing sunglasses by van gogh and by andy warhol」(作者用DreamStudio製作的圖像,融合了梵高與沃霍爾的風格)
使用虛構藝術家
提示:「oil painting of a cat wearing sunglasses by max mustermann」(作者用DreamStudio製作的圖片)
關於組合藝術家來生成有趣圖像,有一點要注意的是,你還可以將兩個定義明確的概念組合起來。你可以嘗試以下這個模板:
- 「[subject] made of」(由xxxx做成的[主題])
- 「[subject] that looks like」(看起來像xxxx的[主題])
- 「[subject] as」(身為xxxx的[主題])
提示:「a cat as a rockstar 」(「身為搖滾明星的貓」作者用DreamStudio製作的圖片)
添加形容詞和質量提升器(quality boosters)等細節可以對圖像的整體美感產生顯著影響。
常用的形容詞包括:
取景方面(close up特寫、landscape風景、portrait肖像、wide shot廣角等)
配色方案(暗黑dark、pastel柔和等)
光線(電影光cinematic lighting、natural light自然光等)
其他:epic史詩,beautiful美麗,awesome
但也有些社區已經發現「魔法詞」似乎可以生成更好看的圖像:
「highly-detailed」(高清細節)
提示:「a cat wearing sunglasses, highly-detailed」(作者用DreamStudio製作的圖片)
「trending on artstation」(趨勢)
提示:「a cat wearing sunglasses, trending on artstation」(作者用DreamStudio製作的圖片)
「rendered in Unreal Engine」(用虛幻引擎渲染)
提示:「a cat wearing sunglasses, rendered in unreal engine」(作者用DreamStudio製作的圖片)
「4k」或「8k」
本文介紹了關於如何設計提示的技巧,掌握這些技巧之后,你就可以少試幾次就能用文本生成圖像模型做出想要的圖像了。
我們討論瞭如何從「戴太陽鏡的貓」之類的簡單主題開始,一步步改進提示,生成外觀可接受的圖像。
提示:「a cat wearing sunglasses」(作者用DreamStudio製作的圖片)。
這里面的基本技巧是:
定義細粒度的藝術形式(比方説,black and white photograph黑白照片)
添加風格或藝術家(比方説,byAnnie Lebovitz )
添加增強的形容詞(比方説,highly-detailed)。
只需要遵循這些簡單的技巧,生成的圖像就能變得更加有趣,如下所示。
提示:「a black and white photograph of a cat wearing sunglasses by annie lebovitz, highly-detailed」(作者使用DreamStudio製作的圖片)
參考
[1] R. Beaumont,「LAION-5B:開放大規模多模態數據集的新時代」,laion.ai。 https://laion.ai/blog/laion-5b/
[2] DreamStudio ,「提示指南」。dreamstudio.ai。 https://beta.dreamstudio.ai/prompt-guide
[3] DreamStudio ,「一般問題」。dreamstudio.ai。 https://beta.dreamstudio.ai/faq
[4] Huggingface ,「用擴散器實現Stable Diffusion」,google.com。 https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_diffusion.ipynb#scrollTo=gd-vX3cavOCt
[5] J. Jang,「DALL·E 的積分機制」。 openai.com。 https://help.openai.com/en/articles/6399305-how-dall-e-credits-work [ 9] Stability AI,「Stable Diffusion Dream Studio beta 服務條款」。stability.aihttps://stability.ai/stablediffusion-terms-of-service
[6] Midjourney ,「文檔」,github.com。 https://github.com/midjourney/docs/
[7] Midjourney ,「 Midjourney文檔」。 gitbook.io。 https://midjourney.gitbook.io/docs/
[8] J. Oppenlaender ,A Taxonomy of Prompt Modifiers for Text-To-Image Generation (2022), arXiv預印本 arXiv :2204.13988 。
[9] G. Parsons,The DALL·E 2 Prompt Book (2022),https://dallery.gallery/the-dalle-2-prompt-book/(2022 年 9 月 10 日訪問)
[10] 「 pxan 」,「如何獲得不差勁的圖像:從Stable Diffusion生成酷圖的初學者/中級指南」,reddit.com。 https://www.reddit.com/r/StableDiffusion/comments/x41n87/how_to_get_images_that_dont_suck_a/
[11] 「rendo1#6021」和「luc#0002」,「DALL·E 2 Prompt Engineering Guide」,google.com。 https://docs.google.com/document/d/11WlzjBT0xRpQhP9tFMtxzd0q6ANIdHPUBkMV-YB043U/edit#heading=h.8g22xmkqjtv7(2022 年 9 月 10 日訪問)
[12] M. Taylor,「提示設計:從文字到藝術」, saxifrage.xyz 。 https://www.saxifrage.xyz/post/prompt-engineering
譯者:boxi。