用AI腦補(bǔ)慢動(dòng)作,30幀秒變120幀,輕松看清“松果糖豆五連鞭”動(dòng)作細(xì)節(jié)
以下文章來源于HyperAI超神經(jīng) ,作者神經(jīng)小兮
如今,人們對(duì)于視頻幀率的追求越來越高,因?yàn)楦邘室曨l更加順滑、流暢,能極大地提升人們的觀看體驗(yàn)。
現(xiàn)有相機(jī)拍攝的視頻幀率,也從 24 FPS(Frames Per Second) 不斷提升到 60 FPS,再到 240 FPS 甚至更高。
在絕大多數(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,我們首先來了解一下現(xiàn)有的較為傳統(tǒng)的視頻插幀技術(shù)。
幀采樣
幀采樣就是用關(guān)鍵幀來做補(bǔ)償幀,其實(shí)質(zhì)就是拉長每一個(gè)關(guān)鍵幀的顯示時(shí)間,相當(dāng)于并沒有插幀。除了獲得文件屬性更高的幀率和在同視頻質(zhì)量下更大的文件體積外,不會(huì)帶來任何視覺觀感上的提升。
優(yōu)點(diǎn):幀采樣消耗資源少,速度快。
缺點(diǎn):可能會(huì)使得視頻看起來不是很流暢。
幀混合
幀混合,顧名思義,就是提升前后關(guān)鍵幀的透明度,再將其混合成一個(gè)新的幀,來填補(bǔ)空缺。
優(yōu)點(diǎn):計(jì)算所需時(shí)長短。
缺點(diǎn):效果不佳。由于只是簡(jiǎn)單的把原關(guān)鍵幀變成半透明狀,運(yùn)動(dòng)物體輪廓在前后兩幀交疊的時(shí)候,就會(huì)產(chǎn)生明顯的模糊場(chǎng)景,對(duì)視頻的視覺效果流暢程度提升很小。
運(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)的塊,通過分析圖像塊的運(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。
光流法
光流法是計(jì)算機(jī)視覺研究中的一個(gè)重要方向,其根據(jù)上下幀來推斷像素移動(dòng)的軌跡,自動(dòng)生成新的空缺幀。有點(diǎn)類似于運(yùn)動(dòng)模糊計(jì)算方法。
優(yōu)點(diǎn):畫面更流暢、卡頓感弱。
缺點(diǎn):計(jì)算量大, 耗時(shí)長;對(duì)光線敏感,在光線變化較大的情況下,容易出現(xiàn)畫面紊亂的錯(cuò)誤。
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)注。
《超級(jí)慢動(dòng)作:用于視頻多個(gè)中間幀插值的的高質(zhì)量估計(jì)》論文地址:
https://arxiv.org/pdf/1712.00080.pdf
Super SloMo 不同于傳統(tǒng)方法,它利用深度神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)補(bǔ)幀,基本思路為:使用大量普通視頻與慢動(dòng)作視頻進(jìn)行訓(xùn)練,然后讓神經(jīng)網(wǎng)絡(luò)學(xué)會(huì)推理,根據(jù)正常視頻生成高質(zhì)量的超級(jí)慢動(dòng)作視頻。
Super SloMo 方法框架圖包括光流計(jì)算模塊(左)與特定時(shí)間流插值模塊(右)
Super SloMo 團(tuán)隊(duì)提出的方法,其整個(gè)框架依賴于兩個(gè)全卷積神經(jīng)網(wǎng)絡(luò) U-Net。
首先,用一個(gè) U-Net 來計(jì)算相鄰輸入圖像之間的雙向光流。然后,在每個(gè)時(shí)間步長上對(duì)這些光流進(jìn)行線性擬合,以近似中間幀的雙向光流。
為了解決運(yùn)動(dòng)邊界出現(xiàn)偽影的問題,使用另一個(gè) U-Net 來對(duì)近似的光流進(jìn)行改善,并且預(yù)測(cè)柔性可見性映射關(guān)系。最后,將輸入的兩張圖像進(jìn)行扭曲和線性融合,從而形成中間幀。
此外,Super SloMo 的光流計(jì)算網(wǎng)絡(luò)和插值網(wǎng)絡(luò)的參數(shù),都不依賴于被插值幀的特定時(shí)間步長(時(shí)間步長被做為網(wǎng)絡(luò)的輸入)。因此,它可以并行地在兩幀之間的任意時(shí)間步長上插幀,從而突破了很多單幀插值方法的局限性。
原始 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 萬張 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ù)集和代碼,不過,高手在民間,GitHub 上一位名為為 avinashpaliwal 的用戶,已經(jīng)開源了自己對(duì) Super SloMo 的 PyTorch 實(shí)現(xiàn),其結(jié)果與論文描述相差無幾。
該項(xiàng)目具體信息如下:
Super SloMo 超級(jí)慢動(dòng)作鏡頭補(bǔ)幀
運(yùn)行環(huán)境:PyTorch 0.4.1
語言版本: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)練。
不過,你也可以不需要準(zhǔn)備這些,做一個(gè)安安靜靜的「伸手黨」,一鍵實(shí)現(xiàn) Super SloMo。
我們?cè)趪鴥?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
教程使用指南
首先注冊(cè)并登錄 https://openbayes.com/,在「公共資源」菜單下的「公共教程」中,選擇本教程——「Super-SloMo超級(jí)慢動(dòng)作鏡頭的PyTorch實(shí)現(xiàn)」。
教程中樣例展示文件是 Super-SloMo.ipynb,運(yùn)行這個(gè)文件,會(huì)安裝環(huán)境,并展示最終補(bǔ)幀而來的超級(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é)果:
4倍速慢放,看清武術(shù)動(dòng)作的每一步
目前,該平臺(tái)還能薅羊毛,每周都贈(zèng)送 vGPU 的使用時(shí)長,人人都可輕松完成,趕快動(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)系工作人員刪除。