第一次写论文博客,可能理解不透彻,仅供参考。希望朋友们在评论区能一起多多探讨
【简介】
基本思路:将离散的图像转化为连续的函数表达
概述:使用一个encoder对图像进行编码,得到每个坐标的latent code(隐式编码)。decoder则通过latent code预测超分图像中每个坐标位置的RGB值。
亮点:1)可以大倍数的放大,且对于超出训练倍数的情况下,也具有良好效果
2)可以进行任意倍数的超分
【个人理解】
1.基本流程:
图(a)是说明了是怎么处理的。
Input:原始图像下采样得到的,下采样的缩放系数是任意的。
Xhr是指图像的坐标矩阵,例如对于640*480的图像就应该是:(0,0),(0,1),(0,2)....(640,480)。[在代码中作者做了归一化,网格化等操作,这里不细说,先理解基本意思就好]。
Shr是指图像每一个坐标对应的RGB值,这个应该好理解,就是Xhr对应位置的像素值。
总的来说,就是将图像拆分成空间坐标Xhr和值域Shr。
图(b)是训练的过程。
E是encoder,作者分别使用了EDSR-baseline和RDN作为encoder。
LIIF是encoder得到的图像隐式编码。
Xhr和input的坐标矩阵是不一样的,Xhr是超分结果的坐标矩阵,而input的坐标范围肯定小于Xhr(不然为啥叫超分)。所以作者的做法是:基于LIIF,使 f 预测Xhr每一个像素对应的RGB值,即求取Shr。所以本论文的重点也在于怎么设计 f
2.decoder f的设计
公式1说明了 f 的作用,相当于是一个基本框架,后面的公式2,4都是对1的细化
公式1:
z:是一个向量,这里指的是latent code。由encoder得到
x:某个查询坐标值,属于Xhr
s:x对应的RGB值,属于Shr
这个公式说明了 f (解码器)要解决的问题: f 基于z和x,求取s
公式2进一步细化了公式1:
公式2:
是连续图像在坐标上的RGB值(就是公式1中的s)
离最近的坐标 对应的latent code。(坐标的远近使用欧式距离衡量)
既然 是基于围绕 局部的,所以公式1中 x 对应到公式2中,也应该是局部的,所以 x==>。(这也呼应了LIIF中的 “local” )
其实公式2就是将公式1转移到局部。但是用咱的脑子想都知道,光使用一个预测,肯定是效果不好的。所以公式4再次进行了改进,扩大了的感受范围。
在讲公式4之前,先看个图:
如上图,按照公式2,离最近的latent code就是,则此时 基于和相对坐标来预测。但是这显然不鲁棒。更好的做法是类似于bicubic插值,让能基于更多的点来预测。例如,结合图中的四个角点、、、。
于是出现了公式4:
其实就是设置另一个权重,和 形成区域的对角线区域的面积St,与总面积之间的比例,作为权重。这样可以综合四个点的数据,来预测值。除此之外,其的做法都是源于公式2。
3.一些优化细节
Feature unfolding特征展开:这一块我也不太懂为什么要这样做。作者主要的意思就是将encoder得到特征图中的每个坐标的latent code,再将其3*3邻域的每个坐标的latent code进行一个串联。对于“Concat”串联我的理解是,直接将邻域内的latent code(是一个vector),加在当前vector的后面。
Cell decoding:在的计算中,加入了cell的尺寸。代码中有体现,cell的尺寸。
这段代码来自demo.py,有兴趣的同学可以将cell和coord打印出来看看。
4.代码理解
encoder使用EDSR-baseline的时候效果最好,的实现使用的多层感知机MLP(全连接层实现),尺寸为
loss使用的是L1loss,评估标准是PSNR
刚刚开始学习超分,希望各位可以在评论区一起讨论,一起学习。感谢