RIFE:把动作放慢时,用中间帧减少跳动

开源项目猫目发布于 来源:RIFE 官方 README
从小孩抱球的官方动画,看懂运动过渡怎样补出来,以及慢放、帧率与清晰度的区别。
RIFE:把动作放慢时,用中间帧减少跳动

为什么值得关注

一对画面之间可以合成不同时刻的中间帧,让清楚但慢放跳动的素材有值得尝试的处理路线。

适合谁:想制作慢动作或改善动作连续性,愿意检查运动边缘的视频爱好者与开发者

这次有哪些亮点

  • IFNet 直接估计中间运动,支持一对图像间任意时刻插值
  • 提供视频和两张图像的推理入口,可指定倍数与输出帧率

使用前需要知道

插帧不等于恢复空间细节;遮挡、切镜与字幕需检查,官方慢动作命令示例会移除音频;权重另行下载,第三方 GUI 可能收费。

把孩子接球的一小段视频放慢,常见的问题是动作一格一格地跳。RIFE 处理的正是两个画面之间缺少过渡的部分:给它前后两帧,估计中间时刻物体在哪里,再合成新的画面。它值得视频爱好者了解,因为提高帧率和提高分辨率是两件事;你可能只需要更连贯的动作,并不需要把整段素材放大成 4K。

看球和双手怎样移过两帧之间

RIFE 的 ECCV2022 官方仓库展示了一组“由两张输入图像进行 16 倍插帧”的动画。下面的小孩抱球 GIF 是其中一个官方示例,并非本文录制或处理的视频。

RIFE 官方插帧动画:穿格子衬衫的小孩抱球,球与双手的位置逐步变化

图源:RIFE 官方 README 的两图插帧示例,原图为 368×256。重点看球、手掌与袖口在连续画面中的位置变化;它展示的是动作过渡,不是清晰度增强。

这段画面的好处在于,读者不用先理解论文就能找到需要补足的运动:球在手中下降,双臂跟着改变位置,背景大体保持稳定。如果只是把原有帧重复播放,慢下来后会在同一姿势停留,再突然跳到下一个姿势;插帧则尝试在这两者之间增加新的姿势。官方给出的“16 倍”描述属于该两图示例,不能顺手改写成任意视频都能无损获得 16 倍慢动作。

这里也有值得盯着看的交界:手指与球的接触处、袖口和身体重叠的位置。补出的帧需要解释谁挡住了谁,以及运动后露出了什么。动画可以帮助认识这个任务,却没有提供每一张中间帧的真实拍摄对照,因此不能据此断言所有细节都复原正确。

补的是时间位置,原片的模糊仍然存在

论文摘要把 RIFE 的关键结构称作 IFNet:它直接估计用于中间帧的运动信息,并用时间位置作为条件,支持一对图像间不同时刻的插值。对使用者而言,输入不只是“想要顺一点”的愿望,而是前后画面提供的线索;输出则是算法推算的中间画面。

这也说明了它与照片增强的差别。原片里已经糊掉的球面图案、衣服纹理,并不会仅因为画面数量增多就自动恢复。若你遇到的是压缩色块或失焦,单独补帧未必解决最显眼的问题。相反,素材本身足够清楚、只是慢放后姿势间隔太大时,插帧更贴近需求。

帧率和播放速度还要分开决定。作为教学情境,同一秒素材从 30 帧变成 60 帧,仍按每秒 60 帧播放,时长可以保持不变;若把增加后的帧按较低帧率播放,才会延长时间、产生慢动作。这是时间安排的区别,不是本篇对 RIFE 的性能测试。官方命令示例也分别提供倍数与输出帧率设置,其中慢动作示例明确注明会移除音频,原声衔接需要另作安排。

哪些片段值得先试

我会先选一个单镜头、主体运动比较连贯的短片段,像官方示例那样观察四肢与物体边缘,再决定是否处理整段录像。遮挡、大幅快速运动、突然切镜和后加字幕都应该单独检查:从“估计两帧之间的运动”这一任务可以推知,画面关系越不连续,越不能只看导出后的帧率数字。这个检查建议是编辑判断,不表示本文测出了这些场景的失败率。

入口可从官方仓库的 CLI Usage 开始,需要 Python 依赖与另行下载的预训练参数。仓库区分了常用 HD 权重和论文评测权重,不应把某一套模型的结果泛化到所有 RIFE 版本。README 所列 Flowframes、SVFI 等图形工具是其他开发者的产品,价格、平台与模型版本应分别确认,不能因为算法开放就认定这些软件都免费。

仓库代码采用 MIT 许可,分发时需要保留相应版权与许可说明。本文没有运行模型,也不以论文或 README 中特定显卡的速度数字承诺你的处理时间。若目标是把动作慢放得更连贯,先检查球与手之间的过渡,会比一开始追求最高倍数更容易判断它是否值得加入流程。

参考资料:

原始资料:RIFE 官方 README

以上为编辑整理,功能、许可与使用条件以官方说明为准。

返回每日分享