【趣味实践】自动补帧算法——RIFE的使用
前言
视频制作者往往对于高帧率的视频画面有所追求,因为更高帧率的画面意味着在相同时间内能够播放更多帧画面,意味着视频观感更为流畅。
本篇就来尝试一个开源的自动补帧算法——RIFE。
论文标题:RIFE: Real-Time Intermediate Flow Estimation for Video Frame Interpolation
论文地址:https://arxiv.org/pdf/2011.06294v5.pdf
论文中文翻译:https://blog.csdn.net/superbinlovemiaomi/article/details/121305931
开源代码:https://github.com/megvii-research/ECCV2022-RIFE
RIFE简介
RIFE是由北大和Megvii Inc的研究人员于2020年发表在ArXiv上的视频插帧算法,之后发表在ECCV2022。
在论文的开篇,作者就放了一张RIFE和其他补帧算法的效果比较图,纵坐标是PSNR(峰值信噪比),从下图中可以看到,在不同帧率下,RIFE均取得了较好的效果。
RIFE的大致结构如下图所示:
输入两张相邻帧的图片到IFNet中,输出近似中间流(approximate intermediate flows)(类似光流法),然后和第一帧的图片一起进行后向变形(Backward Warping),得到两张预测图片,最后和第二帧的图片,一起经过一个融合过程(Fusion Process),最终输出中间帧(第一帧和第二帧之间)的预测图片。
论文最后,作者给出了各算法详细的数据比较和可视化比较结果,可以看到RIFE基本处于领先地位,而且它在模型复杂度上也比其它模型要好很多。
更多具体细节不仔细研究了,需要进一步了解可以看原论文。
RIFE实践
下面就到快乐的实践环节,基于RIFE的应用有很多,为了开发便利,这里直接运行官方开源的Github版本。
克隆代码,配置环境不做细述。
配置好环境后,需要下载官方提供的模型,放置在train_log
目录下。
之后,终端输入:
python inference_video.py --exp=1 --video=video.mp4
这里的exp是一个帧率倍数,exp=1表示将视频帧率修复为原来的2倍;exp=2表示将视频帧率修复为原来的4倍(
2
2
2^2
22),以此类推。
video为视频路径。
稍等片刻,即可在输入视频的路径下得到新生成的视频。
效果演示
我这里用好友绘制的低帧素材进行测试。
原视频:https://www.bilibili.com/video/BV1Rt4y1L7Rb
AI补帧:RIFE效果演示
注:由于B站限制最高只能到60帧,因此96fps和192fps看不出差别。
视频中将RIFE的效果和PR自带的帧采样
,光流法
,帧混合
效果进行对比,这三种补帧方式简介如下:
- 帧采样:在调整视频的播放速度之后,多出来的帧或空缺的帧按现有前后帧来生成。也就是复制前后帧。
- 光流法:软件根据上下帧来推断像素移动的轨迹,自动生成新的空缺帧。有点类似于运动模糊计算方法。
- 帧混合:混合上下两帧合并生成一个新的帧来填补空缺。
整体看下来RIFE补帧效果还是可以的,不过视频里存在一个小Bug:人物的左侧衣襟会“瞬移”到右侧,这主要是由于RIFE运用到了前后两帧的信息,两侧衣襟过于靠近且相似,造成了程序的误判。
附录:PR设置滑动变化效果
上面的演示视频中的滑动对比效果制作方式也简单记录下。
滑动效果核心是PR自带的视频过渡中的“划出”效果。
首先需要将素材按照下面时间轴的方式进行排布,滑动过程中需要两段素材有重叠。
然后将每一段字幕和素材进行嵌套:
最后添加划出效果,设置划出线条的颜色和粗细,拖动划出时间条如下图所示:
代码备份
RIFE源代码和模型文件备份如下:
https://pan.baidu.com/s/1gmN_5K6Re324AyZIGMQLmA?pwd=8888
相关文章
- 【机器学习】ID3算法构建决策树
- Java实现 蓝桥杯VIP 算法提高 乘法运算
- 【LeetCode算法-13】Roman to Integer
- 《百面机器学习》拾贝----第三章:经典算法
- Atitit 资源清理之道与gc之道 gc算法 清理临时表 临时资源 使用的算法类型是 引用计数(reference counting),基于时间过期自动清理资源 1. 3.1. 从各种
- ML之prophet:利用prophet算法对上海最高气温实现回归预测(时间序列的趋势/周季节性趋势/年季节性趋势)案例
- Crawler/ML:爬虫技术(基于urllib.request库从网页获取图片)+HierarchicalClustering层次聚类算法,实现自动从网页获取图片然后根据图片色调自动分类
- DL之pix2pix:pix2pix(cGAN)自动上色算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- XAI之SHAP:SHAP算法(How—每个特征如何重要/解释单个样本的预测)的简介(背景/思想/作用/原理/核心技术点/优缺点)、常用工具库、应用案例之详细攻略
- ML之Hierarchical clustering:利用层次聚类算法来把100张图片自动分成红绿蓝三种色调
- AutoML之flaml:基于OpenML数据集利用flaml框架自动寻找最优算法及其对应最佳参数(对比lightgbm和xgboost算法)实现预测航班是否延误二分类任务案例之详细攻略
- 基于小生境粒子群优化算法的考虑光伏波动性的主动配电网有功无功协调优化(Matlab代码实现)
- 【电动车优化调度】基于模型预测控制(MPC)的凸优化算法的电动车优化调度(Matlab代码实现)
- SCA算法优化脉冲耦合神经网络的图像自动分割(Matlab代码实现)
- 必知必会,这4种算法超参自动优化方法真香啊
- Python实现基于Optuna超参数自动优化的LightGBM回归模型(LGBMRegressor算法)项目实战
- Python实现基于Optuna超参数自动优化的LightGBM分类模型(LGBMClassifier算法)项目实战
- Python实现基于Optuna超参数自动优化的xgboost回归模型(XGBRegressor算法)项目实战
- Python实现基于Optuna超参数自动优化的xgboost分类模型(XGBClassifier算法)项目实战
- Python实现PCA降维和KNN人脸识别模型(PCA和KNeighborsClassifier算法)项目实战
- 数据挖掘10大算法(1)——PageRank
- 目标检测算法——YOLOv5/YOLOv7改进之结合NAMAttention(提升涨点)
- 【OpenCV 例程300篇】207. Photoshop 色阶自动调整算法
- m基于ICP和网格拉普拉斯变形算法的三维模型配准matlab仿真
- 数据结构和算法 十、链表的类型
- Python ---- 算法入门(1)贪心算法解决部分背包问题
- AF 自动聚焦 算法 Understanding Auto Focus