2023年3月4日 星期六

Stable Diffusion搭配ControlNet應用,以背包為例

 之前文章中提到了Stable Diffusion搭配ControlNet應用。我們就實際以背包為例,使用ControlNet的Canny模組和Scribble模組,進行一個背包的繪製。

我背包主要用了兩種不同方式去表現,一個是比較科幻風格,一個是利用皮革的材質去表現,背包的型態就都是以一個型態當基準。

我們這次使用了ControlNet這個外掛,另外搭配了兩種不同的模型去進行算圖,以下就是實際製作出來的效果。

















Stable Diffusion 擬真美人魚

很多朋友問我關於Stable Diffusion 提詞的問題,其實除了正向提詞,負向提詞也是很重要的,我在這邊就公開我繪製美人魚所用的題詞。

除了形容美人魚的型態之外,針對攝影的顏色、品質、鏡頭等等均有一些描述。

也歡迎大家繼續嘗試,發展更多不同的效果。


parameters

Intricately detailed RAW color Photo, of (very beautiful mermaid , perfect hands), magic, Seaside, rocky shore, sitting on a rock, full body, ((detailed facial features)), beautiful eyes, beautiful fingers, (detailed skin), diffused skin pores, (pale skin), [elvish], small perky breasts, big accentuated ass, particle effects, subsurface scattering, cinematic lighting, depth of field, volumetric shadows, [gloomy:vivid:16], raytracing, photographed on a Canon EOS R6, 50mm lens, (highly detailed:1.2), HDR, 4k resolution, (sharp focus),


Negative prompt: 

nsfw, (monochrome:1.3), (oversaturated:1.3), bad hands, lowers, 3d render, cartoon, long body, ((blurry)), duplicate, ((duplicate body parts)), (disfigured), (poorly drawn), (extra limbs), fused fingers, extra fingers, (twisted), malformed hands, ((((mutated hands and fingers)))), contorted, conjoined, ((missing limbs)), logo, signature, text, words, low res, boring, mutated, artifacts, bad art, gross, ugly, poor quality, low quality, (missing asshole, missing butthole)







 

2023年2月27日 星期一

繪圖AI - Midjourney 的進階使用技巧(二)

接續上篇,繼續來說明關於Midjourney 的進階使用技巧。相信很多用過Stable Diffusion 這類的AI繪圖都會知道,我們在控制AI生成的圖形,除了一般的提詞外,還可以設置"負提詞"或稱為反向提詞,也就是我不希望出現的元素,另外,我們還可以利用"種子"來讓生成的場景或人物非常接近,尤其是人物。這兩個重要元素,在SD中,都是直接在介面上可以選擇的,但是Midjourney 似乎都沒有。今天主要就是來說明,SD中常見的一些指令用法,在Midjourney中的對應使用方式。

進階技巧-1:負提詞

負提詞,就是跟提詞相反,如果畫面中有一些你不想出現的元素,你可以在這邊加入,畫面中就會排除這些元素。在Stable Diffusion 常常用於避免一些如人體變形、手指變形、18禁畫面或是過於"3D"等等,有時負提詞比正常提詞還要更長。在Midjourney要是排除如元素或色調,例如下面的例子:

--no+負面提示,--no plants 會嘗試從畫面中移除植物。--no red 會嘗試將畫面中紅色調移除或減少。你可以藉此移除各項元素,如人物、交通工具、光源、窗戶等等等。

進階技巧-2:權重與多提示

有使用過SD的朋友,應該會了解(((提詞)))、(提詞:1.2)或是{提詞}這些用法,這些括號以及裡面的數字,但表不同強度的提詞,但這是SD的語法,Midjourney 也有類似的,不過在講解權重前,要先說明一下多提示。

我們一般在提詞時,有兩種情況,一種會是直接輸入一句完整的帶有主詞、形容詞等的句子,另外一種方式是把每個提詞用逗號分開。所謂多提詞,是此一串提詞指令有幾個重點的要素,而這些重點都很重要,官方用了一個很有趣的例子,就是"熱狗",hot dog在一句話裡面的意義跟hot, dog,是兩個不同的意思。而出現hot, dog,這兩個提詞之後,才有權重的需求,也就是你的hot到底要多強烈。官方的用法如下:

在提示中添加雙冒號:: ,例如:hot:: dog,就會出現很熱的狗,而不是一份熱狗。




有了多個提詞後,我們就可以在這些關鍵的提詞上,給他權重,這樣就能改變每個提詞的分量,類次於我們在SD的這個做法((hot)),權重是一種比例的概念,在預設都是0(也就是權重相等),因此你輸入1、2、3、0.5,這樣的數字就可以了。官方的例子如下:

提詞: hot::2 dog,可以看到hot這個關鍵字的權重增加了,火焰也就更大了。


剛剛提到的負提詞"--no+負面提示"這個用法,其實也可以用權重的方式來代替,例如,如果你不想要某個元素,例如我不想要畫面中有出現人,那我可以這樣提詞:people:: -0.5或people:: -1,這樣也就等於負向提詞,因為把人這個元素變成負值,那麼然的元素就可以排除。



進階技巧-3:Seed種子的控制

所有的AI繪圖,都是利用亂數的一個起始值來當作運算的基準,而這個值我們稱為Seed(種子),我們可以把它真的當成植物的種子來理解,同一個品種的種子,長出來的植物會是極為相同的,因此我們如果使用相同的Seed(種子)來進行運算,那麼算出來的結果也是會極為相同的。

種子的數值是0–4294967295,也就是說,理論上如果用相同的提詞,在各主相同的條件下,可以有四億多種不同的結果,更別說如果再加上各種不同的提詞組合了。正常運算下Seed值是每個圖像隨機生成的,MJ允許使用--seed或 --sameseed參數來指定Seed。使用相同的種子和相同的提詞將產生相似的圖像,但倒底會有多相似,則看版本不同而定。我們來實驗一下。

我的提詞:a beautiful modern wooden chair --seed 226543 




以目前Midjourney V4C這個版本來看,在同樣條件下,是幾乎完全相同的。我們在延續試試看,如果我們增加場景在提詞中,造型是否還會延續。

我的提詞:a beautiful modern wooden chair, in the room --seed 226543



我們可以發現,增加了場景到提詞中後,造型發生了很大的變化,型態已經很難再延續下去。

我們在繼續做實驗,我們用同一組種組值,來用人物造型進行測試。

我的提詞:A little girl with blond hair and blue eyes, with a ponytail and a red dress. --seed 226543



我們使用同一組提詞,加上同一組SEED,最後加上動作,我們讓小女孩躺下。

我的提詞:A little girl with blond hair and blue eyes in a ponytail in a red dress lies down and sleeps --seed 226543 


你會發現,人物的型態似乎是比較延續的,跟先前的差異不會太大,不至於是兩種不同的形態。我們再試試給她不同的表情。

我的提詞:A little girl with blond hair and blue eyes, with a ponytail and a red dress. Surprised expression --seed 226543 


把這張圖跟第一張圖對比,你可以看到小女孩雖然表情誇張,髮型也有了一點的改變,但是還算是第一張的延續,並沒有太嚴重的變化。我們就可以利用種子來延續畫面中主角的造型,這對製作連續性的故事或繪本有很大的幫助。

那為什麼椅子的造型差異這麼大,而人物就相對來說型態行能控制能。我覺得主因是我們對家具設計的提詞不夠,也就是提詞越少,AI自行發揮的空間越大,你要型態延續,就必須給AI更多的條件限制。


進階技巧-4:如何找到Seed

剛剛的示範,是由我手動,隨便輸入一個Seed值,但我們多數使用時,是讓AI隨機生成,如果我隨機生成後,選到一張我想要的圖,要如何找到Seed值。我們用這張圖來當範例:

當我們想查詢某一張圖時,要查詢的這張圖的右邊,可以看到一個添加表情符號的位置,然後再命令列輸入"envelop",就會出現信封的表情符號,請選擇第一個信封。伺服器就會以私信的方式把資訊寄給你。


可以看見他提供你的資訊包含了Job ID,也就是你作品的編號,另外還有這張圖所用的Seed值。


進階技巧-5:過程影片

有些人可能會看過,有人製作作品從無到有生成的漸變過程影片,這也是一個參數,只要再結尾使用--video參數,就能製作生成的初始到成品影像的短片。只要使用表情符號的信封符號將完成的影片寄給你。

例如:Vibrant California Poppies --video

最後MJ會提供一串連結,就會是生成過程的影片。


進階技巧-6:Remix

Remix顧名思義,是一種混和,這個字我們比較常見於音樂中,很多會在我們熟悉的原版曲目中,在我們熟悉的原版曲目中,增加更種不同的元素。在這裡也是同樣的功能,使用Remix模式,可以在已經完成的圖上,再更改提詞、參數、模型版本和長寬比等。

Remix屬於命令,而不是參數,必須使用/settings來打開Remix(或是/prefer remix也可以),開啟後在放大的圖像下面"Make Variations"(Remix開啟點擊是綠色的,一般模式點擊是藍色的),點擊後就會出現改變提詞的對話框。順序如下:

先利用/settings來打開功能表,把Remix mode打開。



點擊放大圖下面的"Make Variations"(Remix開啟點擊是綠色的,一般模式點擊是藍色的)



在這邊可以重新提供新的提詞,你可以增加新的元素進去,AI會以這個Seed等基本條件重新計算。



這是Remix增加火焰後的結果。


使用Remix模式其實相當便利,可以讓我們不必去特別尋找seed,可以在已經完成的圖上,再更改提詞、參數、長寬比等,甚至可以更換計算的模型版本等。尤其是我們希望在既有畫面上增減一些元素,或是做更多的變化時,不妨使用這個功能試試。

以上就是我針對Midjourney 的進階使用技巧的分享,有任何問題也歡迎留言討論。之後如果有什麼其他的新資訊或是特殊的使用方法,我會再另外寫文章分享。


2023年2月24日 星期五

繪圖AI - Midjourney 的進階使用技巧(一)

 


Midjourney 功能非常強大,他的AI能夠很快從你的關鍵字生成各種精美的圖案,非常令人驚豔。但是使用過一段時間的朋友,都會發現AI很難有效控制,而且 Midjourney 也沒有類似SD的負面提詞功能,也沒有SD能夠控制SEED的選項,有時很難排除一些不想要的元素。因此今天就來說明關於 Midjourney 的進階技巧。

其實Midjourney 的進階以及所有的參數,在官網都有相關說明,只是多數的朋友沒有注意到罷了,而且隨著版本的更新,官方的說明文件也會隨之更新,建議有興趣的朋友可以上去看一下,相信會很有收穫。

以下就以官方文件為基礎,加上我個人使用經驗,總結出最關鍵的幾個進階指令,提供大家參考。

進階技巧-1:參考圖片

一段更進階的提詞可以包括:圖像 URL、提詞以及參數,而利用參考圖片來引導AI生成的方向,可以說是最重要的方式。這個方法可以很直覺的影響你要生成內容物的風格、造型、元素等等。

要加入圖片的方法,必須要有照片的網址連結,例如把圖片上傳到你的雲端硬碟或是部落格等處,或是將照片直接上傳到 Discord。要上傳圖像到Discord,可以用拖曳的方式,或是點擊對話輸入區旁邊的加號。選擇上傳文件,選擇上傳檔案,然後發送消息。


上傳以後,在你上傳的照片上按滑鼠右鍵,選擇複製連結,或是用更直覺的方式,把圖拖曳到對話框中,也可以取得連結。然後在提詞區,先放入圖片連結,後面在加提詞。圖片目前可以最多放到三張。圖片的長寬比最好能裁減與要生成最終圖像相同的比例,這樣可以獲得最佳效果。但,沒有這個比例也是可以運行。


加入照片的效果,官方網站有一些相關的說明,效果如下。



如果以工業設計的角度來看,除了把兩個不同的元素組合外,也是可以用來引導設計方向,例如你放入兩張你希望的構想草圖的繪畫風格,後來再來提詞,AI畫出的圖面就會參考你提供的風格。舉個比較明顯的例子,例如我希望AI畫出類似這種有3D線架構的圖,我先給他這兩張圖參考,我後面再來形容這個椅子,我們來看看會有什麼樣的成果。


  

我的提詞:modern master chair, white color leather, walnut wood legs, realistic photograph


就出現了類似架構線的這種風格的現代家具。當然,最理想的方式,還是放入自己的草圖,來引導AI畫出接近於你想要的造型,在讓AI慢慢修正成為我們要的造型,是最好的調整型態方式。以下用銘傳大學林福年老師的例子來說明,左圖是手稿,右圖是上傳圖片加上提詞後生成的效果,有了雛型之後,再來重複照片合成、重生等動作,甚至修改手稿再重複合成,直到造形達到我們接受的型態為止。

 

進階技巧-2:結尾參數

剛剛一開始有提到,一段更進階的提詞可以包括:圖像 URL、提詞以及參數,現在來說最後結尾的參數。參數是添加到提示的末尾,每次可以在最後添加多個參數。
許多設備或是輸入法會自動將雙連字符 (--) 更改為破折號 (—)。Midjourney 兩者都接受。

比例
--ar 控制生成圖片的長寬比。沒有指定的話是1:1,我們可以控制如4:3或是16:9,或是直的7:4等等。必須使用整數。使用 139:100 而不是 1.39:1。

--ar 4:3 或 --ar 7:4


品質
--quality 或 --q,提高品質是指提升這個畫面裡面的細節,當然細節越多代表每次作業使用更多的 GPU分鐘數,所以你的總次數也會因此減少。(我們訂閱時購買的是使用GPU的時間數而不是次數),細節的品質設置不影響我們的像素的,因此對圖片解析度的大小沒有影響。

預設值是1,還可以設定下降.5 、.25,就我所知最高可以設到2。預設值1也就是高的細節了,如果你想要節省時間換來更多次的計算,記得修改這個參數。


運算版本
Midjourney 常常會發布新的版本以提高效率,--version或--v參數或使用/settings命令並選擇型號版本來使用其他型號,如果不輸入就是預設值,預設值也就是最新的版本。

--style <4a, 4b or 4c>在 Midjourney模型版本4的版本之間切換。就算同樣是V4版本,也存在著差異,下圖可以看出4a和4c的差異就很顯著。



另外,還有兩個測試模型,風格也很不錯,感覺很寫實:--test和--testp,它們可以與--creative參數結合使用以獲得更多不同的效果。

提示示例:/imagine prompt vibrant California poppies --testp --creative



如果還想要有風格差異更大的,還有一個Niji Model,直接可以使用/settings命令來切換,該模型是 Midjourney 和Spellbrushniji之間的合作,可以製作動畫和插圖風格,簡單來說就是二次元的風格,這個模組對所有動漫的角色、風格都很熟悉,有非常好的效果,但那是另一個主題,我們這次不深入介紹。

整合上面提到的資訊,結論就是,在提詞的結尾,加上下列的各種運算版本,就可以了,目前提供的版本有:
--v 1, --v 2, --v 3, --v 4, --v 4 --style 4a, --v4 --style 4b,  --test, --testp, --test --creative,--testp --creative --niji

進階技巧-3:命令
這邊指的命令,是指我們在對話區按下"/",對機器人所下的指令,我們最常用的命令就是/imagine(生成一張圖)和/info(查詢個人的使用狀態)。除此之外還有一些進階的命令,其中最方便的就是/settings這個命令。

/settings這個命令。使用了這個命令後,就會出現下面的選單,所以先前提供的各種版本切換,也可以到這邊進行。由於項目很多,我挑最重要的講。



前文中有提到的品質設定,這邊也是能夠修改的,如果你想要超高的細節,可以切換到高品質,代價就是花兩倍的時間。



另外還有一個前文沒有提到的命令,之所以沒提到,是想在這邊說明,settings這個命令主要就是把原本手動輸入的參數介面化,而還有一個參數是--stylize 或 --s ,這個參數後面也是可以加權重的,可參考下面的兩張圖。這個是針對你在提詞中,所用到的風格去做強弱的更動(例如插畫風格、油畫風格、動漫風格等等),但我覺得這個命令有點抽象,所以我前文先略過不提。




藉由前面提到的品質,繼續說明跟生成圖面品質有關的參數。我們再生成四個圖像後,按U會放大,使用過的人會發現,放大後AI會增加我們不少細節,但有時我們又不希望增加細節,希望圖面跟原本的相同,這時候可以參考下面這兩個結尾參數,一個是接近原本生成的圖,另一個則是添加細節。

--uplight 選擇按下U按鈕時,使用替代的“輕型”升頻器。放大後的圖像細節增加較少但更平滑。
--upbeta 選擇按下U按鈕時,使用替代的 beta 升頻器。放大後的圖像添加的細節明顯。

/blend,該命令允許快速上傳 2-5 張圖像,然後查看每張圖像的概念和風格,AI會將它們合併成一個新圖像。你可能會覺得奇怪,這個之前的上傳參考圖有什麼不同,簡單說,之前的是疊加,例如上傳一個雕像和一張花,花會變成背景元素,在雕像後面。但是blend是一種融合、一種混合,如果我上傳了一個人臉,和一個貓臉,就會出現一個貓臉人,而且這個貓臉人還會有原本那個人的長相特徵等。

因此/blend命令可能需要比其他命令更長的時間才能啟動,由於要把椅上的照片混合,所以照片畫素,甚至主角對應的位置,如果能全部吻合,效果就更棒了。我下面就用網路上抓的兩張照片來進行測試,我以早期湯姆克魯斯在TOP GUN的造型來實驗。輸入/blend後按enter,就會在對話框中出現讓你上傳照片,我就上傳兩張照片,傳完所需的照片,後面可以再增加提詞,我這次先單純用兩隻照片看效果。




你可以看到,畫面上就不會是有湯姆克魯斯和一隻貓,而是湯姆克魯斯和貓的融合,而且這個貓的臉還有湯姆克魯斯的一些特徵。但是我們可以發現畫面上下有兩條灰色的邊,這就是我們偷懶沒有把照片的像素處理到一致導致的後果,所以人真的不能懶啊!!

關於進階的用法,還有幾項很重要的技巧,我們下次再來進行說明。






RHINO 練習題 範例--氣炸鍋