StableV2V:重構AI視頻編輯新範式,深度聚焦人機交互一致性

始智ai wisemodel.cn開源社區

隨著年初openai 的sora demo的發布,視頻生成或視頻編輯領域呈現出井噴式發展的趨勢這一新興技術浪潮不僅吸引了眾多研究人員的目光,也使得相關應用如雨後春筍般湧現,為整個行業帶來了前所未有的創新活力。

本文將從幾個方面具體分享關於視頻編輯方法stablev2v研究的心路歷程,包括視頻編輯基本定義、視頻編輯現有方法的解決方案及局限性,以及stablev2v的思路和實現細節等。目前stablev2v模型已上線始智ai-wisemodel開源社區,歡迎大家前去體驗。

模型和代碼地址:

https://wisemodel.cn/models/alonzo/stablev2v
https://wisemodel.cn/codes/alonzo/stablev2v

01

視頻編輯的基本定義 

視頻編輯(video editing)這項任務旨在根據用戶輸入的額外條件,對原視頻中的內容(例如:前景、背景等等)進行編輯。在diffusion model主導的大背景環境下,現有方法的setting大多都是基於文本描述進行的,比較有名的工作有tokenflow、stablevideo、avid等等。

也就是說,這類方法往往會需要兩個輸入——原視頻的text prompt以及編輯後視頻的text prompt——並且這兩個text prompt之間往往僅有極個別描述視頻主體(物體、背景)的詞語區別。
除此之外,也有基於image prompt的方法,例如vase,呈現出的效果大致類似於圖片模態中的subject-driven generation。這些方法也就形成了目前video editing的兩大主流settings——text-based和image-based editing。
下面兩個具體例子讓大家能夠更直觀地感受這兩種setting的具體效果:

text-based editing效果的演示

image-based editing效果的演示(右下角展示為reference image)

其實從上述兩個例子,大家不難發現video editing這個任務的難點——(1)生成視頻幀之間的連續一致性、(2)編輯內容與user prompts之間的一致性問題。第一點可以說是視頻模態相關任務的通病——即我們常說的temporal consistency問題。

也就是說,我們在對原視頻進行編輯的同時,也要保證生成視頻幀與幀之間是連貫的;第二點則是由於人機交互帶來的問題,我們知道,用戶在交互過程中給定的prompt(文字或圖片),往往會存在跟生成內容之間不一致的問題。

具體來說,這一點可以是模型不能生成出text中描述的內容,亦或是因為模型範式本身存在的問題,生成的內容難以讓人滿意。據我們觀察,這類現象是相當普遍的,尤其是當用戶期望生成的內容,與原視頻的內容之間有較大形狀差異。例如,上圖中用戶給定了的「斑馬」的prompt,但vase由於其自身的特性,僅能生成「牛形狀的斑馬」,這樣的效果肯定不會是我們需要的。
於是,stablev2v基於上述我們觀察到的不一致問題為研究動機,展開了對現有方法的調研、綜述、反思、及改進。

02

現有方法的解決方案及局限性 

我們將現有方法分為四類:基於ddim inversion的方法、基於one-shot tuning的方法、基於學習的方法(learning-based)、基於第一幀編輯的方法。在本章中,我們將詳細討論這些方法的做法,以及它們對於前述問題存在的局限性。

基於ddim inversion的方法旨在將原視頻通過ddim inversion的方式,獲得每個timestep對應的特徵(cnn features、attention maps)等,然後再在擴散模型採樣時對每一步的對應特徵將這些抽取出來的原視頻特徵整合進去。
這樣的做法其實很直觀,就是想將原視頻的運動模式對採樣過程進行一定程度的引導,從而讓輸出視頻在生成新的編輯內容的基礎上,在其餘內容上與原視頻保持一致。
具體來說,現在比較常用的一個思路是將pnp(plug-and-play diffusion features)的思路用到視頻里來(anyv2v的做法),或者是通過一些一致性的約束設計讓生成視頻與原視頻保持一致性(tokenflow的做法)。
pnp是一個image editing工作,通過在採樣過程中替換cnn features和attention maps,讓編輯的內容與原圖像保持一致。
tokenflow的流程圖,通過最近鄰去匹配相似的attention maps,並在採樣過程中用這些attention maps去約束生成視頻。
基於one-shot tuning的方法旨在訓練一個video-specific的模型權重,通過這個權重對視頻的motion patterns進行建模,然後在採樣過程中通過調整text prompt的方式生成不同的結果,比較經典的代表作有iccv 2023的tune-a-video,以及後續將prompt2prompt的思路和one-shot tuning整合到一起的video-p2p。

tune-a-video的流程圖
但值得注意的是,前述這兩種方法很大程度上受限於原視頻的motion patterns—也就是說,它們只能處理「編輯內容」與「原視頻內容」形狀相似的場景—否則的話,這些從原視頻中抽取出來的motion信息,在用在新編輯的內容上時,會存在不匹配的問題,尤其是前文中講到的user prompts期望的內容會導致形狀變化的場景。
相反,基於學習的方法旨在通過微調image diffusion models,通過類似animatediff的範式,往image diffusion models中插入motion modules,再在大規模的文本-視頻數據集上進行微調這些motion modules,以此賦予模型編輯視頻的方式。
但是,基於學習的方法很大程度受限於image diffusion models的範式——也就是它們的inpainting架構。比方說,avid是從sd inpaint開始微調的;vase是從paint-by-example。這些inpainting model在用戶輸入原視頻、text prompt之外,還會要求輸入編輯區域對應的mask。
而這樣的mask,通常是依賴於數據集標註(例如vos數據集),或者需要進行人工標註的,這樣的標註過程將會變得非常費時費力。尤其是在處理前文中說到的場景,用戶不能知道編輯的內容會生成在什麼位置,因此也不能夠給出精準的mask標註。

avid的方法流程圖
vase的方法流程圖
最後一類方法是基於第一幀編輯的方法,也是近期比較新穎的一類範式,代表性的工作有anyv2v。這類方法將video editing分成兩個步驟,先對視頻的第一幀進行編輯,然後通過motion transfer的方式,將第一幀編輯的內容擴散到剩餘的視頻幀上去,為video editing提供了非常強大的靈活性。
現有相關工作有anyv2v和i2vedit,然而,anyv2v採取的motion transfer思路是前文介紹的ddim inversion + pnp的範式,i2vedit則是基於one-shot tuning的範式,這兩者均會受限於原視頻內在的motion patterns。
anyv2v的方法流程圖
這樣的研究背景不由得引發了我們對video editing的思考——究竟什麼樣的範式才能夠解決好video editing中編輯內容與user prompts不一致的問題?

03

想法和思路

在設計stablev2v的時候,我們嘗試跳出現有方法的範式局限,專註于思考一個問題——我們究竟能不能拿到跟user prompts對齊的motion patterns?

其實在早期研究的時候,我們也嘗試過前述幾種方法的範式,但最終都苦於不能模擬出與user prompts對齊的motion patterns,生成的結果往往不盡人意。
但是我們始終清醒的認識到一點—如果我們基於第一幀編輯的範式去設計stablev2v,那麼我們是能拿到跟user prompts對齊的內容的—也就是編輯之後的第一幀對應的信息。
如果我們能找到一個方式,從這一幀的信息出發去模擬得到其他幀的信息,那麼肯定是能拿到對齊的motion patterns的。基於這個思路,我們最終將stablev2v呈現在了大家面前:

stablev2v的方法流程圖。圖中的綠框代表視頻的第一幀,藍框代表從第k次迭代模擬到第k+1次模擬的過程。

04

方法與細節 

stablev2v主要包括三個核心組件—prompted first-frame editor(pfe)、iterative shape aligner(isa)、conditional image-to-video generator(cig)。

簡單來說,prompted first-frame editor(pfe)主要負責將user prompts轉換成編輯後的第一幀。這裡我們考慮了目前開源的諸多圖像編輯工作,例如paint-by-example、sd inpaint、instructpix2pix等等,同時發現,通過調整pfe,能夠實現text-based editing、instruction-based editing、image-based editing等多種主流的video editing設定,甚至我們的方法能夠進行很多有趣的應用——例如跟用戶手畫的sketch進行交互。
stablev2v的核心組件是iterative shape aligner(isa),也就是我們將模型使用的motion patterns與user prompts對齊的組件。前文我們說到,我們能夠拿到的第一編輯幀的信息,是與編輯視頻對齊的。
基於這點,我們考慮到深度圖能夠對視頻運動的motions和形狀同時進行表徵,於是採用深度圖作為傳遞motion patterns的中間媒介;並且,我們觀察到編輯後的物體(即使有較大形變),與原視頻中的內容也應該保持一樣的motion——也就是說,編輯後物體的光流與原視頻的「光流」及「深度圖」應該保持一樣的數值。基於這點,我們找到了模擬編輯視頻對應的深度圖的方法。

isa的motion simulation過程

motion simulation。具體來說,isa需要藉助「原視頻幀」以及「第一編輯幀」對應的segmentation masks來完成模擬過程,這裡我們僅介紹從第1到第2個模擬的光流模擬過程(上圖中的紅色框部分),後續的過程以此類推,展示如下:

首先,我們會計算「原視頻光流」在對應segmentation mask中的均值,並以此來表徵「原視頻物體的運動信息」;
由於編輯後物體的光流與原視頻的「光流」及「深度圖」應該保持一樣的數值,並且我們能夠拿到第一編輯幀對應的segmentation mask,我們將前述計算得到的「平均光流值」,賦值到第一編輯幀segmentation mask對應的區域,我們將這一過程稱為motion pasting,模擬後的光流與原光流進行拼接,就能得到「編輯視頻第1幀到第2幀的光流」;
在拿到編輯視頻第1幀到第2幀的光流」後,我們將「第一編輯幀的segmentation mask」warp到下一幀,拿到第2幀對應的segmentation mask;
至此,我們已經具備了從第2幀到第3幀進行模擬的所有輸入條件(即原視頻光流、原視頻segmentation mask、第2編輯幀對應的segmentation mask),因為我們可以通過一種迭代式的模擬方式獲得最終視頻對應的模擬光流。
depth simulation。一旦我們拿到了最終視頻對應的光流信息,下一步就是模擬對應的深度信息,模擬深度信息的過程與模擬光流的過程類似,在此不再具體展開,感興趣的朋友歡迎移步原文。
shape-guided depth refinement。到這一步,我們已經拿到了一個模擬的深度圖,但是值得注意的是,這樣模擬出來的深度圖往往會有原視頻中的冗餘信息,例如stablev2v方法流程圖中多餘的天鵝部分。
如果我們用這樣的深度圖去引導視頻生成網路,那麼輸出的視頻中肯定會存在由於不一致導致的artifacts。受到video inpainting研究的啟發,我們提出了一個形狀引導的深度圖修復網路來解決這個問題,旨在將冗餘的深度圖部分移除。
下面我們可視化了前述各個階段模擬的深度圖效果,大家可以直觀地看到,最終送入視頻生成網路的深度圖與編輯後的內容是一致的,並且,我們很慶幸的是我們的方法具有不錯的精度,能有效保留編輯後物體的形狀一致(例如下圖中的葡萄)。

isa各階段模擬的可視化效果

最後,conditional image-to-video generator(cig)作為一個深度圖引導的圖生視頻網路,旨在通過「第一編輯幀」和「修復後的深度圖」將編輯的內容擴散到其他的視頻幀上去,以生成最終編輯後的視頻。

05

實驗結果對比 

另外,我們觀察到現有方法大多在自己搜集到的測試集上對模型的性能進行驗證,因為我們提出了一個基準測試集,名為davis-edit,數據集已在我們的huggingface repo中開源,包含人工標註的text prompts和image prompts為兩大主流settings提供了測試標準。
同時,davis-edit提供了兩套標註,一套對應編輯後物體與原視頻物體相差不大,另一套則會有較大的形狀差異,以此來推動更多相關的研究。

davis-edit樣例的可視化

我們在文章中對stablev2v以及七個現有方法進行了對比。客觀指標上,我們考慮了dover、fvd、we、clip-temporal、clip score、推理時間,從視頻質量、幀間一致性、圖文對齊、推理效率等多個方面對現有方法進行評測。

同時,我們還考慮了human evaluation。關於實驗結果的對比及分析,歡迎大家參考我們的原文。下面是我們主實驗的結果:

stablev2v與其他方法在davis-edit上的對比結果

更多的可視化生成結果,歡迎大家移步我們的項目主頁,我們提供了視頻格式的結果、應用、及對比。下面我們展示一些圖片格式的結果預覽:

stablev2v在text-based editing(左)和image-based editing(右)上的應用

stablev2v的更多應用

 作者alonzo

編輯丨成蘊年