我是海辛,最近在嘗試用 AI 将寫實視頻風格化,上面做的這個效果在 DY 拿到了 17 萬喜歡和 1.8 萬評。很多朋友希望我能分享是怎麽做的,剛好最近一直在探索将 AI 用于動畫制作的生産,積累了許多 demo,決定趁機做一個梳理總結。
目前用 AI 制作動畫有許多不同的路徑,大緻包括:A. 根據參考視頻進行風格遷移、B. 文本生成動畫、C. 根據靜态圖生成動畫等。不同的方式也存在不同的技術路徑。(在每一大類的末尾,我都會附上我推薦的教程,這些教程都是免費的,對我在探索的過程中起了很大的幫助。)
01 根據參考視頻進行風格遷移
代表工具:Runway Gen-1,Stable Diffusion + EbSynth,Rerender,Warpfusion
比起從文本生成視頻,我更關注根據參考視頻生成 AI 動畫,因爲視覺藝術業内的工作流程一直是從草稿【畫面】細化到成品【畫面】;而從文本生成畫面的工具,由于可控性太低,會導緻生産效率也很低。
放到 AI 時代的視角來看,從電影分鏡到成片,本質是一種 style transfer。而這就是 Runway Gen-1 在做的事。
1. Runway Gen-1
Runway Gen-1 [ 1 ] 就是建立在風格遷移的基礎之上的工具,提供原視頻 + 參考圖,就可以生成一個針對該參考圖的新的視頻。Karen X.Cheng 在她的 twitter 賬戶上分享了很多自己的測試 [ 2 ] 。
效果還不錯,但似乎目前的 Gen-1 更多隻能停留在玩具的水準,我在實際使用過程中,發現 Gen-1 沒有辦法完全按照我提供的參考圖進行風格的遷移,導緻基本不能用到真實的項目中。
比如我提供了鈴芽之旅中的鏡頭,以及我希望轉繪成的真人風格,最後 runway 生成的畫面不是很符合我的預期…… ↓
2. Stable Diffusion + EbSynth
如果想讓 AI 穩定地按照我希望的風格進行遷移,我不能依賴于目前的 Gen-1。我也不能用 Stable Diffusion 去跑畫面的每一幀,如果重繪幅度高(即參考視頻對 AI 的影響低,AI 發揮空間大),生成的畫面抖動會非常厲害;如果重繪幅度低(即參考視頻對 AI 的影響高,AI 發揮空間小),生成的畫面雖然不抖了,但和原視頻區别也不大,這種 AI 動畫也沒什麽太大意義。
于是我想,提高穩定性的思路不是讓 AI 算每一幀,而是讓 AI 算關鍵幀。關鍵幀以外的部分通過其他工具來根據 AI 算的關鍵幀來進行遷移。這樣才能既保證 AI 的想象力,又能節省算力,又能維持畫面穩定。
在這個過程中我想起了老牌開源 AI 風格遷移工具 EbSynth [ 3 ] 于是我打算用 Stable Diffusion 來繪制關鍵幀,再用 EbSynth 根據原視頻 + 關鍵幀将其餘幀補齊。
确定合适的關鍵幀是 key,通常我的經驗是,當畫面引入全新的信息時就要新建一個關鍵幀。(eg:側面鏡頭時擡低頭不算引入新的信息,但側面鏡頭中的人物忽然扭脖子轉到正面,就是引入了全新的信息)
在上面這個測試裏,我每個鏡頭都隻用了 1-2 個關鍵幀,因爲是側面鏡頭的原因,我需要設置的關鍵幀很少,基本隻在角色睜眼和閉眼的時候。
這個測試也得到了 AK 的轉發。AK 專注于 AI 研究,在 twitter 上擁有 22+ 萬關注者,現于 HuggingFace 進行 " 每日 AI 論文 " 更新
這個工作流也是目前我最喜歡的方式。在這套玩法上面,還可以結合傳統的影視摳像工具進行疊加,從而指定 AI 僅對畫面部分内容進行風格遷移。
上面這個視頻中,我先将人物進行動态摳像,然後隻對人物進行 AI 渲染。目前動态摳像生成遮罩的工具中,我最常用的是 Runway 提供的遮罩生成功能,免費且效果好。
這套流程在 Stable Diffusion 的
Reddit 版面也得到了很多關注
3. Rerender
Stable Diffusion + EbSynth 這套工作流中,最重要的是保持不同關鍵幀中的信息要連續和一緻,目前基于 diffusion 模型算不同的關鍵幀,算完後還是需要人手動來修。所以目前的技術方案還是會需要人來 " 肝 ",其實 " 肝 " 的工作量就是調整關鍵幀之間信息的連續性。
最近看到一個不錯的解決方案:Rerender A Video [ 4 ] 。這個解決方案也認爲并不應該讓 diffusion 模型來算每一幀,而是隻算關鍵幀。Rerender A Video 添加價值的地方是:TA 會自動判斷需要哪些關鍵幀,并且保證每個關鍵幀之間是相似的。
Rerender 這個工具我還沒有機會嘗試,但是我很認可他的解決思路。目前這個工具在 Hugging Face 上可以測試 demo [ 5 ] ,完整代碼尚未開源,值得持續關注。
4. AI + AE
最近我發現 Reddit Stable Diffusion 版面裏 AI 動畫特效做得好的人,大多數都是影視 / 遊戲 / 特效的背景。其實這是合理的,因爲他們知道如何将 AI 生成的畫面結合到其他管線的工具中,從而提升畫面效果。
比如下面這個視頻 [ 6 ] 是一名達拉斯的影視從業者根據 Marc Rebillet 的著名打碟視頻 Your New Morning Alarm(你的早安鬧鈴) [ 7 ] 制作的 AI 渲染版,他結合使用了 Warp Fusion(一種基于 SD 的動畫腳本,由 Sxela 開發 [ 8 ] )+AE 轉場效果 +PR 剪輯。
忽然意識到可以用更多影視行業的特效和剪輯工具後,我更加受到啓發,于是根據 DY@子康老師的滑闆視頻,制作了一個 AI 動畫版本。
在這組鏡頭中,我測試了不同鏡頭裏對 AI 抖動幅度不同的控制力會帶來怎樣的效果差異,我發現運動幅度越大的鏡頭,AI 閃爍反而會加強鏡頭的動态效果。
當我希望畫面更穩定的時候,比如鏡 2,我隻會用 Stable Diffusion 渲染一個關鍵幀,然後使用 EbSynth 來補完剩餘的畫面;當我希望畫面動态感更強的時候,比如鏡 1 和鏡 3,我會用 SD 渲染多個關鍵幀,從而帶來幀與幀之間更多的差異。
鏡頭 4 換臉的部分,我通過使用 Photoshop Generative Fill 的功能,對畫面進行局部修改(inpainting)後,使用 EbSynth 來生成多個鏡頭片段,再在 PR 裏進行剪輯,從而完成比較連續絲滑的換臉。
鏡 1、2、4 的畫面過度是在 AE 裏完成的,這個轉場效果需要使用到鏡頭本身的深度視頻,深度視頻和遮罩我目前都使用 Runway 來幫我生成。
這個作品在子康的 DY 上線後
24 小時内拿到 10 萬點贊和超 1 萬條評論
推薦教程:
1. Runway Academy:Runway 的官方教程鏈接,裏面整合了各種 Gen-1, Gen-2 的使用方式:https://academy.runwayml.com/gen1
2. Stable Diffusion 動畫推薦教程:都在 Reddit /stablediffusion 子論壇,這個子論壇的特點是發作品需要帶上自己的工作流。這個不成文的規定使得這個論壇充滿了很有價值的一手經驗:https://www.reddit.com/r/StableDiffusion/
3. EbSynth 推薦教程:EbSynth 功能很簡單,跟着官方的教程一下就能學會(https://www.youtube.com/watch?v=0RLtHuu5jV4&t=65s)如果想了解 EbSynth 的進階用法,我推薦 Academy of Edits 的教程:https://www.youtube.com/watch?v=6FN7fKlJcPE&t=193s
4. Warpfusion 推薦教程:講得最清楚的是 Prompt Muse(https://www.youtube.com/watch?v=0AT8esyY0Fw&t=797s)你也可以在開發者 Sxela 的 DC 頻道裏直接問他更多的問題:https://discord.gg/vXBTtzmeJd
02 AI 生長類動畫
代表工具:Disco Diffusion, Stable Diffusion Deforum
此類工具是用傳統 AI 生成圖像工具,進行畫面的批量生成,通過指定不同關鍵幀上的畫面内容,和關鍵幀上的鏡頭運動,從而使得 AI 能生成連續的動畫。
如上圖 0= [ "aaa" ] , 100= [ "bbb" ] , 就是在第 0 幀是 aaa 的畫面,在第 100 幀是 bbb 的畫面。這種方式制作出來的動畫是一鏡到底,由于畫面在生成的過程中不斷解離和重新生成,成爲了一種很有趣的藝術表達形式。因爲實驗性很強,所以很适合拿來做實驗動畫,或者 MV。
我在去年有嘗試用這種方式制作短片的故事動畫,我的思路是,先将故事念一遍,根據錄音計算每一句話需要多少秒,對應會需要生成多少幀,然後根據對應的幀來描述畫面。(非常早期的生成案例了,請各位輕拍。)
後來我發現,控制 AI 生成的參數和影視鏡頭語言其實呈現一定的映射關系, 比如 Translation_X 對應的是畫面左移或右移;Translation_Y 對應的是畫面上移或下移;Translation_Z 對應的則是鏡頭的推拉。Deforum 的官方操作指南裏有很詳細的各個參數和畫面鏡頭運動的對應關系 [ 9 ] 。
這種類型做到登峰造極程度的是 Youtube 頻道主 DoodleChaos 給 Resonate 的歌曲《Canvas》做的動畫音樂視頻 [ 10 ] 。
整個 AI MV 的制作邏輯是以音樂的節奏點作爲 AI 鏡頭變化的關鍵幀,以歌詞的内容作爲各段的文本描述。在 AI 生成完畫面後,DoodleChaos 使用了 FlowFrames 來給 AI 制作的視頻進行升幀,使得 FPS 從 15 增加到了 30。詳細的項目介紹可以在 DoodleChaos 的 Patreon 裏看到 [ 11 ] 。
按照 DoodleChaos 的方式,我重制了一版《Canvas》的 MV 視頻。
1. Deforum 的官方 Notebook 可以讓你了解到各個參數是做什麽的:https://deforum.github.io/animation.html
2. 目前還有一些工具可以幫助你直接提取歌曲中的關鍵幀,比自己翻譯可能來得會快很多:https://www.chigozie.co.uk/audio-keyframe-generator/
03 根據靜态圖生成動畫
1. 讓肖像畫說話
代表工具:D-ID, Movio, Artflow
讓一張靜态的肖像畫動起來說話的功能,應該是 AI 動畫裏成熟得最早的,包括:D-ID, Movio, Artflow AI 這些平台都提供了類似的功能,底層的算法大多基于 First Order Motion [ 12 ] 進行開發。
基于這類産品做的内容,效果最好之一的有汗青老師的 AI Talk 系列 [ 13 ] 和《如果哈利波特是巴黎世家拍的》 [ 14 ] 。
2. 讓靜态圖(随機)動起來
代表工具:Pika Labs, Gen-2
底層技術大概是 Animatediff [ 15 ] ,支持根據單張圖輸入其随機動态效果,有很多人結合 Midjourney + Gen-2 來制作一些視頻,可能可以用于一些前期概念的 previs 或者一些營銷場景的動圖制作。但由于不能精準控制畫面内容,所以對于目前工業界的幫助還不是很顯著。
第三部分的工具功能非常有潛力,最近有許多用 Gen-2 做的電影預告片受到業内外很多關注。不過,做電影預告片是一個非常讨巧的方式,因爲不需要前後鏡頭有很強的連貫性,所以在體裁上還是會比較局限。
1. D-ID, Movio, Artflow 這些工具的使用方式都很直接,基本上手就能直接會,所以就沒有推薦教程了。
2. 針對 Gen-2 我目前看到最好的分享是 Nicolas Neubert @iamneubert 在 Twitter 上的分享:https://twitter.com/iamneubert/status/1684989102213476359 他本人也已經用 Midjourney + Gen-2 的工作流做過非常好的預告片案例了。
AI 動畫這個領域内目前我看來離工業界最近的幾篇核心論文就是:
1. Runway Gen1:Structure and Content-Guided Video Synthesis with Diffusion Models [ 16 ]
2. AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning [ 15 ]
3. First Order Motion Model for Image Animation [ 12 ]
論文鏈接我都附在了本文末尾。
希望這篇文章可以對你有所幫助。目前我也正在用 Gen-2 做一些影視及廣告項目,如果順利的話,應該可以在不久後和大家分享成果和經驗。如果你想更及時地看到平時我的各種嘗試的話,歡迎關注我的微博 @海辛 Hyacinth。
文章參考:
[ 1 ] Runway:https://app.runwayml.com/
[ 2 ] Karen X. Cheng:https://twitter.com/karenxcheng
[ 3 ] EbSynth:https://ebsynth.com/
[ 4 ] Rerender A Video:https://anonymous-31415926.github.io/
[ 5 ] Rerender-Hugging Face Demo:https://huggingface.co/spaces/Anonymous-sub/Rerender
[ 6 ] Marc Rebillet Diffused:https://www.reddit.com/r/StableDiffusion/comments/153juu9/marc_rebillet_diffused/
[ 7 ] Marc Rebillet:https://www.youtube.com/watch?v=enYdAxVcNZA
[ 8 ] WarpFusion:https://github.com/Sxela/WarpFusion
[ 9 ] Deforum Animation Parameter Examples: https://deforum.github.io/animation.html
[ 10 ] DoodleChaos:https://www.youtube.com/watch?v=0fDJXmqdN-A
[ 11 ] DoodleChaos Patreon:https://www.patreon.com/posts/i-used-ai-to-66518281
[ 12 ] First Order Motion:https://aliaksandrsiarohin.github.io/first-order-model-website/
[ 13 ] AI-Talk:https://space.bilibili.com/405083326
[ 14 ] Harry Potter by Balenciaga:https://www.youtube.com/watch?v=iE39q-IKOzA
[ 15 ] AnimateDiff:https://animatediff.github.io/
[ 16 ] Structure and Content-Guided Video Synthesis with Diffusion Models: https://arxiv.org/abs/2302.03011