首页 > 其他分享 >LIIF笔记

LIIF笔记

时间:2023-11-18 20:57:12浏览次数:32  
标签:编码 LIIF 笔记 RGB 坐标 图像 theta

20231106
链接:2012.09161.pdf (arxiv.org)

1.为了解决什么问题?

现实视觉世界是连续的,但是我们存放在计算机中的图像却是以离散的二维像素阵列存在。如果我们想训练一个卷积神经网路,我们通常需要将图像调整到相同的大小,这样会牺牲保真度。

2.现有方法瓶颈

现有的隐式神经表征在3D重建任务上取得了成功,但是基于编码器的隐式神经表示方法仅成功表示数字等简单图像,无法表示高保真度的自然图像。
image

3.本文解决方案

论文中说,他们将图像表示为一组分布在空间维度上的潜在代码。给定一个坐标,解码函数获取坐标信息并查询该坐标周围的局部潜在码作为输入,将预测得出给定坐标的RGB值作为输出。由于坐标是连续的,LIIF可以表示任意分辨率。
!image

文中通过具有超分辨率的自监督任务训练具有LIIF表示的编码器,编码器的输入和ground-truth的上采样尺度是连续不断变化的。
image

4.文章的创新

1.一种连续表示自然和复杂图像的新方法。2.LIIF表示可以表示在训练时没有呈现的更高的分辨率上。3.LIIF表示对于具有大小变化的图像学习任务是有效的。
image

5.LIIF

在LIIF中,每个连续图像\(I^{(i)}\)被表示为一个二维特征图\(\begin{aligned}M^{(i)}\in\mathbb{R}^{H\times W\times D}\end{aligned}\)。解码函数\(f_\theta\text{ (with }\theta\text{ as its parameters)}\)被所有图片共享,其被参数化为MLP,形式为:

\[s=f_\theta(z,x) \]

其中\(z\)是一个向量,\(x\in\mathcal{X}\)为连续图像域中的二维坐标。\(s\in{\mathcal{S}}\)是预测的信号(即RGB值)。
在实验中,假设\(x\)的范围是二维的\([0,2H]\)和\([0,2W]\)。
对于一个定义的\(f_\theta\),每个向量\(z\)可以被认为代表一个函数\(\begin{aligned}f_\theta(z,\cdot):\mathcal{X}\mapsto\mathcal{S}\end{aligned}\),即将坐标映射到RGB值的函数。我们假设\(M^{(i)}\)的\(H\times W\)个特征向量(后面称为潜编码)均匀分布在连续图像域\(I^{(i)}\)的二维空间中(如下图的蓝色圆圈)。
image

我们为每个特征向量分配一个二维坐标,对于连续图像\(I^{(i)}\),定义在坐标\(x_q\)处的RGB值为:

\[I^{(i)}(x_q)=f_\theta(z^*,x_q-v^*) \]

其中\(\text{z*}\)是\(M^{(i)}\)中距离\(x_q\)最近(欧几里得距离)的潜编码,\(\text{v*}\)是潜编码\(\text{z*}\)在图像域的坐标。以上图为例,\(z_{11}^*\)是\(x_{q}\)的\(z^*\),\(v^{*}\)定义为\(z_{11}^*\)的坐标。
使用所有函数共享的函数\(f_{\theta}\),将连续图像表示为一个二维特征图\(M^{(i)}\in\mathbb{R}^{H\times W\times D}\),其被视为\(H\times W\)个潜在代码在2D域中均匀分布。\(\mathop{\mathrm{~}}M^{(i)}\)中每个潜在代码\(z\)表示连续图像的局部片段,负责预测最接近其自身坐标集的信号(如RGB)。

5.1 Feature unfloding

为了丰富\(M^{(i)}\)中的每一个潜在编码的信息丰富程度,我们将\(M^{(i)}\)扩展为\(\hat{M}^{(i)}\)。
在\(\hat{M}^{(i)}\)中,每个潜在编码都变成了原本\(M^{(i)}\)中\(3*3\)相邻的潜在编码的串联。形式上,特征展开被定义为:

\[\hat{M}_{jk}^{(i)}=\mathrm{Concat}(\{M_{j+l,k+m}^{(i)}\}_{l,m\in\{-1,0,1\}}) \]

对于\(M^{(i)}\)中超出边界的部分直接补0。Feature unfolding后,所有的计算都由\(\hat{M}^{(i)}\)进行。

5.2 局部ensemble

对于式子:

\[\begin{aligned}I^{(i)}(x_{q})=f_{\theta}(z^{*},x_{q}-v^{*})\end{aligned} \]

存在预测不连续的问题。如上图中所显示的那样,由于在\(x_{q}\)区域的预测是通过查询其最近的潜在编码来得到\(z^{*}\)的,那么在虚线附近会出现\(z^{*}\)突变的情况。只要\(\boldsymbol{f}_{\theta}\)没有非常完美,对一次跨越虚线的情况都会产生目视效果上的不连续感。
为了解决这个问题,于是将上式改写为:

\[I^{(i)}(x_q)=\sum_{t\in\{00,01,10,11\}}\frac{S_t}S\cdot f_\theta(z_t^*,x_q-v_t^*) \]

其中,\(z_t^*\)表示左上、右上、左下、右下四个位置的潜在编码,\(v_{t}^{*}\)是\(z_t^*\)的坐标,\(S_{t}\)表示 \(x_{q}\)\(v_{t^{\prime}}^{*}\)之间的矩阵,而\(t^{\prime}\)与\(\text{t}\)呈对角关系。
我们事先已经认为潜在特征将在边界外被镜像地填充,因此,上式对于边界附近的坐标也是适用的。
直观上讲,这样做的目的是使得由局部潜在编码所表示的局部片段能够和其周围的局部片段有所重合,进而使得每一个坐标处都有四个独立的潜在编码对其进行独立的预测,且这四个独立预测的结果将进行加权,即为最终的预测结果。
这样就可以在\(z^{*}\)进行变换的时候实现平滑过渡。

5.3 Cell decoding

在实践中,我们希望LILF能够以任意分辨率进行表达。假设我们已经给定了想要的分辨率,那么一种直观的方法就是直接通过\(I^{(i)}\left(x\right)\)的方式来查询像素中心的RGB值。尽管这样的做法已经可以工作的很好了,但是并不是最优的,因为对于某一个查询像素的RGB值和它的size是无关的,而在其分辨率的像素范围内的其他信息却都被丢掉了(除了中心位置)。
为了解决这个问题,文章提出了“cell decoding”,示意图如下所示:
image

且将\(s=f_\theta(z,x)\)改写为:

\[s=f_\text{cell }(z,[x,c]) \]

其中,\(c=[c_{h},c_{w}]\)包含了指定像素的高与宽,\([x,c]\)则表示\(x\)与\(c\)的concat。
在进行连续表达的时候,实验会证明,额外给定一个c的输入是有所裨益的。

6.学习连续的图像表达

学习连续的图像表达的流程示意图为:
image

在该任务中,训练集为一系列的影像,目标是为一个网络没见过的图片生成连续的表达。
通常的思想是首先训练一个编码器\(E_{\varphi}\),该编码器将影像映射为一个2D的特征图,该2D特征图与LIIF的表达是一致的。而\(f_{\theta}\)对于所有的影像来说,是共享的函数。
自然,我们希望LIIF不仅仅能够很好地表达输入,更重要的是能够形成一个连续的表达,希望其能够在高分辨率下也能够保证高保真,因此,文章设计了超分的自监督任务。
现在,我们对上图中的流程进行详细的描述,对于一张训练图像来说,首先对其进行随机尺度的下采样,作为网络的输入。而GT的获取则是通过将训练影像表示为像素样本 、\(x_{hr}\)、\(s_{hr}\),其中\(x_{hr}\)是像素在影像域的中心坐标,\(s_{hr}\)则为对应的RGB值。编码器\(E_{\varphi}\)将输入的图像映射为一个2D的特征图,该2D特征图将被作为LIIF中的隐含编码。而坐标\(x_{hr}\)则被用于查询\(LIIF\)表达中的值,\(f_{\theta}\)则用于输出对应坐标的RGB值。不妨设\(s_{pred}\)为预测的RGB值,训练损失(在实验中使用了L1损失)在\(s_{pred}\)与GT\(s_{hr}\)之间进行计算。此外,在进行cell decoding的操作时,我们将\(x\)替换为\([x,c]\)。

标签:编码,LIIF,笔记,RGB,坐标,图像,theta
From: https://www.cnblogs.com/TTS-TTS/p/17841076.html

相关文章

  • 《信息安全系统设计与实现》第十次学习笔记
    第十二章:块设备I/O和缓冲区管理块设备I/O缓冲区I/O缓冲的基本原理:文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk)标识的磁盘块时。它首先在缓冲区缓存中搜索分配给磁盘块的缓冲区。如果该缓冲区存在并且包含有效数据、那么它只需从缓冲区中读取数据、......
  • 学习笔记10
    20211301学习笔记10教材知识点总结12.1块设备I/O缓冲区读写到内存缓冲区中的操作:get_block,put_blockI/O缓冲原理:文件系统使用一系列I\O缓冲区作为块设备的缓冲内存,当进程读取标识的磁盘块时,首先在缓冲区缓存中搜索分配给磁盘块的缓冲区,若存在并包含有效数据,则读取数据,......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第十周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第十周学习笔记一、任务要求自学教材第12章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知......
  • 面向对象笔记——面向对象分析的过程
    面向对象软件过程简介软件过程的基本概念软件的诞生及其研发整个生命周期是一个过程,这个过程称之为软件过程。包括:需求获取(沟通)、需求分析和设计(建模)、实现和测试(构建)、部署和维护软件过程是描述了实施于软件开发和维护中的阶段、方法、技术、实践及相关产物(计划、文档、模......
  • 学习笔记10
    一、任务详情自学教材第12章,提交学习笔记(10分),评分标准如下知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分)实践过程截图,代......
  • 第十周学习笔记
    第12章块设备I/O和缓冲区管理块设备和I/O缓冲区由于磁盘I/O速度相对较慢,文件系统通常使用I/O缓冲来减少存储设备的物理I/O数量,提高文件I/O效率,增加系统吞吐量。基本原理是使用一系列I/O缓冲区作为块设备的缓存内存,以避免每次执行读写文件操作时都进行磁盘I/O。I/O缓冲区的基本......
  • 信息安全系统设计与实现——学习笔记10
    任务详情:自学教材第5章,提交学习笔记Part1知识点归纳&GPT提问知识点归纳1.块设备I/O缓冲区与内存访问相比,磁盘I/O速度较慢,所以不希望在每次执行读写文件操作时都执行磁盘I/O。因此,大多数文件系统使用I/O缓冲来减少进出存储设备的物理I/O数量I/O缓冲的基本原理:文件系统使用......
  • C++ Primer学习笔记——第十二章
    第十二章动态内存前言在此之前,我们使用的程序中对象都有着严格定义的生存期:全局对象,在程序启动时分配,在程序结束是销毁。局部自动对象,当进入定义所在程序时创建,在离开块时销毁。局部static对象,在第一次使用前分配,在程序结束时销毁。显然这存在限制,为此C++支持动态分配对......
  • 前端学习笔记学习笔记第七十柒天-webpack源码分析14
    constpath=require("path")module.exports={entry:"./src/index.js",mode:"development",output:{filename:"main.js",path:path.resolve(__dirname,"./dist")},module:{......
  • 前端学习笔记学习笔记第七十柒天-webpack源码分析13
        ......