ComfyUI初階②基本操作手冊

2023/11/10閱讀時間約 10 分鐘

●書接上回

本篇講解如何建立一條基本的工作流程,安裝方式見上一篇。兩篇看完就可以安心開始進行基礎的文生圖,也配有影片。



你對ComfyUI的印象是甚麼?

我的話,在我被逼著開始用它之前,我對它的印象是這樣的……

乍看複雜到我放棄思考……

乍看複雜到我放棄思考……

說老實話,我第一次看到這個畫面的時候,立刻默默地把它又關掉了,感覺跟走錯KTV包廂一樣,只想趕快跑。

raw-image

但其實,這個強大的工具並沒有想像中那麼難理解,反而是一個最佳的由淺入深學習AI圖像生成的平台。不要被這個畫面嚇跑了,它其實,也可以長這樣。👇

最基本的workflow,七個方塊而已。

最基本的workflow,七個方塊而已。


所以ComfyUI是甚麼?

Comfy它是一個用功能模組節點來編輯可視化流程的AI繪圖-圖形使用者介面(GUI)。

它的優點除了本身精簡輕巧、執行速度快、資源消耗較低,還具有更加直觀的使用方式、更加自由的自動化流程、以及更加方便的工作流程分享。


白話一點來說,跑得快、能用更低的電腦資源跑圖,可以看清楚完整的pipline架構,

隨心所欲創造屬於自己的生產流水線,透過在comfy讀取一張AI生成的圖片,可以得到生成這張圖時的完整流程,但它還有一個更輕便的方式,就是工作流程的 json檔,這是一種超級輕巧的資料交換格式,在各種資料傳輸的領域中受到廣泛應用。

(進階閱讀:JSON是什麼?輕量級的資料交換格式基本介紹|天矽科技網頁設計




基礎使用方式

想加深對運作邏輯的理解的朋友,可以打開comfy跟著我一起做,我們來拉一個基礎的工作流程,也就是workflow。

這邊推薦搭配影片,可以看清楚操作方式。

raw-image







如果你的畫面不是空白的,點一下clear就可以清空。

模組搜尋框(nodes search)

模組搜尋框(nodes search)

在空白處用左鍵點兩下就可以打開模組搜尋框,光看名字不清楚是甚麼東西的話,可以都叫出來看看,不對再砍掉就好。

滑鼠滾輪可以縮放畫面。

左鍵長按著模組方塊可以拖動方塊,長按著空白處可以拖動畫面。

按住shift選中多個方塊可以一起拖動,同時會讓方塊對齊背景的網格,有強迫症的朋友可以安心了。

raw-image

這張是官方提供的快捷鍵表,就在comfy的github下面,或者是你從安裝comfy的資料夾裡面找到README點開,是同一份文件。


現在,回想一下,在你的認知中,
AI生成圖像會需要輸入哪些元素、設定哪些參數、經過哪些關卡?




建立基礎workflow

我們先把想到的東西都叫出來擺在畫面上。

首先我會想到prompt,那我就打……欸,不是打prompt,而是text encode來找,第一個就是基礎的文字編碼器,全名CLIPTextEncode

raw-image

但除了正向提示詞之外,有時候還需要設反向提示詞嘛,那麼可以再重複一次剛才的搜尋+新增動作,或是按著alt拖曳一下這個框,就可以複製一個出來。

擔心會分不出來哪個是哪個的話,comfy是可以改模組方塊的顏色跟名字的。我通常就改個常見的綠色跟紅色區分一下。


接下來還有甚麼是基礎生成流程中,必須要有的?我會想到模型——大模型,那大模型的英文是checkpoint,可以用這個來搜尋。

raw-image

在checkpoint loader跟loader simple之間我選擇simple,CheckpointLoaderSimple,現在要建構的是最簡單的流程,我手上沒有config要放,所以選擇使用simple。


有了模型跟提示詞,下一步呢?想一下之前我們聊過的diffsion model生成原理,最重要的那個概念,整張圖的基礎是甚麼?

raw-image

雜訊嘛~那麼我們要給它一個初始雜訊,在這邊不叫noise,它叫做latent image,EmptyLatentImage

打開就可以看到熟悉的設定畫布尺寸,還有一次算幾張的欄位。

raw-image


下一個你會想到甚麼?step?cfg?guidance scale?seed?還是sampler?

這些參數在comfy都被整合在KSampler裡面,這個方塊之重要。你會看到點兩下之後出現的列表,他就排在第一個

raw-image

真正在進行降噪生成的並不是大模型,而是在這個區塊中,大模型是作為一個被預先訓練好的資料庫,供sampler來調用,後面接線的時候這個邏輯就會很清楚了。


到這邊前端的輸入跟中端的處理都打開了,下一步我應該需要一個output的方塊,用來顯示生成結果嘛。


這裡必須要先提到一個之前在基礎課一直被我略過的東西——Decoder

有去看過李宏毅老師的課的話,就會知道,其實在整個生成過程中,雜訊是以人類讀不懂的型態來存在的,你可以叫它向量,或是中間產物,或是latent representation,總之它是一個機器能夠辨識,但對人類而言並不是視覺影像的型態。

當這個中間產物經過前面所有流程後,就需要經過一個decoder來把它解碼為人類能夠理解的視覺影像。

在comfy,它叫做VAEDecode

raw-image

那現在我們也有decoder了,最後一步就是加上output。

comfy裡面你可以選擇用preview imagesave image,save會自動把圖片存到output資料夾裡面,preview不會儲存,但也可以在生成後右鍵選擇儲存,只保留你滿意的圖。(在無限生成模式的時候可能就不太適合XD)


接下來只要把這些方塊連接起來,就可以開始工作了!

raw-image

那,怎麼接……?




Comfy連連看

raw-image



現在的comfy有幫你做基礎防呆,大部分的節點都有顏色區分。但是,我們還是要來理一遍,為什麼要這樣接,因為這才是幫助你理解AI繪圖工具運作邏輯的關鍵。



raw-image

模組方塊左邊的是輸入右邊的是輸出


我們一樣從頭開始,首先是prompt,我們的文字,需要經過文字編碼器來轉換成向量,那麼就把模型中的CLIP輸入到prompt這邊來。

raw-image

接著encode好的prompt,輸入到sampler裡面。接著把大模型和初始雜訊也一起送進去。

raw-image
raw-image


開始denoise前,記得看一下sampler這邊的設定,control_after_generate是在控制每次生成後,seed要不要變動。

說真的,我一直到用了comfy之後才搞清楚,原來sampler(採樣器)scheduler(調度器)是兩個東西,以前一直以為是同一個東西,兩個不一樣的名字。



最後,把降噪完的雜訊,也就是那個中間產物,輸出到decoder裡。

raw-image
raw-image


那我們用甚麼來decode它?用模型裡面自帶的vae來decode也可以,或是你想另外讀取一個vae也可以,只是要拉出來,增加一個VAELoader的方塊。



到這邊,最基礎的工作流程就完成了!🎉


然後可能有特別聰明的朋友已經發現了……嘿,對,你點一下那個Load Deault它就會自動給你排一串這樣的基礎流程。

但是自己親手拉一遍完整的流程圖,才能確實把東西學進腦袋裡,還是推薦大家跟著我前面說的一起做一遍。


現在,寫個prompt,調整一下參數,測試看看你的流程圖能不能跑起來吧!




實用小技巧

最後來分享一個實用的小技巧。

是我剛開始不是很介意,刷了一陣子之後才想起來應該要去改的東西——設定儲存圖檔的資料夾跟檔案名稱

comfy的檔名語法表在那個使用手冊有說明,時間跟日期還蠻好懂的嘛,這邊我就只解釋一下關於其他的數值要怎麼放上檔名。

(google網頁翻譯)

(google網頁翻譯)

(google網頁翻譯)

(google網頁翻譯)

它的基本結構是:%node_name.widget_name%


首先你要開啟Properties Panel,也就是屬性面板,在模組方塊上面按右鍵可以找到。

raw-image

那這個node name要寫的是每個模組方塊上面的這個標題(Title),如果你沒有改過它的名字,或是你讀取的workflow的作者沒有改過它的名字,那就必須把這整串包含空格都打上去,必須要一模一樣才會成功顯示。

如果你覺得太長,或是同時有兩個以上的方塊是同樣的名字,那標題跟最下面的Node name for S&R,可以任選一個作修改。

改SR這個是不會動到畫面上方塊的標題列,如果改標題的話就是畫面上的標題也會跟著改變。並且SR這個名稱如果維持預設的話,寫進語法內是讀取不到的,至少要變更過一次才有效。這是我目前測試的結果。


widget name則是參數的名稱,一樣需要打完整,底線也要打。每個語法只能指定一個方塊內的一個參數,所以比方說如果你要寫畫布長寬,就得分開寫latent的長度跟latent的寬度。

raw-image



只要沒設定成功,就會看到檔名變成一大串語法,

←like this。


我寫了一些基本組合放在這邊,有需要的朋友可以自己複製一下。



日期:%date:yyyy-MM-dd%

時間:%date:hhmmss%

畫布尺寸(長x寬):%Empty Latent Image.width%x%Empty Latent Image.height%

SDXL的seed:%SDXL Sampler v3 (Searge).noise_seed%

一般的seed:%KSampler.seed%

大模型檔名:%Load Checkpoint.ckpt_name%

Lora檔名:%Load LoRA.lora_name%

我現在用的格式:%date:yyyy-MM-dd%/%date:MMdd%_%Empty Latent Image.width%x%Empty Latent Image.height%_%SDXLSampler.noise_seed%
按照日期建資料夾,然後顯示日期、長寬、seed。




結語

Comfyui的起手前置可能有點麻煩,它的介面可能乍看之下有點嚇人,但我真的建議大家用用看,真的好用,開得快、關得快、跑圖也快,消耗資源少,你電腦配備不用很頂,也比較不會在無限跑圖的時候,遇到記憶體不足的問題。

開始接觸comfy之後,我是變得挺懶得開SD的,一方面是run甚麼都比comfy久一點,一方面是因為它之前莫名其妙壞掉,刪掉重裝的時候我完全沒留checkpoint跟lora那些當初載老半天的東西……現在有點不想面對。😭


希望這篇文章有幫助到你,有任何問題歡迎在文章下方或影片下方留言。
也歡迎跟我分享你的使用心得!

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