Learning Continuous Image Representation with Local Implicit Image Function

本文主要是介绍Learning Continuous Image Representation with Local Implicit Image Function,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • CVPR2021
  • https://github.com/yinboc/liif
  1. 问题引入
  • 图像普遍都是使用像素来表示的,而现实世界是连续的,所以本文借鉴3D中neural implicit representation的思想,以连续的方式表示图像;
  • 模型输入坐标值和坐标附近的特征,得到该坐标处的像素值,而坐标是连续的,从而得以连续的表示图像;
  • 因为连续的特性,使得可以以任意scale来完成超分辨率的任务;
  1. 方法
  • 本文中一张连续图片 I ( i ) I^{(i)} I(i)由2d的feature map M ( i ) ∈ R H × W × D M^{(i)}\in \mathbb{R}^{H\times W\times D} M(i)RH×W×D和decoding function f θ f_\theta fθ组成,其中 s = f θ ( z , x ) s = f_\theta(z,x) s=fθ(z,x) s s s表示像素值, z z z表示某坐标的feature vector, x x x表示坐标,对于某点的连续图像上指定坐标点 x q x_q xq的像素值的求取分两种情况:
    – 没有local ensemble, I ( i ) ( x q ) = f θ ( z ∗ , x q − v ∗ ) I^{(i)}(x_q) = f_\theta(z^*,x_q-v^*) I(i)(xq)=fθ(z,xqv),其中 z ∗ z^* z表示离所求点最近的feature vector, v ∗ v^* v是对应的坐标;
    – 有local ensemble,主要是上面那种求解方法会导致对于求解的点对应的latent code vector在中间线突变的情况,所以采取的类似于差值的操作: I ( i ) ( x q ) = ∑ t ∈ { 00 , 01 , 10 , 11 } S t S ⋅ f θ ( z ∗ , x q − v ∗ ) I^{(i)}(x_q) = \sum_{t\in\{00,01,10,11\}}\frac{S_t}{S}\cdot f_\theta(z^*,x_q-v^*) I(i)(xq)=t{00,01,10,11}SStfθ(z,xqv),也就是距离所求点的左上、左下、右上、右下四个点求像素值然后做加权和,其权值是所求点和当前点所围矩形的对角矩形的面积,权值进行了归一化,这样就是距离所求点越近的点的权重越大;下面两点式对模型的两点补充;
  • 为了丰富latent code包含的信息,进行了feature unfolding的操作,使得 M ( i ) → M ^ ( i ) M^{(i)}\rightarrow \widehat{M}^{(i)} M(i)M (i),现在的latent code是原来latent code 3 × 3 3\times 3 3×3范围内的latent code的拼接: M ^ j k ( i ) = C o n c a t ( { M j + l , k + m ( i ) } l , m ∈ { − 1 , 0 , 1 } ) \widehat{M}^{(i)}_{jk} = Concat(\{{M}^{(i)}_{j+l,k+m}\}_{l,m\in \{-1,0,1\}}) M jk(i)=Concat({Mj+l,k+m(i)}l,m{1,0,1});边缘补0;
  • 在预测某个坐标点的像素值的时候,只给定坐标值,此时忽略了像素的尺寸,所以还加上cell decoding操作,将原来的decoding操作变为 s = f c e l l ( z , [ x , c ] ) s = f_{cell}(z,[x,c]) s=fcell(z,[x,c])
  • 模型的训练:首先有一张高分的图片,作为gt,得到的有 x h r , s h r x_{hr},s_{hr} xhr,shr,然后随机选择一个scale,对高分图片进行降采样得到模型的输入;模型包含两部分,encoder E ψ E_\psi Eψ,将降采样之后的图片编码得到其LIIF表示,还有是 f θ f_\theta fθ是一个mlp;有了坐标 x h r x_{hr} xhr和latent code之后经过 f θ f_\theta fθ得到预测的像素值,和真实的像素值计算损失;
    在这里插入图片描述
  1. 实验
  • 数据集:训练(DIV2K dataset),评测(DIV2K dataset,Set5, Set14, B100, Urban100);
  • 评测的时候除了评测scale 1x-4x的,还评测了训练中没有的6x-30x,主要对比的方法是MetaSR;
  • 实现细节:输入固定为 48 × 48 48\times 48 48×48,假设bs为 B B B,那么采样 B B B个scale r 1 ∼ B r_{1\sim B} r1B,之后再原高分图上crop出 { 48 r i × 48 r i } i = 1 B \{48r_i\times 48r_i\}^B_{i=1} {48ri×48ri}i=1B个对应的高分图像作为gt,对于bs的每一项,都采样 4 8 2 48^2 482个sample来计算损失;

这篇关于Learning Continuous Image Representation with Local Implicit Image Function的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971632

相关文章

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

AutoGen Function Call 函数调用解析(一)

目录 一、AutoGen Function Call 1.1 register_for_llm 注册调用 1.2 register_for_execution 注册执行 1.3 三种注册方法 1.3.1 函数定义和注册分开 1.3.2 定义函数时注册 1.3.3  register_function 函数注册 二、实例 本文主要对 AutoGen Function Call

(function() {})();只执行一次

测试例子: var xx = (function() {     (function() { alert(9) })(); alert(10)     return "yyyy";  })(); 调用: alert(xx); 在调用的时候,你会发现只弹出"yyyy"信息,并不见弹出"10"的信息!这也就是说,这个匿名函数只在立即调用的时候执行一次,这时它已经赋予了给xx变量,也就是只是

js私有作用域(function(){})(); 模仿块级作用域

摘自:http://outofmemory.cn/wr/?u=http%3A%2F%2Fwww.phpvar.com%2Farchives%2F3033.html js没有块级作用域,简单的例子: for(var i=0;i<10;i++){alert(i);}alert(i); for循环后的i,在其它语言像c、java中,会在for结束后被销毁,但js在后续的操作中仍然能访

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

rtklib.h : RTKLIB constants, types and function prototypes 解释

在 RTKLIB 中,rtklib.h 是一个头文件,包含了与 RTKLIB 相关的常量、类型和函数原型。以下是该头文件的一些常见内容和翻译说明: 1. 常量 (Constants) rtklib.h 中定义的常量通常包括: 系统常量: 例如,GPS、GLONASS、GALILEO 等系统的常量定义。 时间常量: 如一年、一天的秒数等。 精度常量: 如距离、速度的精度标准。 2. 类型

【AI大模型应用开发】2.1 Function Calling连接外部世界 - 入门与实战(1)

Function Calling是大模型连接外部世界的通道,目前出现的插件(Plugins )、OpenAI的Actions、各个大模型平台中出现的tools工具集,其实都是Function Calling的范畴。时下大火的OpenAI的GPTs,原理就是使用了Function Calling,例如联网检索、code interpreter。 本文带大家了解下Function calling,看

访问controller404:The origin server did not find a current representation for the target resource

ider build->rebuild project。Rebuild:对选定的目标(Project),进行强制性编译,不管目标是否是被修改过。由于 Rebuild 的目标只有 Project,所以 Rebuild 每次花的时间会比较长。 参考:资料