3

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

 2 years ago
source link: https://juejin.cn/post/7131995015253295141
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

2022年08月15日 07:03 ·  阅读 1228
智能插帧,打造丝滑视频体验

本文有部分演示视频请移步 字节跳动技术团队微信公众号 进行观看

暑假期间小跳出去旅游,沿途用手机记录下了许多美丽景色。回家路上,小跳打开手机想用慢倍速去细细品味自己拍摄的视频,发现视频强烈的卡顿感让其“黯然失色”。失望的小跳想起前段时间在抖音上看到的剪映 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 论文

图源 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.

字节跳动智能创作团队是字节跳动音视频创新技术和业务中台,覆盖了计算机视觉、图形学、语音、拍摄编辑、特效、客户端、服务端工程等技术领域,在部门内部实现了前沿算法-工程系统-产品全链路的闭环,旨在以多种形式向公司内部各业务线以及外部合作客户提供业界最前沿的内容理解、内容创作、互动体验与消费的能力和行业解决方案。

目前,智能创作团队已通过字节跳动旗下的火山引擎向企业开放技术能力和服务。

火山引擎联系方式

业务咨询:[email protected]

市场合作:[email protected]

电话:400-850-0030

通过下方链接或二维码进行简历投递,加入我们,让我们一起做图像视频算法的领军者!

a941925d335d4303a478a1f268200f80~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp

dd9e31f934214c3581182e57379221cb~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK