博客專欄

EEPW首頁(yè) > 博客 > 用AI腦補(bǔ)慢動(dòng)作,30幀秒變120幀,輕松看清“松果糖豆五連鞭”動(dòng)作細(xì)節(jié)

用AI腦補(bǔ)慢動(dòng)作,30幀秒變120幀,輕松看清“松果糖豆五連鞭”動(dòng)作細(xì)節(jié)

發(fā)布人:大數(shù)據(jù)文摘 時(shí)間:2021-03-21 來(lái)源:工程師 發(fā)布文章

以下文章來(lái)源于HyperAI超神經(jīng) ,作者神經(jīng)小兮

1.gif

如今,人們對(duì)于視頻幀率的追求越來(lái)越高,因?yàn)楦邘室曨l更加順滑、流暢,能極大地提升人們的觀看體驗(yàn)。

現(xiàn)有相機(jī)拍攝的視頻幀率,也從 24 FPS(Frames Per Second) 不斷提升到 60 FPS,再到 240 FPS 甚至更高。

2.gif

在絕大多數(shù)電影幀率 24 的當(dāng)下,李安的《雙子殺手》以 120 的幀率實(shí)現(xiàn)電影技術(shù)的革新

但是,高幀率的攝像設(shè)備,對(duì)于內(nèi)存需求非常大,而且成本高昂,尚不能普及。為了在沒有專業(yè)設(shè)備的情況下,能夠得到高幀率的視頻,視頻插幀技術(shù)應(yīng)運(yùn)而生。

而英偉達(dá)提出的 AI「腦補(bǔ)」**** Super SloMo,則在眾多視頻插幀技術(shù)中一騎絕塵,即使幀率僅僅為 30 幀的視頻,也可以 Super SloMo 補(bǔ)成 60 幀、240 幀甚至更高。

傳統(tǒng)插幀方法優(yōu)劣勢(shì)一覽

為了更好地理解 Super SloMo,我們首先來(lái)了解一下現(xiàn)有的較為傳統(tǒng)的視頻插幀技術(shù)。

幀采樣 

幀采樣就是用關(guān)鍵幀來(lái)做補(bǔ)償幀,其實(shí)質(zhì)就是拉長(zhǎng)每一個(gè)關(guān)鍵幀的顯示時(shí)間,相當(dāng)于并沒有插幀。除了獲得文件屬性更高的幀率和在同視頻質(zhì)量下更大的文件體積外,不會(huì)帶來(lái)任何視覺觀感上的提升。

優(yōu)點(diǎn):幀采樣消耗資源少,速度快。

缺點(diǎn):可能會(huì)使得視頻看起來(lái)不是很流暢。

3.png

幀混合 

幀混合,顧名思義,就是提升前后關(guān)鍵幀的透明度,再將其混合成一個(gè)新的幀,來(lái)填補(bǔ)空缺。

優(yōu)點(diǎn):計(jì)算所需時(shí)長(zhǎng)短。

缺點(diǎn):效果不佳。由于只是簡(jiǎn)單的把原關(guān)鍵幀變成半透明狀,運(yùn)動(dòng)物體輪廓在前后兩幀交疊的時(shí)候,就會(huì)產(chǎn)生明顯的模糊場(chǎng)景,對(duì)視頻的視覺效果流暢程度提升很小。

4.png

運(yùn)動(dòng)補(bǔ)償 

運(yùn)動(dòng)補(bǔ)償(Motion Estimation and Motion Compensation,簡(jiǎn)稱 MEMC),其原理是在水平和垂直兩個(gè)方向上,對(duì)兩幀之間的差異尋找出現(xiàn)運(yùn)動(dòng)的塊,通過(guò)分析圖像塊的運(yùn)動(dòng)趨勢(shì),再輔以計(jì)算得到中間幀。

MEMC 主要被應(yīng)用于電視、顯示器和移動(dòng)端,提升視頻幀率,給觀眾更加流暢的觀感。

優(yōu)點(diǎn):減小運(yùn)動(dòng)抖動(dòng),減弱畫面拖尾與虛影,提升畫面清晰度。

缺點(diǎn):對(duì)于運(yùn)動(dòng)物體背景比較復(fù)雜的情況 ,就會(huì)出現(xiàn)物體邊緣運(yùn)動(dòng)的 bug。

5.png

光流法 

光流法是計(jì)算機(jī)視覺研究中的一個(gè)重要方向,其根據(jù)上下幀來(lái)推斷像素移動(dòng)的軌跡,自動(dòng)生成新的空缺幀。有點(diǎn)類似于運(yùn)動(dòng)模糊計(jì)算方法。

優(yōu)點(diǎn):畫面更流暢、卡頓感弱。

缺點(diǎn):計(jì)算量大, 耗時(shí)長(zhǎng);對(duì)光線敏感,在光線變化較大的情況下,容易出現(xiàn)畫面紊亂的錯(cuò)誤。

6.png

Super SloMo:AI 插幀法,堪稱業(yè)界經(jīng)典

在 2018 年計(jì)算機(jī)頂會(huì) CVPR 上,英偉達(dá)發(fā)布的論文《Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation》中,提出了 Super SloMo,在業(yè)界引起廣泛關(guān)注。

7.png

《超級(jí)慢動(dòng)作:用于視頻多個(gè)中間幀插值的的高質(zhì)量估計(jì)》論文地址:

https://arxiv.org/pdf/1712.00080.pdf

Super SloMo 不同于傳統(tǒng)方法,它利用深度神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)補(bǔ)幀,基本思路為:使用大量普通視頻與慢動(dòng)作視頻進(jìn)行訓(xùn)練,然后讓神經(jīng)網(wǎng)絡(luò)學(xué)會(huì)推理,根據(jù)正常視頻生成高質(zhì)量的超級(jí)慢動(dòng)作視頻。

8.png

Super SloMo 方法框架圖包括光流計(jì)算模塊(左)與特定時(shí)間流插值模塊(右)

Super SloMo 團(tuán)隊(duì)提出的方法,其整個(gè)框架依賴于兩個(gè)全卷積神經(jīng)網(wǎng)絡(luò)  U-Net。

首先,用一個(gè) U-Net 來(lái)計(jì)算相鄰輸入圖像之間的雙向光流。然后,在每個(gè)時(shí)間步長(zhǎng)上對(duì)這些光流進(jìn)行線性擬合,以近似中間幀的雙向光流。

為了解決運(yùn)動(dòng)邊界出現(xiàn)偽影的問題,使用另一個(gè) U-Net 來(lái)對(duì)近似的光流進(jìn)行改善,并且預(yù)測(cè)柔性可見性映射關(guān)系。最后,將輸入的兩張圖像進(jìn)行扭曲和線性融合,從而形成中間幀。

此外,Super SloMo 的光流計(jì)算網(wǎng)絡(luò)和插值網(wǎng)絡(luò)的參數(shù),都不依賴于被插值幀的特定時(shí)間步長(zhǎng)(時(shí)間步長(zhǎng)被做為網(wǎng)絡(luò)的輸入)。因此,它可以并行地在兩幀之間的任意時(shí)間步長(zhǎng)上插幀,從而突破了很多單幀插值方法的局限性。

9.gif

原始 SloMo 視頻(上)Super SloMo 補(bǔ)幀后的超級(jí)慢動(dòng)作視頻(下)

作者表示,使用他們未經(jīng)優(yōu)化的 PyTorch 代碼,在單個(gè) NVIDIA GTX 1080Ti 和 Tesla V100 GPU 上,生成 7 個(gè)分辨率為 1280*720 的中間幀,分別只需要 0.97 秒和 0.79 秒。

為了訓(xùn)練網(wǎng)絡(luò),作者從 YouTube 和手持?jǐn)z像機(jī)上收集了多個(gè) 240 幀的視頻。總計(jì)收集了 1100 個(gè)視頻段,由 30 萬(wàn)張 1080×720 分辨率的獨(dú)立的視頻幀組成。這些視頻從室內(nèi)到室外,從靜態(tài)相機(jī)到動(dòng)態(tài)相機(jī),從日?;顒?dòng)到專業(yè)運(yùn)動(dòng),包含了各類場(chǎng)景。

之后在其它數(shù)據(jù)集上對(duì)模型進(jìn)行了驗(yàn)證,結(jié)果表明,該研究在這些數(shù)據(jù)集上比現(xiàn)有的方法性能上有了顯著的提高。

跟著教程,一鍵實(shí)現(xiàn) Super SloMo

雖然英偉達(dá)這一論文的作者尚未公開數(shù)據(jù)集和代碼,不過(guò),高手在民間,GitHub 上一位名為為 avinashpaliwal 的用戶,已經(jīng)開源了自己對(duì) Super SloMo 的 PyTorch 實(shí)現(xiàn),其結(jié)果與論文描述相差無(wú)幾。

該項(xiàng)目具體信息如下:

Super SloMo 超級(jí)慢動(dòng)作鏡頭補(bǔ)幀

運(yùn)行環(huán)境:PyTorch 0.4.1

語(yǔ)言版本:Python 3.6

訓(xùn)練可視化:TensorboardX

訓(xùn)練數(shù)據(jù)集:Adobe 240 fps

項(xiàng)目地址:

https://github.com/avinashpaliwal/Super-SloMo

由于模型訓(xùn)練和測(cè)試是在 PyTorch 0.4.1 和 CUDA 9.2  上完成的,所以安裝這兩個(gè)軟件必不可少,另外你還需要有一張 NVIDIA 的顯卡。

此外,模型不能直接使用視頻訓(xùn)練,因此還需要安裝 ffmpeg 從視頻中提取幀。這些準(zhǔn)備工作一切就緒后,方可下載 adobe 240fps 數(shù)據(jù)集進(jìn)行訓(xùn)練。

不過(guò),你也可以不需要準(zhǔn)備這些,做一個(gè)安安靜靜的「伸手黨」,一鍵實(shí)現(xiàn) Super SloMo。

我們?cè)趪?guó)內(nèi)的機(jī)器學(xué)習(xí)算力容器服務(wù)平臺(tái)(https://openbayes.com)找到了相應(yīng)的教程。

從數(shù)據(jù)集到代碼再到算力,一應(yīng)俱全,即使是小白,也可以輕松上手。

教程鏈接:

https://openbayes.com/console/openbayes/containers/xQIPlDQ0GyD/overview

10.png

教程使用指南 

首先注冊(cè)并登錄 https://openbayes.com/,在「公共資源」菜單下的「公共教程」中,選擇本教程——「Super-SloMo超級(jí)慢動(dòng)作鏡頭的PyTorch實(shí)現(xiàn)」。

教程中樣例展示文件是 Super-SloMo.ipynb,運(yùn)行這個(gè)文件,會(huì)安裝環(huán)境,并展示最終補(bǔ)幀而來(lái)的超級(jí)慢動(dòng)作效果。

大家也可以使用自己的視頻素材,將下方生成代碼中的 lightning-dick-clip.mp4 改為你的視頻文件名。

屬性「scale」 用于控制生成視頻的倍速,比如:設(shè)為 4,即 4 倍速慢放。

生成代碼:

!python3 'Super-SloMo/eval.py' \
    'lightning-dick-clip.mp4' \
    --checkpoint='/openbayes/input/input0/SuperSloMo.ckpt' \
    --output='output-tmp.mp4' \
    --scale=4
print('Done')

轉(zhuǎn)換視頻格式代碼:

!ffmpeg -i output-tmp.mp4 -vcodec libx264 -acodec aac output.mp4

該教程中,使用了網(wǎng)絡(luò)上的某段視頻,進(jìn)行 Super SloMo 插幀,得到如下結(jié)果:

11.gif

4倍速慢放,看清武術(shù)動(dòng)作的每一步

目前,該平臺(tái)還能薅羊毛,每周都贈(zèng)送 vGPU 的使用時(shí)長(zhǎng),人人都可輕松完成,趕快動(dòng)手試試吧!

參考資料:

https://arxiv.org/pdf/1712.00080.pdf

http://jianghz.me/projects/superslomo/https://zhuanlan.zhihu.com/p/86426432

*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞:

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉