3

论文研读:LIIF

 2 years ago
source link: https://moyangsensei.github.io/2021/09/01/%E8%AE%BA%E6%96%87%E7%A0%94%E8%AF%BB%EF%BC%9ALIIF/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

论文研读:LIIF

Word count: 2.1k | Reading time: 8min

原创文章,转载、引用请注明出处!


Learning Continuous Image Representation with Local Implicit Image Function

cvpr 2021

现实世界的图像是连续的,但计算机和采样设备得到的图像是非连续的。将现实世界的图像存储到计算机中,所使用的方法是基于像素(pixel)的2D矩阵。

文章受到了隐式神经表征(implicit neural representation)的启发,希望将图像表示为连续形式,提出了局部隐式图像函数(LIIF),用于以连续方式表示自然图像和复杂图像。

Inspired by the recent progress in 3D reconstruc- tion with implicit neural representation, we propose Local Implicit Image Function (LIIF), which takes an image co- ordinate and the 2D deep features around the coordinate as inputs, predicts the RGB value at a given coordinate as an output. Since the coordinates are continuous, LIIF can be presented in arbitrary resolution. To generate the contin- uous representation for images, we train an encoder with LIIF representation via a self-supervised task with super- resolution. The learned continuous representation can be presented in arbitrary resolution even extrapolate to ×30 higher resolution, where the training tasks are not provided.

Implicit Neural Representation

来自论文SIREN。

Implicit Neural Representations with Periodic Activation Functions
https://github.com/vsitzmann/siren
https://vsitzmann.github.io/siren/

作者本人对该方法的论文做了综述。

https://github.com/vsitzmann/awesome-implicit-representations

比较著名的有NeRF等。

以图像为例,其最常见的表示方式为二维空间上的离散像素点。

但是,在真实世界中,我们观察到的世界可以认为是连续的,或者近似连续。于是,可以考虑使用一个连续函数来表示图像的真实状态(本篇的思路)

然而我们无从得知这个连续函数的准确形式,因此有人提出用神经网络来逼近这个连续函数,这种表示方法被称为“隐式神经表示“ (Implicit Neural Representation,INR)。

对于图像,INR函数将二维坐标映射到rgb值。对于视频,INR函数将时刻t以及图像二维坐标xy映射到rgb值。对于一个三维形状,INR函数将三维坐标xyz映射到0或1,表示空间中的某一位置处于物体内部还是外部。当然还有其他形式,如NERF将xyz映射到rgb和sigma。总而言之,这个函数就是将坐标映射到目标值。一旦该函数确定,那么一个图像/视频/体素就确定了。

INR是一个连续的函数,函数(网络)的复杂程度和信号的复杂程度成正比,但是和信号的分辨率无关。比如一个1616的图像,和一个3232的图像,如果内容一样,那么INR就会一样。

Implicit Neural Representation 隐式神经表示 - 知乎专栏
https://zhuanlan.zhihu.com/p/372338398

Local Implicit Image Function

局部隐式图像函数

在LIIF表示中,设每个连续图像Ii表示为2D特征映射M(I) ∈ R_H×W×D。解码函数(以θ为参数)由所有图像共享,其形式如下:

其中,z是一个向量,x是连续图像域中的被查询的二维坐标,s是预测信号,即RGB值。

假设M(latent codes,潜在代码)均匀分布在连续图像域(图2中的蓝色圆圈)的2D空间中,根据f,对任意位置xq,其重构的RGB值为:

其中,z*为离xq最近(欧几里得距离)的特征向量(M中的一部分),v*z*对应的坐标。

z*表示特征向量,它可以看作代表了一整块的像素;角标00、01、10、11分别是指离xq最近的左上、右上、左下、右下四个z*。所有图像共享上述解码函数
以图2为例,z*11是距离xq最近的(欧氏距离)潜码(xq在z*11的块内),v*就是潜码z*11的二维坐标。

Feature unfolding

为了丰富潜码M,对M进行特征展开,称为得到M^M^中的潜码是M中3×3个相邻潜码的级联(Concat),形式为:

其中,级联指的是一组向量的连接,M在其边界外用零向量填充。

后面为了简洁,直接使用M表示这一步操作。

Local ensemble

式(2)是不连续预测xq处的信号预测是通过查询最近的潜码z*来完成的,在M中,当xq在2D域中移动时,不同z*的边界是不连续的,会发生突变。这会导致坐标上无限接近的点,所选择的z*可能非常不同。

例如,xq穿过图2中的边界虚线(或者是极其接近边界位置),在这些坐标周围选择z*,两个无限接近坐标的信号将由不同的z*进行预测。只要学习到的函数不是完美的,这些边界就会出现不连续的图案。

为了解决这个问题,扩展式(2)为:

其中,St是指xqz*u所围成的矩形的面积,S为四块矩形面积之和。

记u为t的对角特征,即t=0->u=1。

这里采用面积之比作为权重,是为了维持在四个特征向量之间任何一点的总权重是相等的,如果采用距离之比则不能达到这一点。

Cell decoding

根据上述步骤,则可以在任意分辨率下使用LIIF对图像进行表示。

对于给定的分辨率,最直接的方式就是根据像素点中心坐标求得对应的RGB值。但这样的方式是独立于size的,也就是说像素点包围的位置中的其他信息都丢失了。

为此,采用Cell decoding的策略,表示为:

其中,c=[ch,cw]包含两个指定查询像素高度和宽度的值,[x,c]表示x和c的串联(concatenation)。

fcell(z,[x,c])的含义可以解释为:如果用形状c渲染以坐标x为中心的像素,RGB值应该是什么。在给定分辨率下呈现连续表示时,拥有额外的输入c是有益的。

逻辑上,当c -> 0时,f(z,x) = fcell(z,[x,c]),即:连续图像可以被视为具有无限小像素的图像。

The meaning of fcell(z, [x, c]) can be interpreted as: what the RGB value should be, if we ren- der a pixel centered at coordinate x with shape c. As we will show in the experiments, having an extra input c can be beneficial when presenting the continuous representation in a given resolution.

对于给定的一张训练图片,以随机的scale下采样作为input。对应的ground-truth表示为xhrshr,其中,xhr是中心坐标,shr是对应的RGB值。

将input映射为二维特征图作为LIIF表示,使用xhr进行query,会预测对应RGB值Spred,与shr计算loss。

  • 是EDSR或RDN去掉upsampler部分。

  • 选用的loss是L1 loss。

  • 训练:训练集:DIV2K,1000幅中的800幅;下采样:比例为×2、×3、×4的低分辨率对应图像,由Matlab中的imresize函数生成,默认设置为双三次插值;训练细节:初始学习率为1*1^-4的Adam优化器(每200个阶段衰减0.5倍)、训练时间为1000个epoch、bs=16、MetaSR的实验设置与LIIF相同,只是将LIIF表示替换为其元解码器。

  • 测试:DIV2K、Set5、Set14、B100、Urban100。

  • 平台:Pytorch。

训练时在1倍到4倍之间均匀采样,在测试时对6倍到30倍都进行了验证。

由于针对如此大倍数的SR方法很少,这里实际上的SOTA就只有MetaSR。

  • cell decoding似乎会影响out-of-distribution high resolution时的PSNR值。实验结果为:可以看到针对30倍的任务,cell-1/30明显好于其他设定。如果decoding cell大于实际的像素大小,这就类似于用一个比较大的平均核对图像进行处理。结论是,使用cell decoding有助于in-distribution scales,当scale过大时可能会影响PSNR但是仍然可以提升视觉质量。(图7)

  • 实验在训练时使用固定的scale,虽然可以提升该scale的结果,但是对于其他scale效果不好。(表4)

  • 针对size-varied ground-truth问题进行了实验。

文章:https://arxiv.org/pdf/2012.09161.pdf

code/home:https://yinboc.github.io/liif/

新的点的思路之一!就是用连续进行表示!如果真的出来的话还是非常nice的!


截出来的图片糊的一,以后再也不在副屏上截图了,或者等有钱换个好一点的副屏……


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK