LIIF论文笔记--《Learning Continuous Image Representation with Local Implicit Image Function》

第一次写论文博客,可能理解不透彻,仅供参考。希望朋友们在评论区能一起多多探讨

【简介】

基本思路:将离散的图像转化为连续的函数表达

概述:使用一个encoder对图像进行编码,得到每个坐标的latent code(隐式编码)。decoder则通过latent code预测超分图像中每个坐标位置的RGB值。

亮点:1)可以大倍数的放大,且对于超出训练倍数的情况下,也具有良好效果

           2)可以进行任意倍数的超分

【个人理解】

1.基本流程:

        图(a)是说明了是怎么处理的。

        \bullet Input:原始图像下采样得到的,下采样的缩放系数是任意的。

        \bullet Xhr是指图像的坐标矩阵,例如对于640*480的图像就应该是:(0,0),(0,1),(0,2)....(640,480)。[在代码中作者做了归一化,网格化等操作,这里不细说,先理解基本意思就好]。 

        \bullet Shr是指图像每一个坐标对应的RGB值,这个应该好理解,就是Xhr对应位置的像素值。

        \bullet 总的来说,就是将图像拆分成空间坐标Xhr和值域Shr。

        图(b)是训练的过程。

        \bullet E\varphi是encoder,作者分别使用了EDSR-baseline和RDN作为encoder。

        \bullet LIIF是encoder得到的图像隐式编码。

        \bullet Xhr和input的坐标矩阵是不一样的,Xhr是超分结果的坐标矩阵,而input的坐标范围肯定小于Xhr(不然为啥叫超分)。所以作者的做法是:基于LIIF,使 f\theta 预测Xhr每一个像素对应的RGB值,即求取Shr。所以本论文的重点也在于怎么设计 f\theta

2.decoder  f\theta的设计

        公式1说明了 f\theta 的作用,相当于是一个基本框架,后面的公式2,4都是对1的细化

        公式1: 

         \bullet z:是一个向量,这里指的是latent code。由encoder得到

         \bullet x:某个查询坐标值,属于Xhr

         \bullet s:x对应的RGB值,属于Shr

这个公式说明了  f\theta (解码器)要解决的问题: f\theta 基于z和x,求取s

       

        公式2进一步细化了公式1:

        公式2:

          \bullet I^{(i)}(x_{q})是连续图像I^{(i)}在坐标x_{q}上的RGB值(就是公式1中的s)

          \bullet z^{*} 离x_{q}最近的坐标 v^{*}对应的latent code。(坐标的远近使用欧式距离衡量)

          \bullet 既然z^{*} 是基于围绕x_{q} 局部的,所以公式1中 x 对应到公式2中,也应该是局部的,所以 x==>​​​​​​​x_{q}-v^{*}。(这也呼应了LIIF中的 “local” )

其实公式2就是将公式1转移到局部。但是用咱的脑子想都知道,光使用一个z^{*}预测,肯定是效果不好的。所以公式4再次进行了改进,扩大了x_{q}的感受范围。

在讲公式4之前,先看个图:

 如上图,按照公式2,离x_{q}最近的latent code就是z_{11}^{*},则此时f_{\theta } 基于z_{11}^{*}和相对坐标x_{q}-v^{*}来预测​​​​​​​I^{(i)}(x_{q})。但是这显然不鲁棒。更好的做法是类似于bicubic插值,让I^{(i)}(x_{q})能基于更多的点来预测。例如,结合图中的四个角点z_{00}^{*}z_{01}^{*}z_{10}^{*}z_{11}^{*}

于是出现了公式4:

其实就是设置另一个权重,z_{xx}^{*}和 x_{q}形成区域的对角线区域的面积St,与总面积之间的比例,作为权重。这样可以综合四个点的数据,来预测值。除此之外,其f_{\theta }的做法都是源于公式2。

3.一些优化细节

Feature unfolding特征展开:这一块我也不太懂为什么要这样做。作者主要的意思就是将encoder得到特征图中的每个坐标的latent code,再将其3*3邻域的每个坐标的latent code进行一个串联。对于“Concat”串联我的理解是,直接将邻域内的latent code(是一个vector),加在当前vector的后面。

Cell decoding:在f_{\theta }的计算中,加入了cell的尺寸。代码中有体现,cell的尺寸。

 这段代码来自demo.py,有兴趣的同学可以将cell和coord打印出来看看。

4.代码理解

encoder使用EDSR-baseline的时候效果最好,f_{\theta }的实现使用的多层感知机MLP(全连接层实现),尺寸为

 loss使用的是L1loss,评估标准是PSNR​​​​​​​

刚刚开始学习超分,希望各位可以在评论区一起讨论,一起学习。感谢

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值