AI 魔法禁書目錄
這次我要來介紹如何利用 TemporalKit + EBSynth 來生成影片,雖然說是生成影片,但其實比較算是 video2video,基於原有影片的動作用 AI 產生不同風格的影片。
環境準備
首先要先安裝
TemporalKit,他是
AUTOMATIC1111 的插件,在 Extensions 分頁 → Install from URL 中填入 https://github.com/CiaraStrawberry/TemporalKit 並按 Install 就可以了。
接著去
EBSynth 官網 下載 EBSynth,目前是 Beta Release 免費的,下載下來是一個 zip 檔,我們要用的就是 EBSynth.exe 主程式。
工作流程
準備影片
第一步就是要找一支影片,這邊我就用 mohanshots 用的
同一支影片作練習。
接著,我找了
這個線上去背的網站先幫影片做去背,這步不一定要做,但有去背的話才不會有背景動來動去,成果看起來可能會稍好一點。
處理素材
準備好影片之後,再來就是用 TemporalKit 準備我們的素材,在
AUTOMATIC1111 中切換到 Temporal-Kit 的分頁 (前面安裝完記得重開),並且在 Pre-Processing 選擇我們的影片,如下圖。
接著設定 Pre-Processing 的參數,第一個 Sides 指的是後面做 img2img 是要一次處理幾張圖,直接看下面例子比較清楚。
可以看到 Sides 設定 2 就會是一次 4 張照片綁在一起處理做 img2img,這樣的好處是產出來的人物會比較一致,因為同樣的 prompts 比如 white dress, long hair 兩次生出來的樣子可能不太一樣,但是如果是一次在一張圖畫四個人物,stable diffusion 會偏好產生差不多樣子的人物,可以看看下面的例子。
這裡我用 Controlnet 設定兩個動作,prompts 都是同樣下 white dress, long hair 還有其他修飾詞,第一組我是分開產生兩張圖,第二組我是把兩張圖綁在一起生成,可以發現第一組的背景光影、頭髮顏色有一些不同,而第二組的人物大致上是一致的。不過有時候綁在一起畫也是有例外,也是可能會畫出一個黑衣服,另一個白衣服的。
Pre-Processing 的其他參數都還算好理解,基本上都勾一勾就好,Target Folder 可以寫一個不存在的資料夾,他會幫你創建,位置我是放在 outputs/videos 下面,但不一定要跟我一樣。都設定好就會像下面一樣,然後按右半邊頁面的 Run 按鈕。
img2img
前一步驟跑完之後,在 Target Folder 應該會有一些檔案,input 資料夾會有準備好要做 img2img 的圖片,像下面這樣。
接著在前面的 Pre-Processing 頁面可以按 Send to img2img 按鈕,或是直接打開 img2img 頁面。這時候我們就是要把 input 裡面的圖片全部用同樣的 prompts 做 img2img 產生我們要的角色或是風格,可以利用 img2img 中的 Batch 功能來實現。
首先 Input directory 和 Output directory 就填上先前 Target Folder 底下的 input 和 output 資料夾,其他的不用填。
再來 img2img 的參數可以填平常自己偏好的參數。我要畫的是動漫風格,跟原本影片的風格差比較多,所以我的 Denoising strength 開到 0.75,這可以看自己要調到多少。另外,我的 RAM 不夠所以我還開了 Tiled VAE (RAM 夠大的話可以不用開)。
再來是很重要的 ControlNet,可以把人物的動作固定住不要跑掉,這邊我是用 softedge_hedsafe,測下來跟其他的 softedge 比起來線條比較清晰。其他參數可以視情況調整。
最後就可以按下去讓他產圖,產完的圖會在 Target Folder 的 output 資料夾下。
EBSynth 前置作業
用 img2img 產生好圖片之後,在使用 EBSynth 之前還有一個前置作業,先回到 Temporal-Kit 分頁,選擇最右邊的 Ebsynth-Process 子分頁,在 Input Folder 填上先前設定的 Target Folder,然後按 prepare ebsynth,如下圖。
這時候 TemporalKit 就會幫你把 Target Folder 下面的 0, 1, ... 資料夾的東西準備好,0, 1, ... 這些資料夾是因為我們前面有勾選 split video 所以會把影片切成一段一段分別處理。而準備 Ebsynth 的資料要做的事,主要是把之前 sides 設定 2 綁在一起的四張圖片拆開,放到 keys 裡面,然後把原始影片的每個 frames 圖片抓出來放到 frames 裡面。EBSynth 簡略的工作原理就是你會有幾張 key frame,他會把你的 key frame 根據原始影片像素的移動去做對應的移動,我猜啦,看起來是這樣。
EBSynth
準備好 EBSynth 的資料之後,最後就是打開 EBSynth,點選 Keyframes 右邊的 Select 選擇檔案,這裡選 Target Folder 中 0/keys/keys00002.png 這個檔案,之後 EBSynth 就會自動幫我們帶入底下的參數,再來就是再點選 Video 右邊的 Select 選擇檔案,這裡選 Target Folder 中的 0/frames/frames00000.png 這個檔案,最後應該會像下面這樣,然後按最底下的 Run All。
跑完資料夾 0 之後,就依樣畫葫蘆跑 1, 2, ... 資料夾。
最後一步
最後一個步驟,就是回到剛剛 Temporal-Kit 分頁的 Ebsynth-Process 子分頁,按下 recombine ebsynth 就完成了!!!
結果展示
下面展示我把原始跳舞的影片轉成【天國大魔鏡】裡面的 貴留子(Kiruko) 在跳舞的影片(我這邊只有用原始影片中的四秒片段)。下面兩個 gif,第一個是有背景的,第二個是去背過的,衣服的顏色中間有幾張變成黑色,而且人物的表情、頭髮、手比較飄忽不定,下半身的動作到是還不錯,這些其實可以在 img2img Batch 生成完之後,再把那些圖片自己重新 img2img 產圖,可以再更順暢一點,但我這邊是沒有手動修改,就是上面的流程一鏡到底。
Demo (without background)