ComfyUI學(xué)習(xí)筆記02 | 一文看透Workflow
什么是ComfyUI的Workflow
Workflow是ComfyUI的精髓。所謂Workflow工作流,在ComfyUI這里就是它的節(jié)點(diǎn)結(jié)構(gòu)及數(shù)據(jù)流運(yùn)轉(zhuǎn)過程。

上圖,從最左邊加載模型開始,經(jīng)過中間的CLIP Text Encode對(duì)關(guān)鍵詞Prompt做處理,加入一個(gè)初始的Latent Image,然后是采樣器,VAE解碼,最后得到生成的圖像。
通過節(jié)點(diǎn)的方式,除了類似webui那樣去填寫參數(shù),還可以觀察處理過程,這是ComfyUI設(shè)計(jì)巧妙之處。每次生成的時(shí)候,當(dāng)程序運(yùn)行到某個(gè)環(huán)節(jié)時(shí),該環(huán)節(jié)對(duì)應(yīng)的節(jié)點(diǎn)就會(huì)自動(dòng)高亮。各節(jié)點(diǎn)按當(dāng)前運(yùn)行狀態(tài)依次高亮,非常有利于理解生成式AI模型(Stable Diffusion)的基本原理。

如上圖,當(dāng)運(yùn)行到采樣器在工作時(shí),采樣器KSampler節(jié)點(diǎn)的綠色框高亮,此時(shí)正對(duì)應(yīng)著命令行窗口中的生成進(jìn)度。
類比webui的使用體驗(yàn):
調(diào)好參數(shù)
點(diǎn)擊生成
等待結(jié)果
除了觀察命令行窗口能獲得一些生成進(jìn)度中的信息,在webui界面上,基本還是傳統(tǒng)軟件的使用思維:

Workflow的快速“復(fù)現(xiàn)”
1. webui中的png info
先回憶一下webui,當(dāng)想要復(fù)現(xiàn)一張圖像的生成參數(shù)時(shí),可以把這張圖拖到png info中進(jìn)行查看。
例如在C站中查看這張AI聊齋的圖:

可以直接右鍵保存它,然后拖到webui的PNG Info里,即可查看包含關(guān)鍵詞在內(nèi)的所有參數(shù)。

SD webui是把這些信息存在了PNG文件的chunk里,可以簡(jiǎn)單理解:PNG文件里某個(gè)數(shù)據(jù)塊,是可以存儲(chǔ)額外的文本信息的。
現(xiàn)在最新的webui似乎對(duì)存放的字段做了更新,直接右鍵點(diǎn)擊圖片,打開“屬性”,在“詳細(xì)信息”的“備注”里就可以查看:

當(dāng)然很多通用的圖像軟件都可以查看,例如XnView,在其自帶的Exif Tools里就可以看:

額外知識(shí):這些信息也可以從圖片中抹去,詳見去年寫的這一篇:
關(guān)鍵詞保護(hù)!如何從StableDiffusion(webui)生成圖片中抹去prompt信息
2.?ComfyUI中的Workflow
回到ComfyUI,每次生成的這些參數(shù),在ComfyUI里也可以用類似的方式保存和讀取。
用ComfyUI生成一張圖:

同樣用右鍵查看屬性:

沒有找到相關(guān)信息,沒關(guān)系,這只能說明Windows資源管理器能讀取的字段里沒有。用XnView MP打開它:

這就能看到了,它分了兩個(gè)字段,一個(gè)是Prompt,里面包含類似png info的信息:

還多了一個(gè)字段是Workflow:

太長(zhǎng)刪掉了一些。能看出來里面存放的就是那些節(jié)點(diǎn)信息,例如編號(hào)id、位置坐標(biāo)pos等。當(dāng)ComfyUI加載這些信息時(shí),就能完美”復(fù)現(xiàn)“所有的節(jié)點(diǎn)結(jié)構(gòu),以及每個(gè)節(jié)點(diǎn)中的各項(xiàng)參數(shù)。
3. ComfyUI加載生成圖片中的Workflow
webui通過png info來反查參數(shù),那么在ComfyUI中呢,更簡(jiǎn)單了,直接把生成的圖拖到網(wǎng)頁窗口中即可。

拖進(jìn)窗口放手可得:

提醒:拖進(jìn)去前如果需要的話記得備份之前的Workflow。
另外,ComfyUI也可以專門保存Workflow文件,點(diǎn)擊側(cè)邊欄中的Save和Load,進(jìn)行保存與加載:

保存后得到的文件默認(rèn)是workflow.json,可以用文本編輯器打開查看:

4. 把Workflow信息與工作界面截圖存在一起
Workflow信息除了能單獨(dú)存成json文件,或者存在生成的圖片中,還能存在工作界面截圖中,這樣更加直觀:

安裝這個(gè)插件即可:ComfyUI-Custom-Scripts?
https://github.com/pythongosssss/ComfyUI-Custom-Scripts
該插件有很多腳手架功能,保存Workflow Images是其中一項(xiàng)。

https://github.com/pythongosssss/ComfyUI-Custom-Scripts/tree/main#workflow-images
ComfyUI插件的安裝方法,放在下一課中。
Workflow資源
在這個(gè)網(wǎng)站里有大量ComfyUI Workflow,可以直接下載,然后用本課的方法打開。https://comfyworkflows.com/

Workflow與Data Driving
多說兩句,webui的png info,存的是data,是靜態(tài)的,更像是web2.0時(shí)代的數(shù)據(jù)驅(qū)動(dòng)。在使用webui時(shí),關(guān)注點(diǎn)是生成的圖片結(jié)果,以及相應(yīng)的關(guān)鍵詞與各項(xiàng)參數(shù)。如傳統(tǒng)軟件一樣,還是相對(duì)黑盒。
而ComfyUI對(duì)Workflow的存取方式,在關(guān)注數(shù)據(jù)的基礎(chǔ)上多了一層工作流,即除了結(jié)果,還關(guān)注內(nèi)部過程。這可能用多了就會(huì)有體會(huì),會(huì)引導(dǎo)你下意識(shí)的去想著如何優(yōu)化或改造工作流,帶來更多的靈活可能性。
另,節(jié)點(diǎn)式與dataflow或workflow也不是新事物,我2005年開始接觸的節(jié)點(diǎn)式編程環(huán)境MaxMSP,從其誕生距今已經(jīng)三十多年了。

Cheers??

公知小抖B:實(shí)驗(yàn)編程
社群加V:floatbug
群將滿,加V煩請(qǐng)注明:來源(嗶哩嗶哩)、學(xué)校單位、專業(yè)行業(yè)、作品集/B站/小紅書/Ins/Tw等,便于高效交流謝謝。?