开源满足超级分辨率

2020-09-22 05:15:30

尽管深度学习支持的超分辨率方法具有很高的性能,但由于它们对计算的要求很高,很难应用到现实世界的应用中。在Collabora,我们已经解决了这个问题,我们为视频超分辨率引入了精确且轻量级的深度网络,该网络运行在使用PanFrost(马里GPU的免费开源图形驱动程序)的完全开源软件堆栈上。下面是超分辨率的概述,它用于图像和视频升级的目的,以及我们的模型是如何产生的。

在过去的几年里,互联网流媒体经历了巨大的增长,并继续以快速的速度发展。流媒体现在占互联网流量的60%以上,预计在未来五年内将翻两番。

视频传输质量在很大程度上取决于可用的网络带宽。由于带宽限制,大多数视频源都是压缩的,从而导致图像伪影、噪声和模糊。常规的图像放大也会降低质量,这是与较新的移动设备非常高的像素密度相匹配所必需的。

从最近邻、线性和Lanczos重采样等经典方法,升级社区为我们提供了视频和图像升级方面的许多基础性进展。然而,在过去的20多年里,没有从根本上引进新的方法。此外,传统的基于算法的提升方法缺乏细节,不能去除缺陷和压缩伪影。

多亏了深度学习革命,所有这些都在改变。我们现在有了一种全新的最先进的升级技术,称为深度学习超分辨率(DLSR)。

图像的分辨率可能会由于较低的空间分辨率(例如,降低带宽)或由于图像质量下降(如模糊)而降低。

超分辨率(SR)是一种从观测到的低分辨率(LR)图像集合中构建高分辨率(HR)图像的技术。SR增加了高频分量并去除了压缩伪影。

通过应用退化函数,从HR图像中得到LR图像。如果我们事先知道退化函数,就可以将其逆应用于LR图像来恢复HR图像。不幸的是,我们通常事先不知道退化函数。因此,该问题是不适定的,并且SR结果的质量是有限的。

DLSR通过从HR和/或LR示例图像中学习图像先验信息来解决这一问题,从而提高了LR到HR转换的质量。

深卷积神经网络(CNNs)的快速发展是DLSR成功的关键。近年来,超级分辨率公司使用的CNN模型在设计和培训方面有了戏剧性的改进。

可以使用不同的技术来实现放大,例如前述的最近邻、线性和Lanczos重采样方法。下面的一组图像演示了这些不同的选项。

然后,可以应用各种方法。单击下面的图像可以更仔细地查看每个结果,以及缩小之前的原始图像。

目标图像或地面真实值,已缩小以创建较低分辨率的输入。

其目的是提高LR图像的质量,以接近目标的质量,即所谓的地面真实。在本例中,圆形真值是缩小以创建低分辨率图像的原始图像。

使用深度学习或卷积神经网络(CNN)实现超分辨率的标准方法是使用完全有监督的方法,其中低分辨率图像由包含卷积和上采样层的网络处理,以产生高分辨率图像。然后使用适当的损失函数将生成的HR图像与原始HR图像进行匹配。这种方法通常称为配对设置,因为它使用成对的LR和相应的HR图像进行训练。

最近,随着生成性对抗网络(GANS)的引入,GANS是用于超分辨率的最常用的机器学习架构之一。

在生成性对抗性网络中,两个网络相互训练和竞争,从而产生相互学习。第一个网络(称为生成器)生成高分辨率输入,并试图欺骗第二个网络(鉴别器),使其接受这些作为真正的高质量输入。鉴别器输出预测输入是真实的高质量图像(类似于训练集),还是假的或糟糕的放大图像。

下面显示了使用我们训练的深度学习超分辨率模型进行X4上采样的不同示例。您可以单击每个图像以查看其原始大小。我们还列出了最近邻插值法、双线性插值法和Lanczos插值法的输出,以供比较。

该模型为蔬菜、盘子和背景添加了细节。输入,最近邻居,双线性,Lanczos,原始。

该模型为天空和标志添加了细节。酒店标牌虽然不是百分之百准确,但与其他升级换代的方法相比有了很大的提高。输入,最近邻居,双线性,Lanczos,原始。

这位模特能够为头发添加甚至是细微的细节,并使整体图像变得清晰。输入,最近邻居,双线性,Lanczos,原始。

由于复杂的照明,与前面的例子相比,输出没有那么锐利。尽管如此,模特还是能够把细节带回衬衫和脸部。输入,最近邻居,双线性,Lanczos,原始。

由于模特也接受过动画视频的培训,所以作品内容多种多样。然而,在我们的实验中,对特定内容类型进行训练的模型显示了更好的结果。输入,最近邻居,双线性,Lanczos,原始。

另一个动画例子,与其他的放大方法相比,我们的超分辨率模型能够为背景和前景中的物体添加细节。输入,最近邻居,双线性,Lanczos,原始。

幸运的是,超分辨率是我们可以依赖几乎无限的数据(高质量图像和视频)的领域之一,我们可以使用这些数据来创建训练集。通过对高质量图像进行下采样,我们可以创建训练模型所需的低分辨率和高分辨率图像对。

低分辨率图像最初是地面真实图像的一半维度的副本。低分辨率图像最初使用双线性变换进行放大,以便其尺寸与目标图像匹配,以便它可以作为我们的模型的输入。

为了使模型对不同形式的图像退化具有鲁棒性并更好地进行泛化,可以通过以下方式进一步扩大数据集:

还有几个可用于训练的数据集,例如包含800个2K分辨率图像的多样性2K(DIV2K),以及Flickr2K和户外场景训练(OST)数据集。

在我们的案例中,我们使用从知识共享许可下发布的视频(如Sintel、Elephants Dream、Spring和Arduino the纪录片)中提取的图像对模型进行培训。

我们需要回答的一个大问题是如何定量评估我们模型的性能。

简单地比较视频分辨率并不能揭示太多的质量问题。事实上,这可能完全是误导。500MB的1080p电影看起来可能比500MB的720p电影差,因为前者的比特率可能太低,会引入各种压缩伪像。

同样的道理也适用于比较相似帧大小的比特率,因为不同的编码器可以在较低的比特率下提供更好的质量,反之亦然。例如,用XviD制作的720p 500MB视频看起来会比用X264制作的500MB视频差,因为后者的效率要高得多。

为了解决这个问题,在过去的十年中,已经引入了几种方法,通常根据它们从表面上原始质量的参考图像评估的信息量,将其分类为全参考、减少参考或无参考。

传统上使用PSNR(峰信比)或SSIM(结构相似指数方法)来测量视频质量。然而,PSNR没有考虑人的感知,只是简单地测量原始清洁信号与压缩信号噪声之间的均方误差。SSIM确实考虑了人的感知,但最初是为了分析静态图像而开发的,不允许随着时间的推移进行人的感知,尽管最近的SSIM版本已经开始解决这个问题。

随着机器学习的快速发展,重要的数据驱动模型开始涌现。其中之一就是Netflix的视频多方法评估融合(VMAF)。VMAF结合多种质量特征来训练支持向量回归器来预测视频质量的主观判断。

在Collabora,我们结合使用SSIM和VMAF来训练和测试我们的深度学习超分辨率模型。SSIM计算速度很快,可以作为模型执行情况的基本指标。另一方面,VMAF提供了更准确的结果,这是传统方法通常会遗漏的。

尽管深度学习支持的超分辨率方法具有很高的性能,但由于它们对计算的要求很高,很难应用到现实世界的应用中。在Collabora,我们已经通过引入用于视频超分辨率的准确且轻量级的深度网络来解决这个问题。

为了在计算复杂度和再现质量之间取得良好的折衷,我们在标准的网络架构上实现了级联机制,从而产生了一个轻量级的解决方案。我们还使用了多分片方法,将大的输入分成较小的分片,以便更好地利用内存带宽,并克服某些框架和设备带来的大小限制。多瓦片显著提高了推理速度。该方法可以从单图像SR扩展到视频SR,其中视频帧被视为一组多个瓦片。

我们在开源的Panfrost视频驱动程序的基础上设计了我们的解决方案,允许我们将计算负载转移到GPU上。

在本系列的第2部分中,我们将深入探讨我们的模型是如何工作的,以及您如何使用免费的开源软件来实现比现有视频压缩方法更高的压缩级别。敬请关注!

请勾选此框以确认您已阅读并接受我们关于收集/存储和使用您的个人数据的隐私声明条款:*