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.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《知晓天空之蓝的人啊》视频画面中架子鼓、人物面部的轮廓线条在经过动漫超分模型的优化后变得更加平滑、锐利。
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 Block。REPB 有两个基本的组件,分别为 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、插帧等技术同样发挥着至关重要的作用。
本期作者
徐嘉文哔哩哔哩算法工程师
张雅君 哔哩哔哩高级算法工程师
张鹏伟 哔哩哔哩资深开发工程师
蔡春磊 哔哩哔哩多媒体算法teamleader