智能插帧,打造丝滑视频体验

原创 精选
移动开发
暑假期间小跳出去旅游,沿途用手机记录下了许多美丽景色。回家路上,小跳打开手机想用慢倍速去细细品味自己拍摄的视频,发现视频强烈的卡顿感让其“黯然失色”。

暑假期间小跳出去旅游,沿途用手机记录下了许多美丽景色。回家路上,小跳打开手机想用慢倍速去细细品味自己拍摄的视频,发现视频强烈的卡顿感让其“黯然失色”。失望的小跳想起前段时间在抖音上看到的剪映 APP 丝滑慢放教程,抱着试一试的态度打开了剪映,几番操作下来,视频发生了质的改变,像是回到了拍摄的那瞬间,把当下没被记录的片段统统还原出来,卡顿感“一键”全无。是什么技术让视频还原出当下的瞬间,让卡顿视频变得如此丝滑?本文对字节跳动智能创作团队自研视频插帧技术进行了深度解剖,为大家找到了丝滑视频的秘诀。

视频帧率(单位:fps)指的是每秒播放的画面数。在一定范围内,帧率越高,视频观感越流畅。早期电影的帧率在 20~60 fps,现代电视广泛使用的帧率标准是 25 fps 和 30 fps。

随着技术的发展,电视、手机等播放设备能够支持播放更高帧率的视频。如今用户已经不满足陈旧的 20~30 fps 视频标准。由于网络传输、拍摄丢帧、后期编辑等原因,线上甚至存在不少实际帧率低于 15 fps 的视频。为了消除低帧率视频的卡顿感,需要使用插帧技术来提升视频的帧率,从而给观众带来丝滑流畅的播放体验。

插帧算法通过计算原视频的帧间运动关系,在两帧之间插入符合运动关系的中间帧,从而提升视频的帧率。

图片

两帧之间插入新的中间帧

字节跳动智能创作团队打造了一套多端视频智能插帧解决方案,在抖音、剪映、西瓜等多个业务场景落地。该方案能对低帧率短视频进行帧率提升,改善短视频观看体验;同时还为视频创作者提供了高阶视频剪辑工具,对变速视频进行补帧、生成丝滑慢动作效果。除此之外,还衍生出多种特效玩法,在多个业务上取得了投稿、拉新、留存、DAU 等指标的显著收益。

视频插帧业界解决方案

低帧率视频产生的原因有很多,视频从创作到消费的链路上,拍摄、剪辑、编解码、下发策略等因素都可能会对视频帧率造成影响。因此在各个环节上,插帧技术都有应用价值。需要构建一套多端视频插帧解决方案,才能最大程度地将帧率问题优化到极致。

针对不同的使用场景、不同的后端设备,算法方案也有所不同。当前业界常用的解决方案有:

帧融合或重复帧

  • 直接将前后两帧的融合结果或重复帧作为新增的中间帧,插入到原视频中。该方法计算简单,但会产生拖影感和卡顿感,并没有起到提升视频观看体验的作用。通常可作为特殊场景、低端设备的兜底方案。
  • Adobe Premiere,Final Cut Pro 等专业剪辑软件中也集成了该方法,作为插帧的一个可选方法

传统 MEMC 方案

  • MEMC (Motion Estimation, Motion Compensation) 是一类运动补偿算法。此类算法会对相邻两帧进行运动估计,补偿出原视频中本身没有的画面,达到提升视频帧率的目的。MEMC 所生成的中间帧符合原视频的平滑运动关系,因此可以使视频更流畅。但对于运动复杂的场景,很难在有限的算力条件下得到精确的结果。
  • Adobe Premiere 、Final Cut Pro 中的光流法插帧( Pr 中也叫“时间插值”)中就是采用此类方法。

图片

运动补偿示意

深度学习方案

  • 基于深度学习的方案,通常将原视频相邻两帧作为神经网络的输入,结合光流神经网络、遮挡估计等技术,来预测两帧之间的中间帧。深度学习方法可以提取图像语义信息,因此往往在遮挡估计等方面表现更优。但深度学习方法往往计算量大,很难在移动设备上应用。目前基于深度学习的光流算法较为成熟,可以计算两帧之间的密集光流。用了光流信息,可以将前后两帧图像 Warp 到中间时刻,从而合成中间帧。
  • Nvidia SuperSlomo 提供一个在 Nvidia GPU 上运行的深度学习插帧算法,但对显卡性能有较高的要求。

图片

图源 Nvidia SuperSlomo 论文

自研插帧算法的突破与优化

多端插帧算法能力矩阵

为了服务抖音、西瓜、剪映、火山引擎等不同业务场景的需求,同时全链路优化帧率问题,我们构建了一套视频插帧多端解决方案。

图片

视频插帧多端解决方案

服务端

  • 服务端拥有 GPU 算力,因此适合采用深度学习方案来获得更平滑的插帧效果。自研服务端插帧算法为抖音业务提供了云端帧率提升转码能力,以改进低帧率短视频的观看体验。日后也会以云服务的形式,逐步对更多业务线、ToB 客户开放。

移动端

  • 如果能直接在移动设备上使用插帧算法,那么算法能力可以触达更多的视频创作者,在视频生产环节即可提升视频流畅度。针对移动端使用场景,我们研发了基于 MEMC 的插帧算法,并针对 MEMC 算法存在的问题做了细致的优化。

PC 端

  • 专业视频创作者往往使用桌面端专业剪辑软件进行视频创作。自研的视频插帧解决方案也为 PC 端的剪映专业版提供了插帧能力。对于配备有独立显卡的 PC 设备,可采用深度学习方案来保证更好的插帧效果;其他 PC 设备可复用移动端的核心算法,来保证算法运行的性能。

优化方案

尽管插帧技术已有较长的发展历史,业界也有成熟的应用案例,但仍然面临着性能和效果的巨大挑战。在性能方面,服务端 GPU 算力成本大,移动端算力局促且机型分布复杂。在效果方面,插帧效果依赖于准确的运动估计,如果视频中存在大幅运动、前后遮挡等复杂运动场景,生成的中间帧可能会产生模糊、拖影、块状破碎感等现象。针对这些难点,字节跳动智能创作技术团队,从算法与工程多个维度对多端插帧算法进行了优化。

神经网络模型压缩

  • 我们采用模型剪枝技术,减少神经网络中冗余的权重。并且通过特征共享,减少双向光流的计算量。除此之外,根据光流的平滑特性,我们采用在小分辨率光流推理、在原分辨率进行中间帧合成的策略,减小复杂网络的计算量。

图片

插帧网络结构示意

内容自适应的插帧可行性分析

  • 并不是所有的视频的内容都适合使用插帧,对于相邻帧变化剧烈的场景(例如转场、剧烈运动),插帧算法无法生成一个合理的结果,甚至可能引入严重伪影。因此我们对视频内容进行插帧可行性判断,根据图像特征、运动幅度等信息,自适应地决定是否为当前帧进行插帧。

更高效的 MEMC 策略

  • 块匹配是一个基于搜索的运动估计算法,需要在前后帧的一定领域内搜索最匹配的图像块。对于运动复杂的视频,这种方法往往需要较大的搜索空间,才能搜索出最优运动向量。这给移动端应用带来了算法瓶颈。我们研发了一套光流指导的块搜索策略,来解决块匹配的性能和效果的问题。自研方法首先在相邻两帧之间,计算一个多尺度快速光流。图像金字塔多尺度策略,可以使得算法对大运动场景更鲁棒。得到初步光流信息后,可以以光流作为指导,在金字塔最大尺度上做进一步块搜索。此时,块搜索只需在较小的搜索空间即可快速搜索出最优运动向量。

图片

  • 基于多尺度金字塔的快速光流

图片

在金字塔最大尺度上做块搜索

  • 无论是多尺度快速光流,还是光流指导的块搜索,整个计算过程都可并行计算。使得算法在移动设备上,也能高效运行。

端上异构计算

  • 在端上使用了 CPU+GPU 的计算方式,将计算密集型任务分配给 GPU,使用 opencl 或 metal 实现算子,并根据平台做特定的性能调优;而计算稀疏型任务则在 CPU 上完成计算,并使用多线程等操作进行性能优化。通过异构计算,在端上可以实现 5 倍左右的加速比,性能达到落地需求。

端上算法分级策略

  • 抖音、剪映等 app 覆盖用户量级大,用户机型多样。为了保证算法的机型覆盖率,让不同机型用户获得最佳体验,我们采用了端上算法分级的策略。根据用户机型的计算能力,端上插帧算法分为高、中、低三个档位,高档位优先保证效果,适合高端机型;低档位优先保证性能,适合低端机型。

智能补帧及其衍生应用

剪映变速-智能补帧

  • 我们的插帧能力已上线剪映“变速”面板。视频素材慢放后,可勾选“智能补帧”选项,让慢动作更丝滑。

图片

剪映智能补帧入口

自动变速创意玩法

  • 剪映已在抖音玩法一栏上线“丝滑变速”效果,可以一键生成卡点变速效果。该玩法的“丝滑”效果,也少不了插帧能力的支持。海外版 CapCut 上线了同样的能力,上线两周即形成爆款。

帧率提升

  • 除了让慢放更丝滑,帧率提升也是插帧算法的一大应用。西瓜视频“玩法库”面板提供了帧率提升的体验入口,可将用户上传的低帧率视频提升为高帧率视频,提升视频的流畅度。

王家卫电影风格

  • “王家卫电影风格”特效是插帧算法的一个衍生玩法,已上线剪映拍摄器及特效。该风格通常是在拍摄阶段通过摄像机慢快门来产生“拖影”的效果。而通过插帧算法的运动估计及补帧能力,在视频后期阶段,即可一键生成符合视频场景运动关系的“拖影”效果。

辅助其他视频算法节省算力

  • 一些效果惊艳的 GAN 特效算法,往往复杂度高。在视频特效场景需要逐帧进行神经网络推理,很难到达实时性能。但在插帧算法性能优于 GAN 特效效法的前提下,可以使用“特效+补帧”的策略来加速视频处理。复杂度高的GAN 特效只需要以一定间隔处理更少的帧数,其余中间帧使用插帧算法生成。

图片

插帧辅助其他算法减小耗时

未来展望

除了视频编辑、特效玩法,未来我们将持续探索插帧技术在视频高清低码场景的应用价值。插帧技术不仅可以提升视频内容质量,还能在带宽节省、低延传输等方面发挥价值。

  • 低功耗实时视频插帧结合厂商能力,在算法与工程上极致优化插帧性能。服务端只需下发更低帧率的低码率视频,使用高性能、低功耗的插帧算法,端上进行实时插帧还原高帧率视频。不仅保证用户体验,还能节省带宽成本。
  • 结合编解码器进行智能补帧H.264 编码器内部会进行运动估计,通过编码运动补偿残差来进行帧间编码。新一代 H.266 编码器在运动估计准确性、运动补偿准确性上进行了更深入的优化。将编解码器与插帧进行结合,运动估计信息能够被插帧算法复用,插帧算法也能够进一步优化帧间编码的压缩率。

参考文献

[1] Jiang, Huaizu, et al. "Super slomo: High quality estimation of multiple intermediate frames for video interpolation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.

[2] Niklaus S, Liu F. Context-aware synthesis for video frame interpolation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 1701-1710.

[3] Choi B D, Han J W, Kim C S, et al. Motion-compensated frame interpolation using bilateral motion estimation and adaptive overlapped block motion compensation[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2007, 17(4): 407-416.​

责任编辑:未丽燕 来源: 字节跳动技术团队
相关推荐

2020-01-29 19:35:17

开源技术 软件

2022-12-19 14:53:07

模型训练

2023-03-29 20:06:27

IdeaHub

2024-02-21 20:10:18

滚动视频网页

2020-09-07 07:00:09

AI 数据人工智能

2014-03-17 09:53:19

Akamai

2024-05-21 10:28:51

API设计架构

2023-03-03 17:00:00

部署Linux内核

2023-07-18 07:56:20

2021-05-10 20:58:11

数据库扩容用户

2021-11-17 08:16:03

内存控制Go

2022-11-03 07:49:52

JS原生元素

2022-03-11 15:29:41

谷歌模型视频

2021-07-14 13:46:28

KubeVela阿里云容器

2020-07-22 15:15:28

Vue前端代码
点赞
收藏

51CTO技术栈公众号