真正的无极放大!30x插值效果惊艳,英伟达等开源LIIF:巧妙的图像超分新思路
极市导读
How to represent an image?在本文中,作者提出一种新颖的LIIF用于对自然图像进行连续表达。同时所提方法甚至可以进行30x插值,且效果惊人。另外,所提表达对于尺寸可变的学习任务具有天然有效性。 >>【重磅】珠港澳首届AI人工智能大会将在珠海召开,免费门票限时领取中!
加州大学圣地亚哥分校&英伟达提出了一种新颖的连续图像表达方案。它在离散2D图像与连续2D图像之间构建了一种巧妙的连接。受益于所提方法的“连续表达”,它能够对图像进行分辨率调整,做到了真正意义上的“无极放大”,甚至可以进行30x的放大处理。
poster video
下面是一个简单的演示:
如何表达一张图像?
作者一上来就提到这样一个问题:
How to represent an image?
这个问题好回答也不回答。对于人类视觉系统而言,图像是一种连续形式进行呈现的;而在机器世界里,图像是以2D矩阵的离散形式进行存放的。现有的计算机视觉问题的研究也基本都是在2D离散数据集上进行的处理。
在该文中,作者希望学习一种连续图像表达。受启发于3D重建的隐式函数进展,作者提出一种Local Implicit Image Function, LIIF,它采用图像坐标以及2D深度特征作为输入,直接预测给定位置上的RGB输出。由于坐标的连续性,LIIF可以表示成任意分辨率形式。
为生成连续的图像表达,作者通过自监督方式在超分任务上训练了一个encoder和LIIF。所学习到的连续表达能够以任意分辨率对图像进行插值,甚至可以进行30x插值(注:训练时并未引入该尺度)。
作者进一步表明:LIIF表达在2D图像的离散与连续表达之间构建了一个连接,它可以自然的支持尺寸可变的学习任务。下图给出了所提方法在不同倍率下的局部图像示意图。
该文贡献主要包含以下几点:
提出一种新颖的LIIF用于对自然图像进行连续表达; 所提方法甚至可以进行30x插值,且效果惊人; 所提表达对于尺寸可变的学习任务具有天然有效性。
局部隐函数
接下来,我们将逐步引入本文所提出的LIIF表达方式及相应改进点。在LIIF表达中,每个连续图像可以表示为2D特征形式。Neural Implicit Funciotn, NIF是全图像共享,它是一种MLP,其形式如下:
其中,z为向量,表示连续图像域坐标,表示预测信号(也就是RGB值)。基于上述定义,每个向量z可以表示为这样的映射过程:,也就是说可以表示为连续图像,它将坐标映射到RGB。
假设的的特征向量均匀的分布在连图像域的2D空间,见上图圆点,同时我们可以为每个圆点赋予2D坐标信息。对于图像,其在位置处的RGB值可以表示如下:
其中,表示中距离最近的隐特征,表示因特征对应的坐标。仍以上图为例,表示的最近邻因特征,表示的坐标。简单来讲,通过上述隐函数可以将2D特征均匀的扩散到2D连续图像域。
Feature unfolding
有了上述定义后,为了丰富每个因特征的信息,作者对进行unfolding,也就是说采用前述的隐特征的局部近邻对齐进行了信息丰富。该过程可以描述如下:
看公式,可能有点复杂,直接看code就会发现:很简单。
Local ensemble
前述公式2存在一个重要的问题是:连续预测性。特别的,处的信号预测依赖于其最近邻隐变量,当在图像域进行移动时,隐变量的选择可能会出现突然的跳转。这就会导致输出图像的不连续性问题。
为解决上述问题,作者提出了局部集成技术,其实说白了就是:双线性插值思想。将前述公式扩展成如下形式:
其中表示与之间构成的矩形的面积并进行了归一化,这里其实就是双线性插值,不再过多描述了。这种局部集成方式使得输出图像可以自然的连续过渡,而不会导致不连续性。
Cell decoding
作者希望LIIF表示能够对图像进行任意分辨率表示,尽管上述方式可以在连续图像域进行插值输出。但是上述方式并非最优的,因为每个像素的面积信息却被忽略了。为解决该问题,作者提出了cell decoding,见下图。
作者进一步扩充前述隐函数为如下形式:
其中,包含像素的宽高信息。而该隐函数可以更好的描述连续图像,但c趋向于0时,上述表示就代表了像素的面积无限小,也就意味着图像接近真正意义上的连续。
连续图像表达学习
前面介绍了LIIF的定义与构成,那么如何进行训练呢?数据准备与训练过程见下图。
在这里,我们需要训练两个东西:Encoder与LIIF。前者用于将图像转成特征并送入到LIIF。Encoder就简单了,现有超分中的提取特征的方式都可以拿来直接用,比如EDSR、EDN、RCAN等等。作者采用EDSR与RDN进行实验,关于这两个网络的结构信息建议查看对应文章。
作者希望学习的LIIF不仅可以重建输出图像,而且能够在更高分辨率保持图像内容,因此,作者在超分任务上采用自监督方式进行Encoder和LIIF的训练。
实验
在实验方面,作者选用了DIV2K进行模型训练,采用DIV2K-val、Set5等标准数据进行验证。输入图像块大小为,训练过程中尺度在1-4之间均匀采样,batch=16;损失函数为L1;隐函数为五层MLP(隐含层维度为256)。初始学习率为1e-4,每个200epoch折半,合计训练1000epoch。
Table1与Table2给出了所提方法与Bicubic、MetaSR在不同倍率的指标对比,可以看到:所提方法取得全面性的超越;在超出训练尺度外,所提方法所取得优势更大。
下图给出了所提方法在30x超分上的效果对比。可以看到:所提方法生成的结果更为自然,无任何伪影问题;而MetaSR则存在严重的伪影问题。
更多消融实验分析建议去查看原文,这里不再描述。
Demo演示
一点点理解
在笔者看来,这篇论文的思路真的非常巧妙。有这么三点巧妙的地方所在:
坐标与特征的组合
当然这个组合不是作者首次提出的,甚至在深度学习大火之前就有了,类似的思想在2010年前后层被用于加速双边滤波;但是将这个idea与图像分辨率的连续性结合起来真的太巧妙了,坐标的连续性直接构成了图像尺寸的连续性。
Cell decoding
在现有的图像超分领域,甚少有去考虑pixel面积问题的,大多采用暴力的堆网络的方式进行端到端训练。像素面积与图像分辨率存在非常紧密的联系,也更能反映图像的信息。做个比喻:假设图像的像素面积为1,通过最近邻插值放大的图像的像素面积仍然为1,尽管它的面积变大,但其信息增加仍为0。大概是这么个意思吧。
local ensemble
虽然看上去比较简单,但可能这也就是MetaSR效果不如LIIF的关键所在:训练尺度外存在不连续问题。
虽然所提方法可以达到“无极放大”的目的与效果,但目前该方案的计算量还是比较大的。如何将其做到更轻量可能会是一个不错的尝试点,如能做到手机端实时那就真的能够......
最后再提一下,这个方法训练还是挺快的。大概只需要5个小时就可以训练出一个效果还不错的模型。目前作者开源了EDSR-LIIF与RDN-LIIF两个模型,感兴趣的同学可以去把玩一番。
传送门
论文链接:
https://arxiv.org/abs/2012.09161
代码链接:
https://github.com/yinboc/liif