草榴社区

提高图像质量!采用 ARC EV 处理器 IP 实现实时超分辨率

新思科技产物营销经理 Gordon Cooper

在深度学习和神经网络算法出现之前,我们无法通过计算将低分辨率、模糊不清的图像转换为平滑的高分辨率输出图像。由于算法开发的突破,图像可以放大 8 倍或 16 倍,并可重新创建分辨率。为了实时执行这一技术,您的处理器需要具备专用神经网络加速器,如新思科技的 DesignWare? ARC? EV 处理器 IP,以解决所需的密集计算功耗,而无需打破功耗或面积预算。图像超分辨率技术现已应用于视频监控、人脸识别、医疗诊断、数字电视、游戏、多功能打印机和远程传感成像等应用。

低分辨率转换至高分辨率的问题

我们都观看过早期拍摄的电视剧或电影。英勇的侦探掌握了一个突破点 — 他们从监控摄像机中得到了罪犯开车离开犯罪现场的图像。但是,图像放大后极其模糊不清。侦探转向技术人员,用极尽严肃的声音说:“你们能让图像清晰一些吗?” 技术人员使用键盘经过数秒激烈紧张的操作,或是执行一些需要数小时处理的迭代操作后,将显示器转向侦探,上面出现了一副分辨率高很多的清晰图像,清楚地显示了逃逸汽车的牌照。案件得以侦破!

但实际上,让图像变得更加清晰远不是这么回事。无论花多少时间处理图像,其实都无法满足侦探的这个要求。在深度学习出现之前,采用非常先进的技术可以完成一定程度的图像锐化,但无法纠正严重模糊的图像(或像素化非常严重的放大图像)。

Adobe Photoshop 等程序中就有图像锐化或缩放技术的示例,有三种使用较为广泛:

  • 最近邻插值在图像放大时复制图像中的像素。
  • 双线性插值在图像缩放到更高分辨率时均化周围像素颜色值,以插入新像素。
  • 双叁次插值分析 16 (4x4) 个像素(相对于双线性插值的 4 (2x) 个像素),创建插值伪影较少的平滑图像。双叁次插值尽管计算复杂程度较高,却能产生理想的锐化结果。

图 1:将最初的 200x200 图像(左)缩放为 50x50 图像,然后应用最近邻、双线性和双叁次插值技术。虽然 50x50 图像经过“锐化”,但这些计算技术无法恢复分辨率更高的原始图像中丢失的数据。

这三种技术的局限性都源于同一种理论概念,称为数据处理不等式。简而言之,数据处理不等式即您无法将信息添加到不存在的图像中。放大图像时无法恢复丢失的数据。虽然这些技术可以将模糊不清的原始图像适度锐化,但在原始图像放大 8 或 16 倍后,这些技术就无法处理了。

或者说,至少在深度学习和超分辨率神经网络出现之前,情况都是如此。

神经网络来救急了!

如果数据处理不等式的严酷现实阻碍了双叁次插值技术发挥作用,为什么深度学习算法会表现得更好呢? 嗯,他们有秘技。基于学习的算法是用大数据集进行“训练”的(例如,输入大量带标注的图像,用于校准网络的系数),所以它们成为缩放图像和恢复分辨率的理想算法。恢复图像所需的额外数据来自神经网络的训练集,而不是从原始图像中获取。例如,如果一个神经网络经过训练用于学习人脸,那么当原始图像被缩放到高分辨率时,它就可以合理地将训练集的数据插入到原始图像中。

单图像超分辨率的第一个深度学习方法是 2014 年的超分辨率卷积神经网络 (SRCNN)。在用 SRCNN 进行训练期间,使用双叁次插值将低分辨率的输入图像放大到所需的分辨率,然后将其送入一个相当浅的 CNN(跳过池化层以保持相同大小的图像分辨率)。在输出图像和原始图像之间采用均方平均 (MSE) 损失函数。通过多次训练迭代,尽可能地减少损失以产生完善的输出图像。结果(图 2)显示,相对于双叁次插值,SRCNN 的峰值信噪比 (PSNR) 有了显著改善。

图 2:SRCNN 只需经过几次训练迭代,其超分辨率相对于双叁次插值而言,就会表现出显著改善。(来源:使用深度卷积网络实现的图像超分辨率 (Image Super-Resolution Using Deep Convolutional Networks)。)

在 SRCNN 开辟了使用 CNN 实现超分辨率的道路之后,许多其他方法也在这个概念上进行了改进。2016 年,快速超分辨率卷积神经网络 (Fast Super-Resolution Convolutional Neural Network, FSRCNN) 取代了 SRCNN 的双叁次插值,它具有更多的 CNN 层并结合了其他技术,能够产生更快、图像质量更高的解决方案。同样在 2016 年,超分辨率加深网络结构 (Very Deep network for Super-Resolution, VDSR) 将 SRCNN 的三层扩展到二十层,以提高准确度。2015 年底发布的超分辨率残差网络 (SRResNet) 将残差网络 (ResNet) 层增加至 152 层,以提高准确度。所有这些方法都提供了较高的 PSNR(更高的准确度),但经常遗漏高频细节,因此被认为不够悦目。

2017 年,超分辨率生成对抗网络 (Super-Resolution Generative Adversarial Network, SRGAN) 将 2014 年发布的 GANS 概念应用到超分辨率上,取得了令人瞩目的成果。GAN 由两个网络组成:一个生成器和一个鉴别器(图 3),它们相互竞争以实现“对抗目标”。在网络训练期间,生成器输入低分辨率图像并力图创建高分辨率版本。鉴别器网络则致力于确定输入的是真正的高分辨率图像还是生成器放大的图像。换句话说,生成器试图伪造图像蒙混过关,而鉴别器则会努力捕捉伪造图像。训练期间的这一迭代过程迫使生成器改进其输出。

训练部分完成后,SRGAN 的生成器网络只需将低分辨率图像转换为更高分辨率的图像。

图 3. SRGAN 的生成器和鉴别器网络在训练期间相互竞争。

SRGAN 的一个关键点是使用了感知损失函数,该函数会对比像素级 MSE 损失和对抗性损失(鉴别器遇到自然图像而不是生成图像的概率)。正因为如此,SRGAN 的输出图像的 PSNR 值并不高,但被认为更加悦目。

图 4. SRGAN 的高分辨率输出比 SRResNet 和其他 SRCNN 变体具有更低的 PSNR,但通过应用感知损失函数,SRGAN 可以得到更悦目的结果。(来源:)

研究现在提供 SRGAN 变体。增强型超分辨率生成对抗网络 (Enhanced Super-Resolution Generative Adversarial Network, ESRGAN) 已成为游戏界的热门产物,用于高端复古视频游戏。虽然 ESRGAN 经过自然图像训练,但应用于模糊不清的复古视频游戏时也能改善图形质量。

超分辨率的另一个有趣用途是恢复旧电影的色彩和为其上色。超分辨率可以放大帧率和分辨率、填充缺失数据、改善模糊画质,以及为黑白电影提供逼真的上色。

实时实现超分辨率

处理单个图像、视频游戏或旧电影以实现离线超分辨率,不需要实时执行。如果时间充裕,您可以让 CPU 或 GPU 在后台处理这一问题。如果应用程序需要实时渲染和显示图像(可能是游戏或增强现实),那么如果能在显示之前运用超分辨率改善图像,则采用较低分辨率完成渲染,将节省功耗和并提高每秒帧数 (fps)。需要专门的神经网络解决方案,才能以极快的速度解决图像质量改善或从较低视频分辨率提高到较高视频分辨率的问题。

新思科技的 DesignWare ARC EV 系列处理器 IP,可为一系列实时超分辨率需求提供可扩展的神经网络解决方案。新思科技的 EV 架构将可编程性和硬件优化相结合,以超小的面积和功耗提供超快的性能。EV7x(图 5)将视觉引擎(用于单指令、多数据 (SIMD) 并行处理的 512b 向量 DSP)和一个深度神经网络加速器相结合,该加速器能够从 880 乘累加单元扩展到 3,520 乘累加单元 (MAC),是神经网络实现的关键构建模块。

图 5. DesignWare EV7x Vision 处理器 IP 通过从 LPDDR5 向配置内部存储器输入部分输入图像、经过训练的系数和中间特征图,在其深度神经网络加速器中执行神经网络算法。

DesignWare EV7x 处理器 IP 系列由 MetaWare EV (MWEV) 软件开发工具包提供支持,该工具包是一条集成工具链,可为经过训练的神经网络执行编译、调试、优化、仿真和映射。MWEV 神经网络软件开发套件 (NN SDK) 采用 SRCNN、FSRCN、VDSR 等超分辨率图形,然后自动映射至 EV7x 硬件,进行实时操作。

性能要求

实时实现的性能要求各不相同。多功能打印机可能需要以 5 fps 的速度锐化图像。但是,从 30fps 视频升级为 60fps 图像,需要在较短的时间内进行较多的处理。影响处理器性能的要求包括:

  • 超分辨模型(不同模型需要不同的计算复杂程度)
  • 输入图像分辨率
  • 输出图像分辨率
  • 带宽限制(千兆字节/秒,骋叠/蝉)
  • 期望的帧速率 (fps)

借助这些参数,设计人员可以确定他们所需的深度神经网络加速器配置。新思科技可以与设计师合作,根据输入分辨率和带宽限制为所选超分辨率网络的不同 MAC 配置确定 fps。例如,多功能打印机实现可能只需要具有 880 MAC 加速器的超小 EV71 处理器。速度飞快的高端游戏应用程序可能需要更大的处理器,如 EV72 或 EV74 和多达 3,520 个 MAC。

功耗要求

除了性能之外,功耗通常是嵌入式系统的关键要求。一旦知道要求,就可以计算功耗。然而,考虑到神经网络的计算复杂性和仿真所有这些计算所需的时间(可能需要数周的时间),很难准确地仿真神经网络的功耗。新思科技使用基于仿真,既快速又准确的模型,以确定 EV7x 硬件实现神经网络的功耗。

位分辨率要求

通常使用 32 位精度训练神经网络;然而,对于神经网络实现而言,这是一种过度消耗。必要时,EV7x 的 DNN 可提供 8b 分辨率和高达 12b 的分辨率,以实现更高的精度。MWEV NN SDK 将根据硬件中选定的位分辨率量化神经网络。还可以优化每层的量化/精度。尽可能使用 8b,而 12b 仅在需要确保准确度时才使用。

结语

研究人员在不断改进当今的先进技术,所以超分辨率神经网络将会继续发展。从 CNN 分类网络的演进可以看出,首先侧重于提高精度,然后再转向提高算法效率。总体目标是用更少的计算量和数据移动获得更高的准确度,从而将较低分辨率的图像重新调整/升级为更高分辨率的图像,实现悦目的效果。由于 DesignWare ARC EV7x 处理器 IP 系列可编程,它可以随着研究的持续进行而发展为超分辨率网络。

参考: