用AI腦補慢動作,30幀秒變120幀,輕松看清“松果糖豆五連鞭”動作細節
以下文章來源于HyperAI超神經 ,作者神經小兮
如今,人們對于視頻幀率的追求越來越高,因為高幀率視頻更加順滑、流暢,能極大地提升人們的觀看體驗。
現有相機拍攝的視頻幀率,也從 24 FPS(Frames Per Second) 不斷提升到 60 FPS,再到 240 FPS 甚至更高。
在絕大多數電影幀率 24 的當下,李安的《雙子殺手》以 120 的幀率實現電影技術的革新
但是,高幀率的攝像設備,對于內存需求非常大,而且成本高昂,尚不能普及。為了在沒有專業設備的情況下,能夠得到高幀率的視頻,視頻插幀技術應運而生。
而英偉達提出的 AI「腦補」**** Super SloMo,則在眾多視頻插幀技術中一騎絕塵,即使幀率僅僅為 30 幀的視頻,也可以 Super SloMo 補成 60 幀、240 幀甚至更高。
傳統插幀方法優劣勢一覽
為了更好地理解 Super SloMo,我們首先來了解一下現有的較為傳統的視頻插幀技術。
幀采樣
幀采樣就是用關鍵幀來做補償幀,其實質就是拉長每一個關鍵幀的顯示時間,相當于并沒有插幀。除了獲得文件屬性更高的幀率和在同視頻質量下更大的文件體積外,不會帶來任何視覺觀感上的提升。
優點:幀采樣消耗資源少,速度快。
缺點:可能會使得視頻看起來不是很流暢。
幀混合
幀混合,顧名思義,就是提升前后關鍵幀的透明度,再將其混合成一個新的幀,來填補空缺。
優點:計算所需時長短。
缺點:效果不佳。由于只是簡單的把原關鍵幀變成半透明狀,運動物體輪廓在前后兩幀交疊的時候,就會產生明顯的模糊場景,對視頻的視覺效果流暢程度提升很小。
運動補償
運動補償(Motion Estimation and Motion Compensation,簡稱 MEMC),其原理是在水平和垂直兩個方向上,對兩幀之間的差異尋找出現運動的塊,通過分析圖像塊的運動趨勢,再輔以計算得到中間幀。
MEMC 主要被應用于電視、顯示器和移動端,提升視頻幀率,給觀眾更加流暢的觀感。
優點:減小運動抖動,減弱畫面拖尾與虛影,提升畫面清晰度。
缺點:對于運動物體背景比較復雜的情況 ,就會出現物體邊緣運動的 bug。
光流法
光流法是計算機視覺研究中的一個重要方向,其根據上下幀來推斷像素移動的軌跡,自動生成新的空缺幀。有點類似于運動模糊計算方法。
優點:畫面更流暢、卡頓感弱。
缺點:計算量大, 耗時長;對光線敏感,在光線變化較大的情況下,容易出現畫面紊亂的錯誤。
Super SloMo:AI 插幀法,堪稱業界經典
在 2018 年計算機頂會 CVPR 上,英偉達發布的論文《Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation》中,提出了 Super SloMo,在業界引起廣泛關注。
《超級慢動作:用于視頻多個中間幀插值的的高質量估計》論文地址:
https://arxiv.org/pdf/1712.00080.pdf
Super SloMo 不同于傳統方法,它利用深度神經網絡來實現補幀,基本思路為:使用大量普通視頻與慢動作視頻進行訓練,然后讓神經網絡學會推理,根據正常視頻生成高質量的超級慢動作視頻。
Super SloMo 方法框架圖包括光流計算模塊(左)與特定時間流插值模塊(右)
Super SloMo 團隊提出的方法,其整個框架依賴于兩個全卷積神經網絡 U-Net。
首先,用一個 U-Net 來計算相鄰輸入圖像之間的雙向光流。然后,在每個時間步長上對這些光流進行線性擬合,以近似中間幀的雙向光流。
為了解決運動邊界出現偽影的問題,使用另一個 U-Net 來對近似的光流進行改善,并且預測柔性可見性映射關系。最后,將輸入的兩張圖像進行扭曲和線性融合,從而形成中間幀。
此外,Super SloMo 的光流計算網絡和插值網絡的參數,都不依賴于被插值幀的特定時間步長(時間步長被做為網絡的輸入)。因此,它可以并行地在兩幀之間的任意時間步長上插幀,從而突破了很多單幀插值方法的局限性。
原始 SloMo 視頻(上)Super SloMo 補幀后的超級慢動作視頻(下)
作者表示,使用他們未經優化的 PyTorch 代碼,在單個 NVIDIA GTX 1080Ti 和 Tesla V100 GPU 上,生成 7 個分辨率為 1280*720 的中間幀,分別只需要 0.97 秒和 0.79 秒。
為了訓練網絡,作者從 YouTube 和手持攝像機上收集了多個 240 幀的視頻。總計收集了 1100 個視頻段,由 30 萬張 1080×720 分辨率的獨立的視頻幀組成。這些視頻從室內到室外,從靜態相機到動態相機,從日常活動到專業運動,包含了各類場景。
之后在其它數據集上對模型進行了驗證,結果表明,該研究在這些數據集上比現有的方法性能上有了顯著的提高。
跟著教程,一鍵實現 Super SloMo
雖然英偉達這一論文的作者尚未公開數據集和代碼,不過,高手在民間,GitHub 上一位名為為 avinashpaliwal 的用戶,已經開源了自己對 Super SloMo 的 PyTorch 實現,其結果與論文描述相差無幾。
該項目具體信息如下:
Super SloMo 超級慢動作鏡頭補幀
運行環境:PyTorch 0.4.1
語言版本:Python 3.6
訓練可視化:TensorboardX
訓練數據集:Adobe 240 fps
項目地址:
https://github.com/avinashpaliwal/Super-SloMo
由于模型訓練和測試是在 PyTorch 0.4.1 和 CUDA 9.2 上完成的,所以安裝這兩個軟件必不可少,另外你還需要有一張 NVIDIA 的顯卡。
此外,模型不能直接使用視頻訓練,因此還需要安裝 ffmpeg 從視頻中提取幀。這些準備工作一切就緒后,方可下載 adobe 240fps 數據集進行訓練。
不過,你也可以不需要準備這些,做一個安安靜靜的「伸手黨」,一鍵實現 Super SloMo。
我們在國內的機器學習算力容器服務平臺(https://openbayes.com)找到了相應的教程。
從數據集到代碼再到算力,一應俱全,即使是小白,也可以輕松上手。
教程鏈接:
https://openbayes.com/console/openbayes/containers/xQIPlDQ0GyD/overview
教程使用指南
首先注冊并登錄 https://openbayes.com/,在「公共資源」菜單下的「公共教程」中,選擇本教程——「Super-SloMo超級慢動作鏡頭的PyTorch實現」。
教程中樣例展示文件是 Super-SloMo.ipynb,運行這個文件,會安裝環境,并展示最終補幀而來的超級慢動作效果。
大家也可以使用自己的視頻素材,將下方生成代碼中的 lightning-dick-clip.mp4 改為你的視頻文件名。
屬性「scale」 用于控制生成視頻的倍速,比如:設為 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')
轉換視頻格式代碼:
!ffmpeg -i output-tmp.mp4 -vcodec libx264 -acodec aac output.mp4
該教程中,使用了網絡上的某段視頻,進行 Super SloMo 插幀,得到如下結果:
4倍速慢放,看清武術動作的每一步
目前,該平臺還能薅羊毛,每周都贈送 vGPU 的使用時長,人人都可輕松完成,趕快動手試試吧!
參考資料:
https://arxiv.org/pdf/1712.00080.pdf
http://jianghz.me/projects/superslomo/https://zhuanlan.zhihu.com/p/86426432
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。