论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution
论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution
- 1 背景
- 2 创新点
- 3 方法
- 4 模块
- 4.1 以往SR模型的刚性
- 4.2 图构建
- 4.2.1 度灵活性
- 4.2.2 像素节点灵活性
- 4.2.3 空间灵活性
- 4.3 图聚合
- 4.4 多尺度图聚合模块MGB
- 4.5 图聚合层GAL
- 5 效果
- 5.1 和SOTA方法比较
- 5.2 消融实验
论文:https://openaccess.thecvf.com//content/CVPR2024/papers/IPG
代码:https://github.com/huawei-noah/Efficient-Computing/tree/master/LowLevel/IPG
1 背景
人们理所当然的认为主流SR模型以相当严格的方式对待所有像素。如图1。
-
在基于CNN的SR模型VDSR的卷积层中,同一个卷积核扫描特征图的所有像素,即每个特征被严格制定与他的最近邻进行通信;
-
在基于Transformer的模型SwinIR中,所有像素被分配到大小相同的注意力网格中进行自注意力操作。
这两个例子中,每个像素都聚集了固定大小的领域内的固定数量的像素信息。
在SR任务中,只有小比例的高频像素需要付出艰苦的重建努力;大部分像元位于平坦的低频区域,因此几乎完好无损。为了应对这种不平衡,SR方法在理想情况下,应该更多关注细节丰富的区域,而更少的关注平坦,细节匮乏的图像部分。然而,现有的基于k近邻图的方法将所有图像节点同等对待。也就是说所有节点共享相同的预设度k,没有考虑SR的不平衡性。事实上,当从图的角度考察SR中的典型操作范式时,作者发现度等价刚性也表现在卷积和窗口注意力中:在这些范式中,图像上的每个像素聚集了相同数量的像素,而不管图像内容如何,因此,在图术语中共享"等度"。严格分配给节点或像素的相等节点度与SR中不相等的重建需求不匹配,从而影响SR性能。
2 创新点
本文提出了基于图的图像处理神经网络 IPG,以挖掘图的灵活性潜力。
-
为了打破卷积,窗口注意力和K近邻图的度等价刚性,利用度的灵活性,基于SR的非平衡性提出了一种新的度变图解决方案。具体来说,设计了一个细节感知度量来衡量图像节点的重要性,其中较大的度被分配给高频节点。
-
与基于图的模型不同,IPG采用像素而非块作为图像的图节点,避免了块刚性导致错位问题。
-
为了不因为像素级搜索空间大而牺牲效率的同时又获取局部和全局感知,作者采用局部和全局节点采样策略。可以有效地从小像素子集建立图,即可以专注于细节重建的局部信息,也可以横跨整个图像,以获得空间上遥远但至关重要的特征。
3 方法
IPG的总体架构遵循主流的SR模型,如图3所示。当一个LR图像输入到模型中时,它首先被传递到 c o n v conv conv 层来提取浅层特征。然后将特征通过一系列多尺度图聚合块MGB,借助灵活的图进行有效的深度特征提取。每个MGB由一系列图聚合层GAL堆叠组成,GAL在局部和全局尺度进行图聚合。最后通过 p i x e l s h u f f l e pixelshuffle pixelshuffle 上采样队图像进行空间重构。
4 模块
4.1 以往SR模型的刚性
卷积和窗口注意力是SR模型设计的两个主要途径。在一次卷积操作中,每个输出的像素聚集了一个小窗口内的信息,每个像素只能访问他的领域像素,例如标准的3×3卷积中,单个像素的感受野被限制在一个3×3的窗口中,图像上的所有像素从各自的8邻域和他自己那里手机信息。窗口注意力也有类似的刚性,虽然通常采用较大的窗口(相比于卷积),但窗口注意的感知域仍然局限在窗口边界内。在8×8的窗口注意力中,所有像素聚集在其所属窗口内的64个像素。
除了卷积和窗口注意力的刚性外,一些工作在SR模型中考虑了窗口之外的方案,并采用了图。与卷积和窗口注意力不同的是,这些基于图的工作在空间上更灵活,每个节点可以从具有宽松空间约束的最适合的 topk 个节点中聚合信息,这个意义上,图聚合不局限于预设的刚性模式,相比于卷积和窗口注意力机制,它更具有动态性和可扩展性。
然而,尽管先前的基于图的方法突破了硬聚合边界,但作者认为图的灵活性在SR任务中没有得到充分的利用:
-
首先,如图1所示,以前的方法的度刚性的。SR重建需求在不同图像的不同部分之间应该是不平衡的。但是在以前的方法中,图像上的所有像素或节点都是聚合相同数量的像素或节点,也就是说,在图论中,他们具有相同的集合度。
-
其次,以往基于图的工作都是基于块(patch)的,虽然块通常被视为图像节点,但块的聚合通常要进行严格的像素级对其。低级特征在图像块中可能出现的错位情况使得SR模型的性能变差。
-
第三,先前的基于图的工作严格的使用全局或局部尺度上的图,但这两种尺度的信息对SR重建都具有潜在的重要性。
4.2 图构建
为了打破这些刚性,作者在IPG模型中构建了局部和全局尺度上的度柔性像素图。通过这种方式,可以挖掘图的灵活性,并在SR任务中取得优异的性能。
4.2.1 度灵活性
首先基于SR任务特有的非均衡性,作者尝试提出一种度灵活的图解决方案。SR是一个长尾问题,其中只有一小部分高频像素需要重建,图像的其余部分只需要极小的恢复。先前的工作试图通过设计损失来解决这个问题,而不是从模型设计的角度来考虑。在不平衡SR问题中,将图像上的所有像素或部分像素等效的处理是不合适和低效的。
这个观点出自论文CVPR2023论文《Rethinking Image Super Resolution From Long-Tailed Distribution Learning Perspective》,提出的损失函数可以用于其他超分论文的改进,如下:
- 结构先验( f B I f_{BI} fBI 为bicubic差值):
- 可学习的结构先验( f f f 为超分网络):
- 损失如下:
α , γ \alpha,\gamma α,γ 是超参,为了灵活控制 W ( z ) W(z) W(z)。
为此,作者选择基于一个细节丰富度指标为像素分配不同的节点度,该指标标志着需要付出多少努力去重建当前像素。指标设计规则如下:给定特征图 F ∈ R H × W × C F∈R^{H×W×C} F∈RH×W×C 和下采样比例 s s s,所有像素的细节丰富度度量 D F ∈ R H × W D_F∈R^{H×W} DF∈RH×W 为双线性下采样再上采样特征图和特征图本身之间的绝对差值:
其中 s s s 取2,以避免严重的信息丢失。虽然已经有一些可解释的SR工作提出了度量指标来衡量输出中某一部分的重要性,但这些措施是基于梯度的,需要花费高昂的后向过程。相比而言提出的 D F D_F DF 是廉价的,因为它只要两次双线性差值。
基于 D F D_F DF 为每个像素分配整体的度预算。特征图上的像素节点 v ∈ F v∈F v∈F 的度与他在 D F D_F DF 处的像素值成正比:
不同MGB块中的细节丰富度 D F D_F DF 可视化后如图2所示,细节丰富的部分具有响应性,边缘和角点具有较高的 D F D_F DF,而平坦色块的 D F D_F DF 较低,可以看出 D F D_F DF 反映的是图像中的高频部分。
直接通过sobel算子求边缘获得 D F D_F DF 感觉也可以。而且 D F D_F DF 可以在原图上只求一次,然后插值到各个低分辨率上,因为高频部分是不会变的。
4.2.2 像素节点灵活性
确定完每个像素点的度后,还面临着如何图中顶点的表述问题。在之前的基于图的视觉工作中,图节点通常被设置为图像块,在图集合过程中,图像块以逐像素的方式进行加权求和,然而在聚合过程中,对块进行强制的像素级对齐并不适用于特征图具有丰富低级特征的SR任务。对象在低级图像块内的偏移和旋转是造成块错位的两个主要问题,对于对象的偏移,在块中的位置可能会发生变化,位置不对齐的块对象可能会引入噪声。对象旋转是块聚合的另一个错误方面。
为了避免节点聚合过程的上述问题,作者认为在低级视觉任务中更细粒度的像素节点是更好地解决方案。每个像素节点可以直接在聚合中找到相关的像素,避免错误问题。
但是必须承认的是,与像素图相比,图像块具有更大的感知域,并且由于总节点数量少更容易构建,这意味着边链接的搜索空间较小。因此需要构建一种灵活有效的像素图。
4.2.3 空间灵活性
作者通过在局部和全局上有效地搜索像素节点连接来开发IPG图的空间灵活性,这对SR重建至关重要,虽然有损图像部分可以从局部领域重建自己,但他们也可以从遥远的相似特征中学习以进行细化。
通过搜索全部图像节点来构建全局图的代价较高,作为一种补救措施,通常采用跨步抽样法。选择像素作为图的节点使得图的构建更加具有挑战,因为节点空间被进一步扩大,并且很难通过搜索所有像素来构建图。
为了提高效率,并在SR任务重收集有助于细节重建的局部级别的周围特征和全局级别的远程特征,作者使用两种采样方式来聚合局部和全局信息,如图4所示。局部采样关注于像素点周围的领域,围绕某个节点选择一个局部尺度的搜索空间;对于全局采样,采样的节点以扩张的模式覆盖在图像上。
总结:
图的节点:图像的像素而非块
图的每个节点的出度:正比于细节丰富度指标
图的每个节点搜索空间:当前节点的局部邻域采样像素点和全局扩张采样像素点
基于上述准则构建图。代码中是将丰富度指标归一化后乘上一个topk来确定每个节点的出度,见 https://github.com/huawei-noah/Efficient-Computing/blob/master/LowLevel/IPG/basicsr/archs/IPG_arch.py#L731:
maskarray = (X_diff/X_diff.sum(dim=-1,keepdim=True)) * D.size(1) * self.top_k
最终通过 Bool 图来确定邻接关系:
graph = (D > MAT[..., 0:1]).unsqueeze(1) # add head dim
最终的搜索空间是领域中有邻接关系的节点集合。
4.3 图聚合
在构建了灵活的图以后,使用图聚合将每个节点和与其相连的节点进行通信,并利用他们的信息在SR中进行自细化。在图的视觉应用中,最大池化或边缘条件的聚合形式最受欢迎。本文倾向于采用边缘条件聚合,因为最大池化会导致至关重要的近邻像素信息的显著丢失。由于SR中的像素重建严重依赖于丰富的领域信息,边缘条件聚合被采用,因为它关注像素之间的相互关系,并保持更多的领域信息以及进行有效的重建。
边缘条件聚合概念如下,在IPG的第 k k k 层,给定节点特征 h k − 1 h^{k-1} hk−1 ,邻域中有邻接关系的节点集合 N ( v ) N(v) N(v) ,计算节点 v v v 的输出 h v k h_v^k hvk:
其中 f k : R d × R d → R f^k: R^d×R^d→R fk:Rd×Rd→R 是一个衡量节点对 ( u , v ) (u,v) (u,v) 之间相关性的参数化函数,本文采用余弦相似度, C k : = ∑ u ∈ N ( v ) e x p ( f k ( u , v ) ) C^k := \sum_{u∈N(v)}exp(f^k(u,v)) Ck:=∑u∈N(v)exp(fk(u,v)) 是一个归一化常数。
为了避免所有节点被同等对待,作者在聚合前对节点特征添加了相对位置编码,以增强位置信息。
4.4 多尺度图聚合模块MGB
多尺度图聚集模块( MGB )同时收集局部和全局尺度信息,用于有效的图像SR重建。每个模块的局部像素图和全局像素图都是根据当前模块输入计算的。分模块计算可以使整个模型中的图进行有规律的更新。其中局部采样和全局采样分别用于局部或全局图的构建。然后将两种类型的图(局部/全局)分布到整个模块的GAL中进行聚合操作。局部和全局图以顺序交替的方式分布,以确保局部和全局尺度的信息都得到充分的聚合。
4.5 图聚合层GAL
图集合层GAL包含Grapher模块,CA模块(通道注意力),ConvFFN模块和两个LayerNorm层。Grapher基于当前图的类型收集局部或全局的信息。接着紧跟高效的通道注意力模块,ConvFFN和LayerNorm。
CA模块出自论文《Activating more pixels in image superresolution transformer》,如下图:
ConvFFN出自论文《SRformer: Permuted selfattention for single image super-resolution》,即在 FFN 块的两个线性层之间添加一个局部深度可分离卷积分支来辅助编码更多细节。
5 效果
5.1 和SOTA方法比较
和SOTA方法的计算量对比。
和SOTA方法的指标对比。
和SOTA方法的可视化效果对比。
和轻量级SOTA方法的指标对比。
5.2 消融实验
使用图像块还是像素作为图的节点的消融实验。
使用KNN和度自由图的消融实验。
可视化细节丰富和细节少节点所关联的节点。
像素局部采样和全局采样的消融实验。
相关文章:

论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution
论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution 1 背景2 创新点3 方法4 模块4.1 以往SR模型的刚性4.2 图构建4.2.1 度灵活性4.2.2 像素节点灵活性4.2.3 空间灵活性 4.3 图聚合4.4 多尺度图聚合模块MGB4.5 图聚合层GAL 5 效果5.1 和SOTA…...

前端介绍|基础入门-html+css+js
文章目录 本课程有什么?前端是什么?1. **前端概述**2. **前端的工作职责**3. **前端技术栈**6. **前端开发工具**7. **HTML、CSS、JS的关系** 本课程有什么? 本套课程是零基础入门保姆级课程,课程主要内容包含: HTML…...

[WSL][桌面][X11]WSL2 Ubuntu22.04 安装Ubuntu桌面并且实现GUI转发(Gnome)
1. WSL安装 这里不再赘述,WSL2支持systemd,如果你发现其没有systemd相关指令,那么你应该看看下面这个 https://blog.csdn.net/noneNull0/article/details/135950369 但是,Ubuntu2204用不了这个脚本,比较蛋疼。 – …...

PMC如何根据实际情况调整生产作业计划?
面对原材料价格波动、市场需求突变、供应链不确定性增加等多重挑战,PMC人员如何根据实际情况迅速调整生产作业计划,成为了决定企业能否稳健前行的关键。今天,天行健企业管理咨询公司就来深入探讨,PMC高手们是如何在复杂多变的环境…...

unity中 骨骼、纹理和材质关系
在Unity和游戏开发中,骨骼(Skeleton)、纹理(Texture)和材质(Material)是角色和物体渲染的关键组成部分,它们各自的作用和关系密切关联,通常共同工作来实现一个模型的最终…...

18、论文阅读:AOD-Net:一体化除雾网络
AOD-Net: All-in-One Dehazing Network 前言介绍相关工作物理模型传统方法深度学习方法 建模与扩展变换后的公式网络设计与高级特征任务相结合 除雾评价数据集和实现 前言 该论文提出了一种基于卷积神经网络(CNN)的图像去雾模型,称为 All-in…...

Hadoop生态圈框架部署(五)- Zookeeper完全分布式部署
文章目录 前言一、Zookeeper完全分布式部署(手动部署)1. 下载Zookeeper2. 上传安装包2. 解压zookeeper安装包3. 配置zookeeper配置文件3.1 创建 zoo.cfg 配置文件3.2 修改 zoo.cfg 配置文件3.3 创建数据持久化目录并创建myid文件 4. 虚拟机hadoop2安装并…...

【机器学习】聚类算法分类与探讨
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...

MySQL中distinct与group by之间的性能进行比较
在 MySQL 中,DISTINCT 和 GROUP BY 都是用于去重或汇总数据的常用 SQL 语法。尽管它们在某些情况下能产生相同的结果,但它们的内部工作方式和性能表现可能有所不同。理解这两者的差异,对于选择正确的语法非常重要,尤其是在处理大量…...

计算机视觉读书系列(1)——基本知识与深度学习基础
研三即将毕业,后续的工作可能会偏AI方向的计算机视觉方面,因此准备了两条线来巩固计算机视觉基础。 一个是本系列,阅读经典《Deep Learning for Vision System》,做一些总结跑一些例子,也对应本系列文章 二是OpenCV实…...

怎么查看navicat的数据库密码
步骤1:打开navicat连接数据库工具,顶部的文件栏-导出结果-勾选导出密码-导出 步骤2:导出结果使用NotePad或文本打开,找到,数据库对应的的Password"995E66F64A15F6776“”的值复制下来 <Connection ConnectionName"…...

webrtc前端播放器完整案例
https://download.csdn.net/download/jinhuding/89961792...

GORM优化器和索引提示
在使用 GORM 进行数据库操作时,优化器和索引提示可以帮助你提高查询性能。GORM 提供了一些方法来利用这些特性。 优化器提示 优化器提示(Optimizer Hints)是数据库系统提供的功能,用于指导查询优化器如何处理查询。不同的数据库…...

linux驱动-i2c子系统框架学习(1)
可以将整个 I2C 子系统用下面的框图来描述: 可以将上面这一 I2C 子系统划分为三个层次,分别为用户空间、内核空间和硬件层,内核空间就包括 I2C 设备驱动层、I2C 核心层和 I2C 适配器驱动层, 本篇主要内容就是介绍 I2C 子系统框架中…...

元戎启行嵌入式面试题及参考答案
介绍下 CAN 通信原理 控制器局域网(CAN)是一种串行通信协议,主要用于汽车、工业自动化等领域的电子控制单元(ECU)之间的通信。 其通信原理是基于多主站架构。在总线上,多个节点(设备)都可以主动发起通信。CAN 协议使用差分信号来传输数据,通过两条信号线 CAN_H 和 CAN…...

【EasyExcel】EasyExcel导出表格包含合计行、自定义样式、自适应列宽
目录 0 EasyExcel简介1 Excel导出工具类设置自定义表头样式设置自适应列宽添加合计行 2 调用导出工具类导出Excel表3 测试结果 0 EasyExcel简介 在数据处理和报表生成的过程中,Excel是一个非常常用的工具。特别是在Java开发中,EasyExcel库因其简单高效而…...

es数据同步(仅供自己参考)
数据同步的问题分析: 当MySQL进行增删改查的时候,数据库的数据有所改变,这个时候需要修改es中的索引库的值,这个时候就涉及到了数据同步的问题 解决方法: 1、同步方法: 当服务对MySQL进行增删改的时候&…...

apt镜像源制作-ubuntu22.04
# 安装必要的软件 sudo apt-get install -y apt-mirror # 编辑/etc/apt/mirror.list,添加以下内容 set base_path /var/spool/apt-mirror # 指定要镜像的Ubuntu发布和组件-null dir jammy-updates main restricted universe multiverse # 镜像的Ubuntu发布和组件的URL-n…...

libaom 源码分析: 预测编码过程梳理
AV1 预测编码中核心技术 AV1(AOMedia Video 1)作为一种开源的视频编码格式,其预测编码核心技术主要包括以下几个方面: 分区树分割模块: AV1利用多类型分割模式,递归地对图像/视频序列进行分区,以捕捉更丰富的空间信息,从而提升编码效率。这包括新的方向预测分割模式及…...

从0开始学习Linux——Yum工具
往期目录: 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 上一个章节我们简单了解了Linux中常用的一些文本编辑器,本次教程我们将学习yum工具。 一、Yum简介 Yum(全名…...

【Linux】Linux管道揭秘:匿名管道如何连接进程世界
🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 🌈C专栏:C 文章目录 1.什么是管道 ?2. 管道的类型2.1 匿…...

【LeetCode】【算法】155. 最小栈
LeetCode 155. 最小栈 题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int …...

3.3 windows,ReactOS系统中页面的换出----1
系列文章目录 文章目录 系列文章目录3.3 页面的换出MiBalancerThread()MmTrimUserMemory()MmPageOutVirtualMemory() 3.3 页面的换出 在前一节中我们看到,如果有映射的页面已经被倒换到磁盘上即倒换文件中,…...

QCustomPlot添加自定义的图例,实现隐藏、删除功能(二)
文章目录 实现步骤:详细代码示例:实现原理和解释:使用方法:其他参考要实现一个支持复选框来控制曲线显示和隐藏的自定义 QCPLegend 类,可以通过继承 QCPLegend 并重写绘制和事件处理方法来实现,同时发出信号通知曲线的状态变更。 实现步骤: 继承 QCPLegend 类,添加绘…...

Linux云计算 |【第五阶段】CLOUD-DAY8
主要内容: 掌握DaemonSet控制器、污点策略(NoSchedule、Noexecute)、Job / CronJob资源对象、掌握Service服务、服务名解析CluterIP(服务名自动发现)、(Nodeport、Headless)、Ingress控制器 一…...

岛屿数量 广搜版BFS C#
和之前的卡码网深搜版是一道题 力扣第200题 99. 岛屿数量 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。…...

hive切换表底层文件类型以及分隔符
1、改底层文件存储类型,但是一般只会在数据文件与期望类型一致的时候使用,比如load等方式时发现建表时没指定对这样的,因为这个语句不会更改具体的底层文件内容,只改元数据 ALTER TABLE 表名 SET FILEFORMAT 希望类型;2、更改数据…...

ChatGPT o1与GPT-4o、Claude 3.5 Sonnet和Gemini 1.5 Pro的比较
全新的ChatGPT o1模型(代号“Strawberry”)是OpenAI的最新进展,专注于以前的AI模型难以应对的领域:高层次推理、数学和复杂编程。OpenAI设计o1模型以花费更多时间思考问题,使其在需要逐层推理的任务中提高准确性。本文…...

asp.net文件防盗链
URLRewriter实现 可以参考下面的文章 代码 .net framework 新建asp.net framework的web项目,新建AntiTheftChainHandler using System.Web;namespace AntiTheftChainStu01.Handler {public class AntiTheftChainHandler : IHttpHandler{public bool IsReusable…...

【日志】力扣58.最后一个单词的长度//14.最长公共前缀//28. 找出字符串中第一个匹配项的下标
2024.11.6 【力扣刷题】 58. 最后一个单词的长度 - 力扣(LeetCode)https://leetcode.cn/problems/length-of-last-word/?envTypestudy-plan-v2&envIdtop-interview-150 int lengthOfLastWord(char* s) {int count 0;for (int i strlen(s) - 1; i…...