A set of tarot card based on self-trained LORA
本篇文章是我個人探索AI繪圖還有ChatGPT至今,獲得最有成就感的產物之一,不過這件事情見仁見智,畢竟不是每個人都喜歡AI繪圖,也不是每個人都對塔羅牌感興趣。 但是如果你跟我一樣,著迷於AI繪圖的魔力,也同時對ChatGPT這類的大型語言非常感興趣,那麼這篇文章會教你怎麼讓這兩個AI工具聯手,一起創造出一個屬於自己的塔羅牌系列,同樣的一套做法,也非常適合拿來產生各種系列組圖。
在這篇示範裡面,我將教你如何利用AI繪圖工具Stable Diffusion產生出自己的一整套塔羅牌排組,而且這整套牌組還是套用上自己Training的LORA的,也就是塔羅牌的主角都可以是你或是你身邊的人(或是你的偶像明星),一旦掌握訣竅,用這篇的方法一天以內就可以完成這個工作。這篇文章屬於進階的 AI 工具聯手系列,所以對於完全的新手來說還是有一些難度的。基本的要求如下:
A.你需要知道並且已經安裝好 Stable Diffusion的Automatic1111的介面,不知道怎麼安裝的話可以參考
這篇別人寫的文章 ,我會建議你在嘗試這個之前也先好好摸索如何使用Automatic1111,並且有基礎的Stable Diffusion Prompt的技巧,將來我也會寫一篇文章來說明基礎的Prompting for Stable diffusion.
B.你需要知道LORA並且理解如何訓練LORA,筆者剛好有寫了一篇文章用自己的家人當範本做訓練,
請參考這篇文章
C. 然後是最基本的,你需要擁有OpenAI的帳號並且熟悉跟ChatGPT對話,我想這個大家都會了吧?
ChatGPT怎麼幫上AI繪圖的忙呢? 要產出塔羅牌這樣複雜的組圖,很重要的一件事情就是你需要清楚的知道每一張塔羅牌各自的形象,並且要用精確的語言把每一張塔羅牌的形象轉換成Stable Diffusion可以用的Prompt。所以ChatGPT要負責的工作就很明白了,要用他淵博的知識來協助你提供每張塔羅牌該長什麼樣子,並且順手幫你把正確的Prompt 格式做出來,一口氣餵進去給Stable Diffusion。我把這樣的順序拆分成為六步驟,我們一步一步地來講說。
- 第一步就是,找到一個合適的Prompt可以產出你要的風格,這件事情其實不用盲目摸索,有不少網站提供一些人家產出的圖片以及Prompt,只要Google “Good stable diffusion prompt”就可以得到很多整理好的Prompt。或是可以參考一個我相當推崇的網站 Prompts — Stable Diffusion Art (stable-diffusion-art.com) 。以我個人來說,一直都非常喜歡慕夏的畫作,於是我就到這個網站上去找了一些看起來還不錯的慕夏風格的作品,記錄下幾個Prompt。
- 拆解這個合適的Prompt並且變成可以餵給ChatGPT的格式。 這邊就要提到一點Prompt Engineering的技巧了,舉例來說一般餵給Stable Diffusion的Prompt都會包含 主體+畫作的型態+畫家+額外的細節描述還有增加品質的各種提示詞。 但是我們稍微想想,如果要請ChatGPT產出一組固定且風格一致的提示詞該怎麼做呢? 答案很簡單,就是把固定的部分請ChatGPT寫在句子最前面或是最尾端,中間麻煩ChatGPT自行發揮。 請各位看官看下一步我怎麼實際操作。
- 給予正確的提示還有範例,請ChatGPT產出Sample的Prompt,關於怎麼正確地給ChatGPT提示,還請參考我這篇文章。以下就是我給ChatGPT(GPT4)的提示:
A. You are professional AI Prompt Engineer that will provide prompt for my generative AI Art. (先給人設還有目標)
B. Rules of the prompt (給予限制還有格式) :
1. Don't use any pronouns; (請AI不要產出代名詞 直接給主詞避免主詞混亂)
2. Avoid using these words: in a, the, with, of, the, an, and, is, by, of.
3. start every prompt with these exact words: “ ((best quality)), ((masterpiece)), ((realistic)) ; 經過嘗試,我決定把提升品質的關鍵字放在每個Prompt 的開頭
4. end every prompt with these exact words: <lora:sksxandra:1>; 這句很簡單就是為了套用我們自己訓練出來的LORA
C. A good example of such prompt is ((best quality)), ((masterpiece)), ((realistic)), beautiful girl, cute anime old french village, in the mountains, blue sky, summer, flowers, plants, highly detailed, style of master anime, perfect perspective, <lora:sksxandra:1> (這一步驟就是給AI一個範本,讓他產出的Prompt格式會正確,不過如果你沒有範本,也可以先讓AI自行發揮)
D. Please generate a sample prompts of tarot card in the style of Alphonse Mucha and make sure the prompt follows the above rules.
然後ChatGPT就會吐出Prompt了。
4. 接下來就是Try and error 的時候,把ChatGPT產出的sample Prompt實際拿去Stable Diffusion裡面實測,看看效果如何,然後做微調,最後終於產出一組我覺得相當滿意的Prompt”((best quality)), ((masterpiece)), 1girl, intricate, Alphonse Mucha inspired tarot card, Art Nouveau elegance, flowing lines, organic shapes, delicate pastel colors, female figure representing the High Priestess, ornate halo, symbolic pomegranates, crescent moon, water lilies, beautifully adorned borders, rich tapestry-like background, harmonious composition” 畫出來正是我想要的
5. 這時候就可以請ChatGPT依照這個格式產出完整的Prompt Sets,以下是我用的命令。Now please generate a set of prompts based on tarot card orders starting in fool and ending in the world. Please give detailed descriptions to clothing and accessory and background to fit each tarot card characters.這時候ChatGPT會一口氣吐出22張塔羅牌的Prompt 非常的長!
6. 因為塔羅牌有22張,這個牌組的Prompt 可能要分幾次ChatGPT才能把它產完,產完以後請大家收集到同一個文字檔案內,我們就可以進行最後的步驟,就是打開Automatic1111的介面,然後依照我這張圖的設定
在txt2img裡面,Prompt的部分留空白(你沒看錯),negative prompt的部分你要填什麼都可以,通常都還是那些大家常用的。重頭戲是下面的部分
Automatic1111 setup prompt from textbox
請到最下方Scipts的部分下拉選單選 Prompts from file or textbox,然後把剛剛ChatGPT產出的成果一股腦倒進去,就像是下圖。
然後按下Generate,就會發現我們剛剛請 ChatGPT每個prompt後面留兩個空白行這時候發揮作用了! Stable Diffusion 會針對一個一個prompt分開產生圖片,這時候你還可以把 batch size調整大一點,然後去睡覺,讓電腦替你辛勤的產生圖片,早上起來再來挑選即可。
最後,給各位欣賞幾張用自己訓練的LORA(家人)的照片做成的塔羅牌圖,大家覺得怎樣呢? 完整一整套有22張,我就不一一貼上來了。貼上幾張比較成功地給大家欣賞欣賞。當然這些圖組裏面也會有一些特別難克服的,譬如說倒吊人之類的,這些要怎麼做呢? 就留待我下次慢慢分享給各位了。