本期作者
孙嘉临
哔哩哔哩高级运营
刘璟
哔哩哔哩高级算法工程师
背景
2014年,SRCNN (Learning a Deep Convolutional Network for Image Super-Resolution, ECCV2014)横空出世,是深度学习用在超分辨率重建上的开山之作。随着AI技术的发展,超分辨率重建的效果越来越好,速度越来越快。随着B站自研的超分模型公开,越来越多的视频可以使用超分辨率技术进行画质提升。然而,技术领域没有银弹,基于深度学习的超分辨率重建自然也有其难以克服的缺点存在,适当的人为干预将极大提升超分效果。
超分辨率的数学原理
视频信号作为信号的一种,其行为完全符合信息论中的描述。正如Nyquist-Shannon 采样定理描述的,为了不失真地恢复模拟信号,采样频率应该大于等于模拟信号频谱中最高频率的2倍。较低的采样频率无可避免的会丢失高频信息。在视频中,分辨率即为采样频率,而画面中的元素就对应了不同的空间频率。视频中越锐利的部分,对应了越高的空间频率。也就是说,视频的分辨率越高,其能够记录的最高频率越高,画面就可以更加锐利。早期的视频受限于当时的技术,采用的较低的制作分辨率,导致其画面锐度较低。由于丢失的信息数学上是无法还原的,无论使用何种插值算法,都不可能还原出原本的信号。
在信号处理领域常常使用傅里叶变换来对信号进行分解,将原始信号分解为一系列不同频率的正弦信号。对视频画面进行傅里叶变换,可以方便的观察出画面中存在的不同频率分量。对二维的图像进行快速傅里叶变换后,会得到一张二维的频域图像,越靠近坐标原点代表越低的频率,越靠近外围代表越高的频率。
以下图为例,分别对1080P的原始画面以及缩小到540P再放大回1080P的画面进行快速傅里叶变换,我们可以看出,当分辨率降低时,高频信息会无可避免的损失,在频域中表现为接近坐标原点部分的分量几乎不变,而外围部分被明显压缩。而分辨率提高时,并不会还原在缩小时损失的高频的部分。
(上图依次为:原图,频谱分布,缩小并放大后的图片,缩小并放大后的频谱分布)
超分辨率≠图像拉伸
既然插值算法无法提升画面锐度,那么超分算法是如何做到的呢?虽然高频信息无法被“还原”,我们依然可以人为“添加”这些高频信息。虽然我们从原理上无法保证这些高频信息与原本的信息一致,但是我们任然可以根据经验,保证这些高频信息“看起来”是合理的。
超分辨率≠更高的视频分辨率
大部分的日本动画,由于成本限制,并不会在生产过程中使用很高的分辨率,即使是在1080P已经完全普及的今天,仍有大量动画采用810P甚至720P作为制作分辨率,而使用1080P进行播放。超分辨率的本质在于提升画面锐度,如果画面锐度没有超出其本身分辨率能承载的范围,完全没有必要提升视频的分辨率。而更高的分辨率也可以通过使用拉伸算法简单达成而不改变画面本身的清晰度。
超分辨率的常见缺陷-油
无法保留噪点
在有关超分的话题中,我们经常听到用户使用“油画感”来描述AI生产出的画面。我们以CUGAN举例。
可以看到,即使我们已经选择的降噪强度最低的模型,CUGAN在大幅度清晰化的同时,去除了画面中的大部分噪点。这是由于高频的不规律性远大于低频成分,因此深度学习对高频的重建难度远大于低频,为了整体拟合到一个不错的效果,模型倾向于扔掉高频而更多地去学习低频的重建。在现实世界中,无论何种摄像机,都会在拍摄过程中无可避免的产生噪点。而大部分的动画为了模仿摄影效果,人为添加了风格噪点。如果无法保留这些噪点,将无可避免的大幅改变画面风格。如下图所示,在右下角的墙壁部分,由于噪点被完全去除,导致画面风格发生了较大的改变。
(上图依次为:原图,CUGAN超分结果)
 线条深度\锐度不统一
线条清晰化是超分过程中的重点,将极大影响画面锐度。不难发现,即使CUGAN的结果已经大幅优于Waifu2X,任然存在线条深浅不一致的现象。可以看到大部分较细深色线条被加深,而较宽的线条中心部分没有什么变化,仅仅将边缘进行了锐化。这是由于日式动画的制作分辨率一般小于其成品分辨率,例如使用540P进行动画制作,而在放送时通过插值算法放大到720P乃至1080P进行播放。当线条过宽时,AI会将较宽的线条误认为一个色块,仅对其边缘进行增强,导致线条空心。而在黑线部分,由于CUGAN模型倾向于更多地去拟合高质量样本集,而高对比度往往在质量评估上拥有比低对比度更高的分数,因此将线条和邻近线条的颜色区域加深对比度是模型的调优方向。在少数情况下,反而会造成线条颜色过深或过浅,导致画风改变。
在下图中,可以看到面部轮廓有部分线条非常锐利,接近纯黑色,而其他线条出现了空心的情况,并且呈现灰色,甚至在衣领出出现了线条走形,导致整个画面中的线条锐度不统一。
(上图依次为:原图,CUGAN超分结果)
 弱纹理涂抹
即使CUGAN使用了景深识别模块,针对大量不同的番剧,其仍然难以分辨弱纹理部分,无可避免的会破坏画面中微弱的纹理。经过涂抹后的屏幕非常干净,并且带有不自然的渐变效果,是油画感的主要来源。在下图中,左侧雕像中,一部分较强的纹理被CUGAN进行了加强,同时一部分较弱的纹理被去除。在日式动画的制作过程中,背景一般采用纸上作画再扫描的工序进行制作,相较人物部分,作画更为精细,如果将弱纹理去除将会破坏掉这种精细感,造成画面不自然。
(上图依次为:原图,CUGAN超分结果)
画面闪烁\时域抖动
基于神经网络的天然特性,一点微弱的差别就有可能导致结果出现很大的差距。对于一些噪点较重的视频,由于相同场景下超分的结果可能会有比较大的偏差,在视频连续播放时会感觉线条部分在不停的闪烁,非常影响观看体验。
使用传统预处理算法规避缺陷
神经网络的能力非常强大,能够无视物理限制,完成以往传统算法难以企及的清晰化处理。但是其过于强大的威力也成为了一把双刃剑,非常容易损伤源视频本就非常脆弱的细节。由于单一的模型很难普适全部的片源,我们需要使用传统的预处理算法来协助实现更优的超分效果。
 噪点分离还原
不同于UGC视频制作,OGV视频一般可以获取到非常高质量的源视频。这些源视频仅仅是由于制作年代久远,画面有效分辨率比较低,而码率一般非常充足,基本完整保留了母带的细节,基本不存在编码缺陷。这些动画中的噪点一般是动画制作方为了画面风格而特意添加的风格噪点,在超分处理中不应将其去除。
为了分离噪点层,我们可以使用降噪算法对画面进行降噪,然后与源视频做差来分离噪点层。降噪算法我们采用BM3D算法来达到较好的降噪效果。
BM3D是一种基于相似图块匹配的高级降噪算法,对于高斯噪声有非常好的降噪效果。经过BM3D处理的图像可以在保留原始细节的情况下,非常有效的去除画面中的噪点。
(BM3D处理流程[1])
经过降噪的纯净画面,也将降低潜在的画面闪烁问题。在视频处理的最后一步,我们将分离出的噪点层附加回画面上,就达成了与源视频非常相似的画风。
(上图依次为:原图,CUGAN超分结果,保留噪点后的结果)
如上图所示,柯南第一话首次放送于1996年1月8日,当时使用的是胶片作画,基于胶片本身的物理特性,画面上无可避免的会留下明显的噪点。这些胶片噪点成就了作品独有的画风,乃至于今日,仍有部分电影导演,为了追求真实的胶片感而不惜花费重金采用胶片摄影机进行拍摄。通过分离噪点的方式,可以有效保留这部分噪点不被破坏。尤其是在右下角玻璃处,在没有噪点时可以看到出现了明显的降噪瑕疵,保留下的噪点可以很好的掩盖这种瑕疵。
线条深度调整
线条深度不统一的根本原因在于网络无法分辨过宽的线条。在超分进行前,我们需要将源画面下采样到最接近制作时的分辨率,来帮助网络进行处理。对于拉伸算法较为明显的画面,我们可以使用Descale算法逆向还原到原分辨率。而对于那些无法分辨拉伸算法的画面,我们就需要一边调节目标分辨率,一边观察超分结果,当超分结果中的线条最为清晰时,即为最适合的目标分辨率。
(上图依次为:原图,CUGAN超分结果,原始分辨率调整后的结果)
在上图中,片源的分辨率为1080P,而画面内容的实际分辨率远低于1080P,这里我们选择将分辨率降低为原先的1/4,再进行超分。可以看出线条的质量有了非常大的提升,同时画面清晰度的损失可以忽略不计。
超分后的画面,线条深度与锐度可能并不符合我们的要求,除了调整CUGAN的Alpha参数外,还可以对线条进行模糊或者加深\减淡处理。当线条过于锐利以至于无法与画面完美融合时,可以使用高斯模糊对画面整体进行处理。基于高斯模糊的数学特性,处理后的画面,仅在较为锐利的部分有较大变化,而本身较为柔和的部分几乎不受影响,刚好可以完美降低过于锐利的线条,让画面风格趋于统一。收线也是一个非常好的锐化方法,当我们觉得线条不够锐利,或者线条过宽时,可以先使用一个收线处理,将线条宽度降低,同时会增加画面对比,达到增加线条锐度的效果。
当需要调整线条深度时,我们首先需要分离画面中的深色线条,然后对其进行加深或减淡处理。
(上图依次为:原图,CUGAN超分结果,线条调整后的结果)
以上图为例,我们在对全局使用了一个sigma为1.2的高斯模糊,并还原噪点层后,画面的风格就非常接近原始视频的,同时画面中线条的清晰度被大幅度提升,并完美去除了原有的编码瑕疵。
 弱纹理保留合并
在日式动画的制作过程中,其画面不会轻易变化,画面锐度较为统一。AI难以访问全局数据来确定整部动画的画面特性,这就需要人工进行判断,划分阈值。
Canny边缘检测算子是John F. Canny于 1986 年开发出来的一个多级边缘检测算法。
我们使用TCanny算法对线条强度进行计算,将数值较高的部分划分为线条,将数值较低的部分划分为纹理,将数值更低的部分划分为平面。为了最大程度提升观感,线条部分将会全部采用超分后的结果。纹理部分需要根据超分结果灵活选择,如果超分后的结果更为清晰,我们将采用超分后的画面,如果超分后的结果更为模糊,我们将采用源视频的画面,同时可以使用USM锐化进行补偿处理。对于平面部分,基本没有差别,既可以选择去色带后的源视频,也可以选择超分后的结果。
(上图依次为:原图,CUGAN超分结果,纹理保留后的结果,边缘强度
在CUGAN原始超分结果中,我们可以发现灌木丛部分的纹理被完全抹除了。我们利用Tcanny算子计算画面的边缘强度,对于强度较高的部分(上图中亮度较高的部分),采用CUGAN超分后的结果,这部分内容会被CUGAN显著增强,对于部分较弱的部分,我们采用原视频,来避免CUGAN对这部分内容进行涂抹。
可以看到,通过保留合并弱纹理的方式,我们可以在不更改CUGAN网络本身的情况下,对于不同番剧灵活设定阈值,以达到保留纹理的同时大幅度提升画面清晰度的目的。
参考资料
[1] Kostadin Dabov, Alessandro Foi, Vladimir Katkovnik, and Karen Egiazarian, Image denoising with block-matching and 3D filtering, Institute of Signal Processing, Tampere University of Technology, Finlan
以上是今天的分享内容,如果你有什么想法或疑问,欢迎大家在留言区与我们互动,如果喜欢本期内容的话,欢迎点个“在看”吧!
往期精彩指路
继续阅读
阅读原文