雖然說 AnimateDiff 可以提供動畫流的模型演算,不過因為 Stable Diffusion 產出影像的差異性問題,其實還是造成了不少影片閃爍或是不連貫的問題。以目前的工具來看,IPAdapter 再搭配 ControlNet OpenPose 剛好可以補足這個部分。
前期準備工作
可以直接使用我的 Workflow 進行測試,安裝的部分可以參考我先前的這篇文章 [ComfyUI] AnimateDiff 影像流程。
另外,此次工作流程中,有使用到 FreeU 這個工具,強烈推薦大家安裝。
ComfyUI 本身有內建 FreeU 的 Node 可以使用!
另外 IPAdapter 也需要額外安裝,作者有兩個版本,都可以用,不過舊的版本之後不更新了。
在使用 IPAdapter 之前,請先去下載相關的模型檔案,
SD1.5 需要以下檔案,
- ip-adapter_sd15.bin
- ip-adapter_sd15_light.bin 當你的提詞(Prompt)比輸入的參考影像更重要時,可以選用這個模型。
- ip-adapter-plus_sd15.bin 當你要參考整體風格時,可以選用這個模型。
- ip-adapter-plus-face_sd15.bin 當你只想要參考臉部時,可以選用這個模型。
SDXL 則需要以下檔案,
- ip-adapter_sdxl.bin
- ip-adapter_sdxl_vit-h.bin 雖然是使用 SDXL 的基底模型,但使用這個模型還是會需要 SD1.5 的文字編碼器(Text Encoder)。
- ip-adapter-plus_sdxl_vit-h.bin 說明同上。
- ip-adapter-plus-face_sdxl_vit-h.bin 說明同上,但這個是僅參考臉部。
以上的檔案,請放置到 custom_nodes/ComfyUI_IPAdapter_plus/models
或是 custom_nodes/IPAdapter-ComfyUI/models
底下。
另外,由於需要 CLIP 工具,所以以下兩個檔案請放到 ComfyUI/models/clip_vision/
底下,檔案名稱你可以自行修改,用以區別是 SD1.5 或 SDXL。
- SD1.5 model,這個檔案在 SDXL 的模型結尾為 vit-h 的模型皆需要他。
- SDXL model
AnimateDiff + IPAdapter
我們先看一般 AnimateDiff 的設定,
由於要使用到 IPAdapter 這個部分,所以要找地方把他放進去。請注意!這邊的範例是使用的版本是 IPAdapter-ComfyUI,你也可以自行更換成 ComfyUI IPAdapter plus。
以下是把 IPAdapter 與 ControlNet 接上的部分流程,
兩個 IPAdapter 的接法大同小異,這邊給大家兩個對照組參考一下,
IPAdapter-ComfyUI
ComfyUI IPAdapter Plus
這樣你大概可以瞭解 AnimateDiff 與 IPAdapter 的連接方法了。
ControlNet + IPAdapter
接著,我們從 IPAdapter 輸入的東西,需要一個 OpenPose 的 ControlNet 來控制,用以達到更好的輸出。
如果你的 image
輸入來源原本就是骨架圖片的話,那麼你就不需要 DWPreprocessor 這個預處理器。不過由於我的輸入來源直接就是某一個影片檔案,所以,這邊就交給預處理器去幫我處理圖片。
而在 IPAdapter 的 unCLIPConditioning 的正向提示詞(positive
)需要把他接到 ControlNet 這邊,以下的示意流程給大家參考一下,這樣我們的 IPAdapter 才會進入 ControlNet 的控制。
AnimateDiff Motion Lora
為了更流暢的動畫呈現,所以我使用 Motion Lora 來做一點漸變效果。如果你不想要也是可以,這邊沒有一定要使用。
我在這邊選用的是 v2_lora_ZoomOut.ckpt
這個效果,你可以自行試試看其他的動態 Lora 效果。因為我不希望他對於畫面帶來太多的影響,所以權重的部分我僅給他 0.3
。
實際測試下來,如果你的整體動作相當複雜,建議不要使用。
組合流程
最後,我們把這些流程組合起來,
- 讀取影片、模型、提示詞,設定 AnimateDiff Loader。
- 設定 IPAdapter。
- 設定 ControlNet。
- 設定 Lora,如果你不要的話,也可以把他
byPass
。 - 設定最後輸出,修復臉部。
最後,我們做輸出與臉部修復。
小結
這邊之所以僅使用 OpenPose 的原因在於,我們是使用 IPAdapter 參考了整體風格,所以,倘若再加入 SoftEdge 或 Lineart 這一類的 ControlNet,多少會干涉整個 IPAdapter 的參考結果。
當然,這個情況也不是一定會發生,你的原始影像來源如果沒有非常複雜,多用一兩個 ControlNet 也是可以達到不錯的效果。