原创文章,转载、引用请注明出处!
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
。解码函数fθ
(以θ为参数)由所有图像共享,其形式如下:
其中,z
是一个向量,x
是连续图像域中的被查询的二维坐标,s
是预测信号,即RGB值。
假设M
(latent codes,潜在代码)均匀分布在连续图像域(图2中的蓝色圆圈)的2D空间中,根据f
,对任意位置xq
,其重构的RGB值为:
其中,z*
为离xq
最近(欧几里得距离)的特征向量(M
中的一部分),v*
为z*
对应的坐标。
z*
表示特征向量,它可以看作代表了一整块的像素;角标00、01、10、11
分别是指离xq
最近的左上、右上、左下、右下四个z*
。所有图像共享上述解码函数fθ
。
以图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*
进行预测。只要学习到的函数fθ
不是完美的,这些边界就会出现不连续的图案。
为了解决这个问题,扩展式(2)为:
其中,St
是指xq
与z*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表示为xhr
、shr
,其中,xhr
是中心坐标,shr
是对应的RGB值。
Eϕ
将input映射为二维特征图作为LIIF表示,使用xhr
进行query,fθ
会预测对应RGB值Spred
,与shr
计算loss。
实验
实验设置
Eϕ
是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的!
截出来的图片糊的一,以后再也不在副屏上截图了,或者等有钱换个好一点的副屏……