2023-05-28|閱讀時間 ‧ 約 9 分鐘

利用 AI 生成影片: TemporalKit + EBSynth


AI 魔法禁書目錄

這次我要來介紹如何利用 TemporalKit + EBSynth 來生成影片,雖然說是生成影片,但其實比較算是 video2video,基於原有影片的動作用 AI 產生不同風格的影片。
我主要是參考 Reddit 上 mohanshots 的文章 以及 TemporalKit github 頁面中推薦的這個教學影片,記錄一下練習筆記。

環境準備

首先要先安裝 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 選擇我們的影片,如下圖。
Temporal-Kit 分頁
Temporal-Kit 分頁
接著設定 Pre-Processing 的參數,第一個 Sides 指的是後面做 img2img 是要一次處理幾張圖,直接看下面例子比較清楚。
Sides: 1
Sides: 2
可以看到 Sides 設定 2 就會是一次 4 張照片綁在一起處理做 img2img,這樣的好處是產出來的人物會比較一致,因為同樣的 prompts 比如 white dress, long hair 兩次生出來的樣子可能不太一樣,但是如果是一次在一張圖畫四個人物,stable diffusion 會偏好產生差不多樣子的人物,可以看看下面的例子。
同樣的 prompt 產生的第一張圖
同樣的 prompt 產生的第二張圖
兩張圖綁在一起生成
這裡我用 Controlnet 設定兩個動作,prompts 都是同樣下 white dress, long hair 還有其他修飾詞,第一組我是分開產生兩張圖,第二組我是把兩張圖綁在一起生成,可以發現第一組的背景光影、頭髮顏色有一些不同,而第二組的人物大致上是一致的。不過有時候綁在一起畫也是有例外,也是可能會畫出一個黑衣服,另一個白衣服的。
Pre-Processing 的其他參數都還算好理解,基本上都勾一勾就好,Target Folder 可以寫一個不存在的資料夾,他會幫你創建,位置我是放在 outputs/videos 下面,但不一定要跟我一樣。都設定好就會像下面一樣,然後按右半邊頁面的 Run 按鈕。
Pre-Processing 參數設定

img2img
前一步驟跑完之後,在 Target Folder 應該會有一些檔案,input 資料夾會有準備好要做 img2img 的圖片,像下面這樣。
Target Folder 下的檔案
input
接著在前面的 Pre-Processing 頁面可以按 Send to img2img 按鈕,或是直接打開 img2img 頁面。這時候我們就是要把 input 裡面的圖片全部用同樣的 prompts 做 img2img 產生我們要的角色或是風格,可以利用 img2img 中的 Batch 功能來實現。
img2img Batch 參數
首先 Input directory 和 Output directory 就填上先前 Target Folder 底下的 input 和 output 資料夾,其他的不用填。
img2img 參數
再來 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,如下圖。
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。
EBSynth
跑完資料夾 0 之後,就依樣畫葫蘆跑 1, 2, ... 資料夾。

最後一步
最後一個步驟,就是回到剛剛 Temporal-Kit 分頁的 Ebsynth-Process 子分頁,按下 recombine ebsynth 就完成了!!!

結果展示

下面展示我把原始跳舞的影片轉成【天國大魔鏡】裡面的 貴留子(Kiruko) 在跳舞的影片(我這邊只有用原始影片中的四秒片段)。下面兩個 gif,第一個是有背景的,第二個是去背過的,衣服的顏色中間有幾張變成黑色,而且人物的表情、頭髮、手比較飄忽不定,下半身的動作到是還不錯,這些其實可以在 img2img Batch 生成完之後,再把那些圖片自己重新 img2img 產圖,可以再更順暢一點,但我這邊是沒有手動修改,就是上面的流程一鏡到底。
Demo (with background)
Demo (without background)

如果這篇文章對你有幫助,不要吝嗇給我一個大大的愛心❤️ 歡迎追蹤我的 twitter、pixiv、patreon😆 https://linktr.ee/novelaimagician
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.