暑假期間小跳出去旅游,沿途用手機記錄下了許多美麗景色。回家路上,小跳打開手機想用慢倍速去細細品味自己拍攝的視頻,發現視頻強烈的卡頓感讓其“黯然失色”。失望的小跳想起前段時間在抖音上看到的剪映 APP 絲滑慢放教程,抱著試一試的態度打開了剪映,幾番操作下來,視頻發生了質的改變,像是回到了拍攝的那瞬間,把當下沒被記錄的片段統統還原出來,卡頓感“一鍵”全無。是什么技術讓視頻還原出當下的瞬間,讓卡頓視頻變得如此絲滑?本文對字節跳動智能創作團隊自研視頻插幀技術進行了深度解剖,為大家找到了絲滑視頻的秘訣。
視頻幀率(單位:fps)指的是每秒播放的畫面數。在一定范圍內,幀率越高,視頻觀感越流暢。早期電影的幀率在 20~60 fps,現代電視廣泛使用的幀率標準是 25 fps 和 30 fps。
隨著技術的發展,電視、手機等播放設備能夠支持播放更高幀率的視頻。如今用戶已經不滿足陳舊的 20~30 fps 視頻標準。由于網絡傳輸、拍攝丟幀、后期編輯等原因,線上甚至存在不少實際幀率低于 15 fps 的視頻。為了消除低幀率視頻的卡頓感,需要使用插幀技術來提升視頻的幀率,從而給觀眾帶來絲滑流暢的播放體驗。
插幀算法通過計算原視頻的幀間運動關系,在兩幀之間插入符合運動關系的中間幀,從而提升視頻的幀率。
兩幀之間插入新的中間幀
字節跳動智能創作團隊打造了一套多端視頻智能插幀解決方案,在抖音、剪映、西瓜等多個業務場景落地。該方案能對低幀率短視頻進行幀率提升,改善短視頻觀看體驗;同時還為視頻創作者提供了高階視頻剪輯工具,對變速視頻進行補幀、生成絲滑慢動作效果。除此之外,還衍生出多種特效玩法,在多個業務上取得了投稿、拉新、留存、DAU 等指標的顯著收益。
視頻插幀業界解決方案
低幀率視頻產生的原因有很多,視頻從創作到消費的鏈路上,拍攝、剪輯、編解碼、下發策略等因素都可能會對視頻幀率造成影響。因此在各個環節上,插幀技術都有應用價值。需要構建一套多端視頻插幀解決方案,才能最大程度地將幀率問題優化到極致。
針對不同的使用場景、不同的后端設備,算法方案也有所不同。當前業界常用的解決方案有:
幀融合或重復幀
- 直接將前后兩幀的融合結果或重復幀作為新增的中間幀,插入到原視頻中。該方法計算簡單,但會產生拖影感和卡頓感,并沒有起到提升視頻觀看體驗的作用。通常可作為特殊場景、低端設備的兜底方案。
- Adobe Premiere,Final Cut Pro 等專業剪輯軟件中也集成了該方法,作為插幀的一個可選方法
傳統 MEMC 方案
- MEMC (Motion Estimation, Motion Compensation) 是一類運動補償算法。此類算法會對相鄰兩幀進行運動估計,補償出原視頻中本身沒有的畫面,達到提升視頻幀率的目的。MEMC 所生成的中間幀符合原視頻的平滑運動關系,因此可以使視頻更流暢。但對于運動復雜的場景,很難在有限的算力條件下得到精確的結果。
- Adobe Premiere 、Final Cut Pro 中的光流法插幀( Pr 中也叫“時間插值”)中就是采用此類方法。
運動補償示意
深度學習方案
- 基于深度學習的方案,通常將原視頻相鄰兩幀作為神經網絡的輸入,結合光流神經網絡、遮擋估計等技術,來預測兩幀之間的中間幀。深度學習方法可以提取圖像語義信息,因此往往在遮擋估計等方面表現更優。但深度學習方法往往計算量大,很難在移動設備上應用。目前基于深度學習的光流算法較為成熟,可以計算兩幀之間的密集光流。用了光流信息,可以將前后兩幀圖像 Warp 到中間時刻,從而合成中間幀。
- Nvidia SuperSlomo 提供一個在 Nvidia GPU 上運行的深度學習插幀算法,但對顯卡性能有較高的要求。
圖源 Nvidia SuperSlomo 論文
自研插幀算法的突破與優化
多端插幀算法能力矩陣
為了服務抖音、西瓜、剪映、火山引擎等不同業務場景的需求,同時全鏈路優化幀率問題,我們構建了一套視頻插幀多端解決方案。
視頻插幀多端解決方案
服務端
- 服務端擁有 GPU 算力,因此適合采用深度學習方案來獲得更平滑的插幀效果。自研服務端插幀算法為抖音業務提供了云端幀率提升轉碼能力,以改進低幀率短視頻的觀看體驗。日后也會以云服務的形式,逐步對更多業務線、ToB 客戶開放。
移動端
- 如果能直接在移動設備上使用插幀算法,那么算法能力可以觸達更多的視頻創作者,在視頻生產環節即可提升視頻流暢度。針對移動端使用場景,我們研發了基于 MEMC 的插幀算法,并針對 MEMC 算法存在的問題做了細致的優化。
PC 端
- 專業視頻創作者往往使用桌面端專業剪輯軟件進行視頻創作。自研的視頻插幀解決方案也為 PC 端的剪映專業版提供了插幀能力。對于配備有獨立顯卡的 PC 設備,可采用深度學習方案來保證更好的插幀效果;其他 PC 設備可復用移動端的核心算法,來保證算法運行的性能。
優化方案
盡管插幀技術已有較長的發展歷史,業界也有成熟的應用案例,但仍然面臨著性能和效果的巨大挑戰。在性能方面,服務端 GPU 算力成本大,移動端算力局促且機型分布復雜。在效果方面,插幀效果依賴于準確的運動估計,如果視頻中存在大幅運動、前后遮擋等復雜運動場景,生成的中間幀可能會產生模糊、拖影、塊狀破碎感等現象。針對這些難點,字節跳動智能創作技術團隊,從算法與工程多個維度對多端插幀算法進行了優化。
神經網絡模型壓縮
- 我們采用模型剪枝技術,減少神經網絡中冗余的權重。并且通過特征共享,減少雙向光流的計算量。除此之外,根據光流的平滑特性,我們采用在小分辨率光流推理、在原分辨率進行中間幀合成的策略,減小復雜網絡的計算量。
插幀網絡結構示意
內容自適應的插幀可行性分析
- 并不是所有的視頻的內容都適合使用插幀,對于相鄰幀變化劇烈的場景(例如轉場、劇烈運動),插幀算法無法生成一個合理的結果,甚至可能引入嚴重偽影。因此我們對視頻內容進行插幀可行性判斷,根據圖像特征、運動幅度等信息,自適應地決定是否為當前幀進行插幀。
更高效的 MEMC 策略
- 塊匹配是一個基于搜索的運動估計算法,需要在前后幀的一定領域內搜索最匹配的圖像塊。對于運動復雜的視頻,這種方法往往需要較大的搜索空間,才能搜索出最優運動向量。這給移動端應用帶來了算法瓶頸。我們研發了一套光流指導的塊搜索策略,來解決塊匹配的性能和效果的問題。自研方法首先在相鄰兩幀之間,計算一個多尺度快速光流。圖像金字塔多尺度策略,可以使得算法對大運動場景更魯棒。得到初步光流信息后,可以以光流作為指導,在金字塔最大尺度上做進一步塊搜索。此時,塊搜索只需在較小的搜索空間即可快速搜索出最優運動向量。
- 基于多尺度金字塔的快速光流
在金字塔最大尺度上做塊搜索
- 無論是多尺度快速光流,還是光流指導的塊搜索,整個計算過程都可并行計算。使得算法在移動設備上,也能高效運行。
端上異構計算
- 在端上使用了 CPU+GPU 的計算方式,將計算密集型任務分配給 GPU,使用 opencl 或 metal 實現算子,并根據平臺做特定的性能調優;而計算稀疏型任務則在 CPU 上完成計算,并使用多線程等操作進行性能優化。通過異構計算,在端上可以實現 5 倍左右的加速比,性能達到落地需求。
端上算法分級策略
- 抖音、剪映等 app 覆蓋用戶量級大,用戶機型多樣。為了保證算法的機型覆蓋率,讓不同機型用戶獲得最佳體驗,我們采用了端上算法分級的策略。根據用戶機型的計算能力,端上插幀算法分為高、中、低三個檔位,高檔位優先保證效果,適合高端機型;低檔位優先保證性能,適合低端機型。
智能補幀及其衍生應用
剪映變速-智能補幀
- 我們的插幀能力已上線剪映“變速”面板。視頻素材慢放后,可勾選“智能補幀”選項,讓慢動作更絲滑。
剪映智能補幀入口
自動變速創意玩法
- 剪映已在抖音玩法一欄上線“絲滑變速”效果,可以一鍵生成卡點變速效果。該玩法的“絲滑”效果,也少不了插幀能力的支持。海外版 CapCut 上線了同樣的能力,上線兩周即形成爆款。
幀率提升
- 除了讓慢放更絲滑,幀率提升也是插幀算法的一大應用。西瓜視頻“玩法庫”面板提供了幀率提升的體驗入口,可將用戶上傳的低幀率視頻提升為高幀率視頻,提升視頻的流暢度。
王家衛電影風格
- “王家衛電影風格”特效是插幀算法的一個衍生玩法,已上線剪映拍攝器及特效。該風格通常是在拍攝階段通過攝像機慢快門來產生“拖影”的效果。而通過插幀算法的運動估計及補幀能力,在視頻后期階段,即可一鍵生成符合視頻場景運動關系的“拖影”效果。
輔助其他視頻算法節省算力
- 一些效果驚艷的 GAN 特效算法,往往復雜度高。在視頻特效場景需要逐幀進行神經網絡推理,很難到達實時性能。但在插幀算法性能優于 GAN 特效效法的前提下,可以使用“特效+補幀”的策略來加速視頻處理。復雜度高的GAN 特效只需要以一定間隔處理更少的幀數,其余中間幀使用插幀算法生成。
插幀輔助其他算法減小耗時
未來展望
除了視頻編輯、特效玩法,未來我們將持續探索插幀技術在視頻高清低碼場景的應用價值。插幀技術不僅可以提升視頻內容質量,還能在帶寬節省、低延傳輸等方面發揮價值。
- 低功耗實時視頻插幀結合廠商能力,在算法與工程上極致優化插幀性能。服務端只需下發更低幀率的低碼率視頻,使用高性能、低功耗的插幀算法,端上進行實時插幀還原高幀率視頻。不僅保證用戶體驗,還能節省帶寬成本。
- 結合編解碼器進行智能補幀H.264 編碼器內部會進行運動估計,通過編碼運動補償殘差來進行幀間編碼。新一代 H.266 編碼器在運動估計準確性、運動補償準確性上進行了更深入的優化。將編解碼器與插幀進行結合,運動估計信息能夠被插幀算法復用,插幀算法也能夠進一步優化幀間編碼的壓縮率。
參考文獻
[1] Jiang, Huaizu, et al. "Super slomo: High quality estimation of multiple intermediate frames for video interpolation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[2] Niklaus S, Liu F. Context-aware synthesis for video frame interpolation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 1701-1710.
[3] Choi B D, Han J W, Kim C S, et al. Motion-compensated frame interpolation using bilateral motion estimation and adaptive overlapped block motion compensation[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2007, 17(4): 407-416.?