B站画质补完计划(2):视频超分让像素细腻生动

本期作者

1 前言

为了给用户提供更清晰的画质体验,B站自研的超分辨率算法已经在站内广泛应用,支持了如《赛马娘》、《流浪地球2》、《权力的游戏》、英雄联盟S赛赛事直播等知名番剧、电影电视剧以及重要游戏赛事直播的 4K 视频流生产。

2 超分算法的应用背景

2.1 不同分辨率视频的画质差异

随着终端显示技术的快速发展,4K 规格的终端显示设备已经逐渐开始普及,用户对于 4K 清晰度视频的观看需求也呈现出不断增长的趋势。然而,由于制作年代久远、拍摄设备受限等原因,流媒体平台上大量视频片源还是以 1080P、720P 的规格存在,无法满足用户在高规格显示设备上观看 4K 清晰度视频的需求。

那么,1080P 视频和 4K 视频的画面质量差距有多大呢?可以参考图1中的视频画面对比,由于 1080P 视频画面里没有足够多的有效像素去描述草地的纹理、圆柱的线条,因此其呈现的草地纹理细节远没有 4K 视频画面中丰富,圆柱线条也远没有 4K 视频画面中流畅。

为了满足不断增长的 4K 清晰度视频的观看需求,可以将低分辨率视频增强提升为高分辨率视频,所使用的技术称为超分辨率( Super Resolution )。

图片

图1. 1080P 视频和 4K 视频的画面质量对比

 2.2 传统插值超分算法的局限

各类超分辨率算法中,在实际应用层面覆盖范围最广的是传统插值超分算法。传统插值超分算法(最近邻差值、双线性插值、双三次插值等等)的原理是利用原始画面中的部分像素作为原始信息并根据某些规则对新像素的像素值进行预测。传统插值超分算法解决的问题是可以将原始视频的分辨率高效地上采样到任意规格,以适应各种高规格显示设备的实际播放尺寸。

但是,传统插值超分算法缺乏足够的非线性拟合能力来复现复杂的图像特征,无法真正还原缺失的纹理细节。如图2所示,1080P 原始视频画面中缺失的草地细节在经过传统插值超分算法处理后并未被恢复。因此,其主要作用仅限于调整视频播放的尺寸,并不能改善原始视频的画面质量。

图片

图2. 传统插值超分算法的局限

2.3 深度学习超分算法的应用价值

由于插值超分算法在提升分辨率的同时并不能真正还原缺失的纹理细节,因此如果想要在高分辨率屏幕上获得更优质的观看体验,就需要一种在提升分辨率的同时又能拟合复杂纹理细节的超分算法,基于深度学习的超分算法在这方面展现了出色的效果。如图3所示,低分辨率图像块在经过插值超分算法处理后线条边缘仍存在一定程度的伪影,且整体观感较为模糊。对比之下,经过深度学习超分算法处理后的高分辨率图像块显然减少了线条附近的伪影,线条边缘更加连续。

图片

图3. 插值算法与超分算法的处理结果对比

2.4 超分算法的难点及基于深度学习的解决方案

超分辨率算法的原理如图4所示,低分辨率像素块在像素域扩充后得到高分辨率像素块,高分辨率像素块中存在诸多未知像素值的像素,而超分辨率算法的作用就是预测出合理的像素值以提升高分辨率像素块的画面质量。从原理上看,超分算法的难点在于这是一个不适定问题,其潜在的解空间可能很大,很难找出唯一的最优解。

因此,对于基于深度学习的超分算法的落地而言,需要解决两个最关键的问题:1. 如何给不同类型的输入像素块提供一个合适的优化方向?2. 如何设计一个合理的算法链路实现对输入像素块的优化?

图片

图4. 超分算法的基本原理

针对第一个问题,我们对海量视频做了基础画质特征分析,并根据画质分析的结果对视频内容进行分类,给不同类别的视频内容设定不同的优化方向,并提供了业务上落地的具体案例,这部分内容将在第三章节进行详细介绍。

对于第二个问题,我们自研了一套超分算法,完成了从数据模拟、模型结构设计到损失函数定义的整套技术链路研发,这部分内容将在第四章节进行详细介绍。

3 基础画质特征及画质优化方向分析

在本章节,我们将对站内海量视频进行了基础画质特征分析,发现不同内容的视频在基础画质特征上有明显差异。根据这种差异我们给不同内容的视频提供了专项的优化方向,并提供了业务上落地的案例。

3.1 基础画质特征分析

在实际应用超分算法提升视频清晰度的过程中,需要考虑到不同内容的视频在基础画质特征上的差异,进而可能导致优化方向的不同。如图5所示,我们对不同内容的视频画面做了离散余弦变换 ( DCT 变换),并在频域上观测其强度值的分布。需要说明的是,DCT 变换后的频域图的低频部分集中在左上角,高频部分集中在右下角。我们发现动漫、游戏和真实世界视频在频域上的响应有明显差距。

动漫视频画面的频域响应集中在低频区域,意味着动漫视频画面在像素域上主要由大面积的纯色区域以及粗粒度的线条构成。

游戏视频画面增加了高频部分的响应,但响应主要还是集中在低频区域,意味着游戏类视频画面和动漫视频在像素域上拥有相似的特点,但在此基础上增加了一些有高频属性的复杂纹理、细粒度线条结构。

真实世界视频画面的频域响应范围最广,在高频部分的响应最强,意味着这类视频在像素域上的纹理结构最为复杂,有着细腻的纹理细节,而这点在诸如动物毛发、皮肤表面的构造上也有所体现。

图片

图5. 视频画面频域变换

3.2 画质优化方向分析及落地案例展示

如图6所示,根据对海量视频进行基础画质特征分析的结果,考虑到动漫、游戏和真实世界视频在画质基础特征上呈现的不同点,我们给各类视频设计了特定的优化方向,并提供了业务上落地的具体案例进行展示。

图片

图6. 线上超分业务落地逻辑

3.2.1 动漫视频

优化方向:对于动漫视频,其画面的构成元素大多是纯色区域、粗粒度的线条结构,缺乏复杂、细腻的纹理结构。因此,针对动漫视频的重点优化方向是提升线条的锐利程度,去除大面积色块中的画面噪声。

案例一:由图7可知,《赛马娘》视频画面中人物面部线条、服饰线条在经过动漫超分模型处理后变得更加连续、锐利,大面积纯色区域中的画面噪声得到去除,整体清晰度得到大幅提升。

案例二:同样地,图8《知晓天空之蓝的人啊》视频画面中架子鼓、人物面部的轮廓线条在经过动漫超分模型的优化后变得更加平滑、锐利。

图片

图7. 《赛马娘》画面超分前后画质对比,上图为超分前,下图为超分后

图片

图8. 《知晓天空之蓝的人啊》画面超分前后画质对比,上图为超分前,下图为超分后

3.2.2 游戏视频

优化方向:对于游戏视频,其画面的构成元素与动漫视频相近,但在此基础上又有相对复杂的纹理结构。因此,对游戏视频画面的优化需要兼顾线条锐利程度的提升、噪声去除,以及对纹理结构的强化。

案例一:由图9可知,经过游戏超分模型处理,王者荣耀视频中英雄轮廓变得更加连续,画面噪声被成功去除,与此同时,草地、树木等较为复杂的纹理细节也得到了恢复,画面整体清晰度得到大幅提升。

案例二:由图10可知,经过游戏超分模型处理,炉石传说视频中蓝色宝石的观感从模糊变得清晰,同时文字边缘的锯齿得到了有效消除,呈现出更为连续、锐利的外观。

图片

图9. 王者荣耀游戏画面超分前后画质对比,上图为超分前,下图为超分后

图片

图10. 炉石传说游戏画面超分前后画质对比,上图为超分前,下图为超分后

3.2.3 真实世界视频

优化方向:对于真实世界视频而言,其画面的构成元素主要由细粒度的线条和复杂、细腻的纹理构成。因此,针对真实世界视频的优化方向是对细粒度的线条结构以及复杂纹理结构的强化。

案例一:在图11可知,经过真实世界超分模型处理后,画面中高楼建筑外立面的清晰度明显提升,马路边绿化的细节也得到大幅增强,绿化带中树叶的细节变得更加丰富。

案例二:图12中人物的头发细节在经过真实世界超分模型处理后变得更加细腻,细小的发丝也变得清晰可见。人物衣物上的纹理细节也得到强化,织物表面呈现出更为丰富的层次感。

图片

图11. 《前任4》画面超分前后画质对比,上图为超分前,下图为超分后

图片

图12. 《权力的游戏》画面超分前后画质对比,上图为超分前,下图为超分后

4 自研超分算法设计细节

本章节将介绍B站自研超分算法的实现细节。如图13所示,关键的算法包含三个部分:降质方法,模型结构,以及损失函数,每个部分的设计细节将在以下小节内作具体介绍。

图片

图13. 超分算法 Pipeline

 4.1 降质方法

4.1.1 主流降质方法

在超分辨率领域,较为主流的降质方法为 Real-ESRGAN 论文中提到的高阶降质策略。对于一个降质周期而言,其模拟的都是图像从成像、处理、编码、传输过程中可能经历的退化过程,而高阶降质策略就是将图像经过多个相似的降质周期处理,进而产生低清图像。

然而在实际生产过程中,由于不同内容视频的优化方向不同,降质的策略也会有所变化。例如,对于动漫视频,超分模型的优化方向是增强线条的锐利度和去除纯色区域的画面噪声,所以降质策略的重点在于对线条的破坏和对噪声的模拟。

但是对于真实世界视频,超分模型优化的方向是增强图像中的纹理信息,当降质过程中线条被过度破坏或噪声添加过度时,原始图像中存在的纹理信息往往会被模型当作噪声抹去,导致模型生成的高分辨率图像有涂抹感和平滑感。

因此,为了适应不同视频内容所对应的模型优化方向,需要微调高阶降质策略中的某些子模块,然而在现有的串行降质方法中,微调子模块的工作量较大且结果往往不可控。

图片

图14. Real-ESRGAN 降质方法

4.1.2 自研降质方法

因此,我们自研了一种适配实际应用的降质方法,目标是降低微调降质策略的工作量,且让微调的结果稳定可控。我们没有采用类似于 Real-ESRGAN 中串行的降质方法,而是自研了一种更有针对性的具有并行结构的降质策略。并行降质分为三个分支,分别为面向纹理增强的降质、面向线条恢复的降质以及面向噪声去除的降质。

图片

图15. 自研降质方法

面向纹理增强的降质由轻度模糊退化、上下采样和压缩退化构成,其目的是轻微破坏高清图像中的纹理结构信息,但由于降质程度较轻,原始纹理信息又有所保留,给模型提供一个稳定优化纹理的优化方向。

面向线条恢复的降质由随机模糊退化、上下采样和压缩退化构成,其目的是较大程度地破坏高清图像中的线条,使模型在训练过程中获得将扭曲断裂的线条恢复成连续流畅的能力。

面向噪声去除的降质由随机高斯噪声、随机柏松噪声以及随机压缩退化构成,其目的是给高清图像添加一定的程度的噪声,使模型在训练过程中获得去除噪声的能力。

三个分支的降质结果会被赋予相对应的权重,并最终相加形成最终的降质结果,而权重的赋值是与视频内容高度相关的。

4.2 模型结构

4.2.1 整体框架

对于模型结构,我们有针对性地设计了两个串联的模块,分别为结构信息处理模块和纹理信息处理模块。结构信息处理模块对大尺度结构信息敏感,负责去除平滑区域的噪声、修复物体的轮廓线条。纹理信息处理模块负责对细粒度的纹理细节进行一定程度的拟合和增强。

对于结构信息处理模块,由于这部分图像信息处理难度不高,所以先对输入进行 Pixel Unshuffle 下采样,并牺牲一些通道数,用较小的算力和较大感受野对粗粒度的结构信息进行处理,得到粗估计结果。

对于纹理信息处理模块,需要对细粒度的纹理细节进行拟合,故在输入尺寸上对粗估计的结果进行精调。

图片

图16. 自研超分模型结构设计

4.2.2 基本组件

实际上,结构信息处理模块和纹理信息处理模块采用的是同一种卷积模块 REPB,其全称为 Residual Efficient re-Parameterization BlockREPB 有两个基本的组件,分别为 Conv-x 和 ESA

Conv-x 是一组运用了重参数化技巧的卷积核,在训练时有三个并行的分支,分别为 3x3、5x5、1x1 卷积核和残差连接。由于卷积核的线性可加特性,故在推理时可将三个并行分支的权重合并为同一个卷积核下的权重,在不牺牲效果的条件下获得更高的推理效率。

ESA全称为 Efficient Self-Attention,是一种高效的自注意力机制,通过池化层和残差结构的组合来对局部和非局部的图像特征进行融合,并对某些重要的结构、纹理特征进行强化。

4.3 损失函数

同样地,在设计损失函数时,我们也充分考虑到了模型在处理不同内容的输入时需要有不同优化方向的需求,故有针对性地采用了像素损失函数、线条损失函数以及纹理损失函数,并通过加权的方式得到最终的损失函数,以适应不同的超分内容。

4.3.1 像素损失函数

像素损失函数计算了图像真值和模型预测值的逐像素差值之和,并通过求平均的方式得到最终的整体损失。像素损失函数衡量的是图像真值和模型预测值的整体差异,为模型提供全局的优化方向。

图片

图17. 像素损失函数

4.3.2 线条损失函数

对于线条损失函数的构建,我们先对图像真值通过 Sobel 算子提取图像内的边缘信息,进一步经过阈值分割得到初步的线条区域掩膜,将初步的线条区域进行膨胀腐蚀得到覆盖范围更大的线条掩膜。最终,将线条掩膜附加于像素损失函数上,得到对线条恢复更有针对性的线条损失函数。

图片

图18. 线条损失函数

4.3.3 纹理损失函数

对于纹理损失函数,首先将图像真值和模型预测值进行切块得到两组能更好描述图像局部纹理结构的小图像块集合,再对两组小图像块集合进行结构相似性(SSIM)的计算。SSIM 衡量了局部纹理细节的相似程度,相似程度越高,SSIM 的数值越接近1。最终,将两组小图像块集合的 SSIM 值求平均并计算与理论最优值的差距,我们就构造出了描述真值与预测值纹理相似程度的纹理损失函数。

图片

图19. 纹理损失函数

最后,根据视频内容以及优化方向的不同,像素、线条、纹理损失函数会被赋予相应的权重,并通过加权的方式得到最终的损失函数

5 总结与展望

作为B站视频画质矩阵的关键组成部分,我们的视频超分算法以提高视频画质为出发点,旨在为用户创造极致清晰的视频观看体验。在实际的算法落地实践中,我们从超分算法的基本原理出发,经过对海量视频的基础画质特征和优化方向的分析,配合算法层面的合理设计,最终实现了清晰自然的画质优化效果。

目前, 超分算法已成功投入线上点播业务,并已支持了大量视频的高分辨率视频流生产。未来,我们将持续在覆盖范围、主观效果和部署灵活度等方面进行算法的迭代更新,以在直播、点播、应用端等多个场景为视频画质提供更大的增益。

B站对画质的优化,不仅依靠的是视频超分算法的巧妙应用,我们多媒体实验室画质矩阵中的画质增强、人脸修复、HDR、插帧等技术同样发挥着至关重要的作用。关注哔哩哔哩多媒体实验室,我们将陆续分享更多画质相关技术文章,敬请期待。

哔哩哔哩多媒体实验室(bilibili mlab)是一支技术驱动的年轻队伍,具备完善的多媒体技术能力,以清晰流畅的极致视频体验为目标,通过对自研视频编码器、高效转码策略、视频图像分析与处理、画质评价等技术的持续打磨和算法创新,提出了画质可控的自适应转码算法、超实时4K60FPS直播超分、视频画质评价、数字水印、高性能多媒体算法推理基座、自研编码器、视频插帧等诸多高质量、低成本的多媒体解决方案,从系统尺度提升了整个多媒体系统的性能和效率, 助力哔哩哔哩成为体验最好的互联网视频社区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/711099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读:2020GhostNet华为轻量化网络

创新:(1)对卷积进行改进(2)加残差连接 1、Ghost Module 1、利用1x1卷积获得输入特征的必要特征浓缩。利用1x1卷积对我们输入进来的特征图进行跨通道的特征提取,进行通道的压缩,获得一个特征浓…

“智农”-高标准农田

高标准农田是指通过土地整治、土壤改良、水利设施、农电配套、机械化作业等措施,提升农田质量和生产能力,达到田块平整、集中连片、设施完善、节水高效、宜机作业、土壤肥沃、生态友好、抗灾能力强、与现代农业生产和经营方式相适应的旱涝保收、稳产高产…

C++设计模式之——享元模式详解和代码案例

文章目录 C中实现享元模式通常涉及以下几个关键部分:一个简单的C代码片段示例享元模式的进一步说明C享元模式代码案例——咖啡店订单系统享元模式在现实世界的应用场景 C中实现享元模式通常涉及以下几个关键部分: 享元模式(Flyweight Patter…

LCR 153. 二叉树中和为目标值的路径

解题思路&#xff1a; 回溯&#xff1a;先序遍历&#xff0b;路径记录 class Solution {LinkedList<List<Integer>> res new LinkedList<>();LinkedList<Integer> path new LinkedList<>();public List<List<Integer>> pathTarge…

android 如何动态修改swap

前言 当前项目中发现&#xff0c;产品在长时间使用后&#xff0c;会概率死机&#xff0c;通过log分析&#xff0c;可能和swap 大小太小导致的&#xff0c;需要修改增大swap大小后&#xff0c;压测验证。如何查看swap大小 cat /proc/swaps C:\Users\Administrator>adb shel…

元学习(meta-learning)的通俗解释

目录 1、什么是元学习 2、元学习还可以做什么 3、元学习是如何训练的 1、什么是元学习 meta-learning 的一个很经典的英文解释是 learn to learn&#xff0c;即学会学习。元学习是一个很宽泛的概念&#xff0c;可以有很多实现的方式&#xff0c;下面以目标检测的例子来解释…

阿里Replace Anything:一键替换万物,让图像编辑更简单

最近&#xff0c;阿里巴巴智能研究院在AIGC领域可谓动作频频&#xff0c;新品发布不断&#xff0c;在之前的文章已经向大家介绍了关于Animate AnyOne, Outfit Anyone&#xff0c;AnyText, AnyDoor等相关技术&#xff0c;感兴趣的小伙伴可以点击下面链接阅读&#xff5e; AI一键…

Laravel - API 项目适用的图片验证码

1. 安装 gregwar/captcha 图片验证码接口的流程是&#xff1a; 生成图片验证码 生成随机的 key&#xff0c;将验证码文本存入缓存。 返回随机的 key&#xff0c;以及验证码图片 # 不限于 laravel 普通 php 项目也可以使用额 $ composer require gregwar/captcha2. 开发接口 …

小塔RFID技术帮您解决“仓储管理危机”!

商品积压对一个企业带来的影响是久远的&#xff0c;仓储管理流转失衡&#xff1a;库存数据不准确、繁琐人工管理费时费力、商品爆仓及库存短缺等造成“仓储管理危机”&#xff0c;让企业自身陷入困境。 优化仓储管理&#xff0c;小塔RFID仓储管理方案轻松解决。利用RFID&#x…

java数据结构与算法刷题-----LeetCode538. 把二叉搜索树转换为累加树

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 解题思路 BST二叉搜索树&#xff0c;中序遍历结果为一个升序序列…

【C语言】三子棋

前言&#xff1a; 三子棋是一种民间传统游戏&#xff0c;又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏规则是双方对战&#xff0c;双方依次在9宫格棋盘上摆放棋子&#xff0c;率先将自己的三个棋子走成一条线就视为胜利。但因棋盘太小&#xff0c;三子棋在很多时候会出现和…

Unity(第十四部)光照

原始的有默认灯光、除了默认的你还可以创建 1、定向光源&#xff08;类似太阳、从无限远的地方射向地面的光&#xff0c;光源位置并不影响照射角度等&#xff0c;不同方向的旋转影响角度和明亮&#xff09; 1. 颜色&#xff1a;调整光的颜色2. 模式&#xff1a;混合是实时加烘…

FCU2601嵌入式控制单元获得开普「电磁兼容检验证书」

近日&#xff0c;飞凌嵌入式专为锂电池储能行业设计的FCU2601嵌入式控制单元获得了开普电磁兼容检验证书&#xff0c;此次性能检验项目包括高频干扰检验、静电放电干扰检验、辐射电磁场干扰检验、快速瞬变脉冲群干扰检验、浪涌干扰检验、工频磁场干扰检验、阻尼振荡磁场干扰检验…

基于docker实现MySQL主从复制(全网最详细!!!)

一、 通过docker镜像搭建MySQL主从 主服务器&#xff1a;容器名zi-mysql-master&#xff0c;端口3306 从服务器&#xff1a;容器名zi-mysql-slave1&#xff0c;端口3307 从服务器&#xff1a;容器名zi-mysql-slave2&#xff0c;端口3308 二、 关闭防火墙&#xff0c;启动docker…

免费百度快速收录软件

在网站SEO的过程中&#xff0c;不断更新网站内容是提升排名和吸引流量的关键之一。而对于大多数网站管理员来说&#xff0c;频繁手动更新文章并进行SEO优化可能会是一项繁琐且耗时的任务。针对这一问题&#xff0c;百度自动更新文章SEO工具应运而生&#xff0c;它能够帮助网站管…

CCF-A类 IEEE VIS‘24 3月31日截稿!探索可视化技术的无限可能!

会议之眼 快讯 IEEE VIS (IEEE Visualization Conference )即可视化大会将于 2024 年 10月13日 -18日在美国佛罗里达州皮特海滩的信风岛大海滩度假举行&#xff01;圣彼得海滩&#xff0c;以其迷人的日落和和煦的微风&#xff0c;作为激发创造力和促进可视化社区内合作的完美背…

工厂模式 详解 设计模式

工厂模式 其主要目的是封装对象的创建过程&#xff0c;使客户端代码和具体的对象实现解耦。这样子就不用每次都new对象&#xff0c;更换对象的话&#xff0c;所有new对象的地方也要修改&#xff0c;违背了开闭原则&#xff08;对扩展开放&#xff0c;对修改关闭&#xff09;。…

win中删除不掉的文件,火绒粉碎删除亲测有效

看网上的 win R 然后终端输入什么删除的&#xff0c;照做了都没有删掉 有火绒的可以试试&#xff1a; 拖进去就删掉了 很好使

选项 打光 试题总结

试题1 被测物体100100mm&#xff0c;精度要求被测物体 &#xff0c;精度要求0.1mm&#xff0c;相机距被测物体在200&#xff5e;320mm之间&#xff0c;要求选择合适的相机和镜头&#xff1f; 分析如下&#xff1a; 通常我们用的相机靶面是4:3 的所以我们要用短边来计算视场&am…

Jmeter系列(5)线程数到底能设置多大

疑惑 一台设备的线程数到底可以设置多大&#xff1f; 线程数设置 经过一番搜索找到了这样的答案&#xff1a; Linux下&#xff0c;2g的 java内存&#xff0c;1m 的栈空间&#xff0c;最大启动线程数2000线程数建议不超过1000jmeter 能启动多少线程&#xff0c;由你的堆内存…