讓普通視訊變成慢動作:「AI加幀」技術現已開源
今年 6 月份,英偉達釋出了一篇生成高質量慢動作視訊的論文——《Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation》,探討了如何將普通裝置錄製的視訊轉換為高幀率慢動作視訊。這項工作的原理是在臨近的兩幀之間補充額外的畫面幀。讓我們先來看一下效果:
額... 英偉達給出的視訊中展示了一個用網球拍快速打破水球的例子,正常速度下的視訊如下:
下圖分別是用原始 SloMo 和 Super SloMo 軟體製作的慢速視訊。
從圖中可以可出,用原始 SloMo 軟體製作出的慢速視訊雖然也讓我們看到了一些肉眼無法捕捉到的細節,但相比之下,用 Super SloMo 製作的慢速視訊還原的細節更多,畫面也更加流暢。這是因為二者有著本質的區別,前者並沒有生成新的視訊幀,而後者則利用神經網路生成了新的視訊幀,使得畫面包含的幀數更多,從而增加了視訊細節和流暢度。
在看看下方的賽車甩尾,原視訊為 30FPS。看起來沒毛病吧,那慢速播放之後呢?
看下圖上方,原來流暢的甩尾變得像是一張張照片擺拍湊出來的定格動畫(P 水花比甩尾簡單多了吧),但經過演算法補幀變成 240FPS 之後,下方的片段立刻有了 Fast & Furious 即視感。
遺憾的是,作者釋出論文的時候並沒有放出資料集和程式碼,讓想要實現這一炫酷技術的 geek 們大失所望。但是(劃重點),群眾的力量是偉大的。近日,GitHub 一位名為 avinashpaliwal 的使用者開源了自己對 Super SloMo 的 PyTorch 實現:
Github 地址:https://github.com/avinashpaliwal/Super-SloMo
Super SloMo 的 PyTorch 實現
結果
使用作者提供的評估指令碼在 UCF101 資料集上的結果。用的指令碼是 et_results_bug_fixed.sh。它在計算 PSNR、SSIM 和 IE 時使用了運動掩碼(motions mask)。
先決條件
該程式碼庫是用 pytorch 0.4.1 和 CUDA 9.2 進行開發測試的。
訓練
準備訓練資料
要使用提供的程式碼訓練模型,首先需要以某種方式格式化資料。
create_dataset.py 指令碼使用 ffmpeg 從視訊中提取幀。
至於 adobe240fps,下載下面這個資料集,解壓並執行以下命令:
python datacreate_dataset.py --ffmpeg_dir path ofmpeg --videos_folder path oadobe240fpsideoFolder --dataset_folder path odataset --dataset adobe240fps
資料集:http://www.cs.ubc.ca/labs/imager/tr/2017/DeepVideoDeblurring/DeepVideoDeblurring_Dataset_Original_High_FPS_Videos.zip
評估
預訓練模型
你可以從以下地址下載在 adobe240fps 資料集上訓練的預訓練模型:
https://drive.google.com/open?id=1IvobLDbRiBgZr3ryCRrWL8xDbMZ-KnpF
這個模型怎麼玩才好玩呢?拿出過去渣手機拍攝的珍藏片段,慢動作回放一下是不是更有味道?
那些為自制電影裝置費用發愁的是不是來勁了?
還有,那些每次一到高速戰鬥情節就經費嚴重不足的動畫製作組是不是覺得相見恨晚?
有了它,一些動畫是不是能多更新半年了?