mathematics-2024《Graph Convolutional Network for Image Restoration: A Survey》

推荐深蓝学院的《深度神经网络加速:cuDNN 与 TensorRT》,课程面向就业,细致讲解CUDA运算的理论支撑与实践,学完可以系统化掌握CUDA基础编程知识以及TensorRT实战,并且能够利用GPU开发高性能、高并发的软件系统,感兴趣可以直接看看链接:深蓝学院《深度神经网络加速:cuDNN 与 TensorRT》
在这里插入图片描述

核心思想

该论文的核心思想是系统性地综述了图卷积网络(Graph Convolutional Networks, GCNs)在图像修复(image restoration)领域的应用,重点探讨了GCNs在图像去噪(image denoising)、超分辨率(image super-resolution)和去模糊(image deblurring)等任务中的潜力与优势。论文强调了GCNs在处理非欧几里得数据结构(如图像的像素关系图)方面的独特能力,特别是其能够捕捉图像中的长距离依赖(long-range dependencies)并保留局部结构信息,从而提升修复效果。论文通过对比传统方法(如基于滤波和基于模型的方法)与基于学习的GCN方法,展示了GCNs在复杂图像修复任务中的优越性,并指出了未来的研究方向和挑战。


目标函数

在图像修复任务中,GCNs的目标函数通常设计为最小化修复图像与真实清晰图像之间的差异,同时考虑图像的拓扑结构信息。具体来说,目标函数可以分为以下几类:

  1. 图像去噪目标函数
    对于去噪任务,目标函数通常基于均方误差(Mean Squared Error, MSE)或结构相似性(Structural Similarity, SSIM)等指标,结合GCNs的图结构特性。例如,论文中提到的AdarGCN和CP-GCN等方法的目标函数可以表示为:
    L = 1 N ∑ i = 1 N ∥ I ^ i − I i ∥ 2 2 + λ R ( G ) , \mathcal{L} = \frac{1}{N} \sum_{i=1}^N \left\| \hat{I}_i - I_i \right\|_2^2 + \lambda \mathcal{R}(\mathcal{G}), L=N1i=1N I^iIi 22+λR(G),
    其中:

    • I ^ i \hat{I}_i I^i 表示GCN预测的去噪图像像素值, I i I_i Ii 为对应的真实清晰图像像素值。
    • R ( G ) \mathcal{R}(\mathcal{G}) R(G) 是正则化项,基于图结构 G \mathcal{G} G(包括节点和边信息),用于约束图的拓扑特性或防止过拟合。
    • λ \lambda λ 是正则化权重。
  2. 超分辨率目标函数
    对于超分辨率任务,目标函数旨在最小化低分辨率图像经过GCN上采样后的输出与高分辨率真实图像之间的差异。例如,GCEDSR方法的目标函数可能为:
    L = 1 N ∑ i = 1 N ∥ GCN ( I i L R ) − I i H R ∥ 2 2 + μ L perceptual , \mathcal{L} = \frac{1}{N} \sum_{i=1}^N \left\| \text{GCN}(I^{LR}_i) - I^{HR}_i \right\|_2^2 + \mu \mathcal{L}_{\text{perceptual}}, L=N1i=1N GCN(IiLR)IiHR 22+μLperceptual,
    其中:

    • I i L R I^{LR}_i IiLR I i H R I^{HR}_i IiHR 分别为低分辨率输入和高分辨率目标图像。
    • L perceptual \mathcal{L}_{\text{perceptual}} Lperceptual 是感知损失(perceptual loss),基于预训练网络(如VGG)提取的高级特征差异。
    • μ \mu μ 是感知损失的权重。
  3. 去模糊目标函数
    去模糊任务的目标函数通常结合像素级损失和结构级损失。例如,WIG-Net方法的目标函数可能为:
    L = ∥ I ^ − I ∥ 2 2 + γ L gradient + η L graph , \mathcal{L} = \left\| \hat{I} - I \right\|_2^2 + \gamma \mathcal{L}_{\text{gradient}} + \eta \mathcal{L}_{\text{graph}}, L= I^I 22+γLgradient+ηLgraph,
    其中:

    • L gradient \mathcal{L}_{\text{gradient}} Lgradient 是梯度损失,鼓励恢复图像保留清晰的边缘信息。
    • L graph \mathcal{L}_{\text{graph}} Lgraph 是基于图结构的损失,约束GCN输出的拓扑一致性。
    • γ \gamma γ η \eta η 是权重参数。

目标函数的优化过程

GCNs的目标函数优化通常通过梯度下降法或其变种(如Adam优化器)实现,结合图结构的特性进行迭代更新。优化过程包括以下步骤:

  1. 图结构构建

    • 将图像表示为图 G = ( V , E ) \mathcal{G} = (V, E) G=(V,E),其中节点 V V V 表示像素或图像块,边 E E E 表示像素间的关系(如邻接关系或特征相似性)。
    • 使用邻接矩阵 A A A 表示边权重,归一化后的形式为 D ~ − 1 2 A ~ D ~ − 1 2 \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} D~21A~D~21,其中 A ~ = A + I N \tilde{A} = A + I_N A~=A+IN(加入自环), D ~ \tilde{D} D~ 为度矩阵。
  2. 特征传播与聚合

    • GCN通过消息传递机制更新节点特征。每一层的特征更新公式为:
      H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) W ( l ) ) , H^{(l+1)} = \sigma \left( \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)} \right), H(l+1)=σ(D~21A~D~21H(l)W(l)),
      其中 H ( l ) H^{(l)} H(l) 是第 l l l 层的节点特征矩阵, W ( l ) W^{(l)} W(l) 是可学习的权重矩阵, σ \sigma σ 是激活函数(如ReLU)。
  3. 损失计算

    • 根据目标函数(如MSE、感知损失或图结构损失),计算当前预测输出与真实图像之间的损失。
  4. 反向传播与参数更新

    • 通过自动微分计算损失对网络参数(包括权重矩阵 W ( l ) W^{(l)} W(l) 和图结构相关参数)的梯度。
    • 使用优化器(如Adam)更新参数:
      θ ← θ − η ∇ θ L , \theta \leftarrow \theta - \eta \nabla_{\theta} \mathcal{L}, θθηθL,
      其中 η \eta η 是学习率, ∇ θ L \nabla_{\theta} \mathcal{L} θL 是损失对参数的梯度。
  5. 迭代优化

    • 重复上述步骤直到损失收敛或达到预设的迭代次数。

主要贡献点

该论文的主要贡献点包括:

  1. 系统性综述

    • 提供了GCNs在图像修复领域的全面综述,涵盖图像去噪、超分辨率和去模糊三大任务,填补了相关领域综述的空白。
  2. 方法分类与分析

    • 将GCN方法分类为图像去噪、超分辨率、去模糊以及与大模型(LLMs)结合的方法,并分析了每类方法的动机、原理和性能。
  3. 性能比较

    • 通过公开数据集(如Set5、Set14、Urban100、BSD100)对GCN方法与传统方法进行了定量和定性比较,展示了GCN在捕捉长距离依赖和提升图像质量方面的优越性。
  4. 未来方向与挑战

    • 提出了GCN在图像修复中的潜在研究方向(如网络优化、多模态融合、轻量化设计)和挑战(如图结构构建、计算成本、泛化能力),为后续研究提供了指导。

实验结果

论文通过在标准数据集上进行实验,比较了GCN方法与传统方法的性能。以下是关键实验结果的总结:

  1. 图像去噪

    • 在BSD68和Set12数据集上,GCN方法(如AdarGCN、CP-GCN、GAiA-Net)在峰值信噪比(PSNR)和SSIM指标上优于传统方法(如BM3D)和CNN基方法(如DnCNN)。
    • 例如,CP-GCN在BSD68数据集上针对高斯噪声( σ = 50 \sigma=50 σ=50)的PSNR达到28.45 dB,优于DnCNN的28.01 dB。
  2. 超分辨率

    • 在Set5、Set14、Urban100和BSD100数据集上,GCEDSR方法在不同放大倍数( × 2 , × 4 , × 8 \times 2, \times 4, \times 8 ×2,×4,×8)下表现出色。例如,在Set5数据集上,GCEDSR在 × 4 \times 4 ×4放大倍数的PSNR为32.61 dB,SSIM为0.9001,优于EDSR(32.46 dB / 0.8968)。
    • 随着放大倍数增加,所有方法的性能下降,但GCN方法在恢复高频细节方面更具优势。
  3. 去模糊

    • 在GoPro数据集上,WIG-Net等GCN方法在PSNR和SSIM上优于传统去模糊方法(如DeblurGAN)。例如,WIG-Net的PSNR达到30.12 dB,优于DeblurGAN的29.55 dB。
    • GCN方法在处理复杂运动模糊时表现出更好的结构保留能力。
  4. 综合分析

    • GCN方法在捕捉长距离依赖和复杂拓扑结构方面优于CNN方法,尤其是在处理非均匀噪声或复杂场景时。
    • 定性结果显示,GCN方法生成的图像在纹理细节和结构完整性上更接近真实图像。

算法实现过程

以下以图像去噪任务中的AdarGCN方法为例,详细解释GCN算法的实现过程:

  1. 输入准备

    • 输入为噪声图像 I noisy ∈ R H × W × C I_{\text{noisy}} \in \mathbb{R}^{H \times W \times C} InoisyRH×W×C,其中 H H H W W W 为图像高宽, C C C 为通道数。
    • 将图像分割为像素或图像块,构造图 G = ( V , E ) \mathcal{G} = (V, E) G=(V,E),其中节点 V V V 表示像素/块,边 E E E 根据像素间的空间距离或特征相似性定义。
    • 计算邻接矩阵 A A A,通常基于k近邻算法(k-NN)或余弦相似性:
      A i j = { exp ⁡ ( − ∥ f i − f j ∥ 2 2 σ 2 ) , if  j ∈ N i , 0 , otherwise , A_{ij} = \begin{cases} \exp\left(-\frac{\|f_i - f_j\|_2^2}{\sigma^2}\right), & \text{if } j \in \mathcal{N}_i, \\ 0, & \text{otherwise}, \end{cases} Aij={exp(σ2fifj22),0,if jNi,otherwise,
      其中 f i f_i fi f j f_j fj 是节点 i i i j j j 的特征向量, N i \mathcal{N}_i Ni 是节点 i i i 的邻居集。
  2. GCN网络架构

    • 初始化:将输入图像的像素特征(或提取的CNN特征)作为节点特征矩阵 H ( 0 ) ∈ R N × F H^{(0)} \in \mathbb{R}^{N \times F} H(0)RN×F,其中 N N N 是节点数, F F F 是特征维度。
    • GCN层:堆叠多个GCN层,每层执行特征聚合和变换:
      H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) W ( l ) ) , H^{(l+1)} = \sigma \left( \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)} \right), H(l+1)=σ(D~21A~D~21H(l)W(l)),
      其中 A ~ = A + I N \tilde{A} = A + I_N A~=A+IN D ~ \tilde{D} D~ 是度矩阵, W ( l ) ∈ R F l × F l + 1 W^{(l)} \in \mathbb{R}^{F_l \times F_{l+1}} W(l)RFl×Fl+1 是权重矩阵。
    • 自适应聚合:AdarGCN引入自适应权重机制,动态调整邻接矩阵 A A A
      A ′ = Softmax ( MLP ( [ H i ( l ) , H j ( l ) ] ) ) , A' = \text{Softmax} \left( \text{MLP} \left( [H^{(l)}_i, H^{(l)}_j] \right) \right), A=Softmax(MLP([Hi(l),Hj(l)])),
      其中 MLP \text{MLP} MLP 是一个多层感知机, [ H i ( l ) , H j ( l ) ] [H^{(l)}_i, H^{(l)}_j] [Hi(l),Hj(l)] 是节点对的特征拼接。
  3. 输出层

    • 最后一层GCN输出节点特征 H ( L ) H^{(L)} H(L),通过全连接层或卷积层映射回图像空间,生成去噪图像 I ^ \hat{I} I^
      I ^ = Conv ( H ( L ) ) . \hat{I} = \text{Conv} \left( H^{(L)} \right). I^=Conv(H(L)).
  4. 损失函数

    • 使用MSE损失计算预测图像与真实图像的差异:
      L = 1 N ∑ i = 1 N ∥ I ^ i − I i ∥ 2 2 . \mathcal{L} = \frac{1}{N} \sum_{i=1}^N \left\| \hat{I}_i - I_i \right\|_2^2. L=N1i=1N I^iIi 22.
    • 可选地加入正则化项,如图平滑损失:
      L graph = ∑ i , j A i j ∥ H i − H j ∥ 2 2 . \mathcal{L}_{\text{graph}} = \sum_{i,j} A_{ij} \left\| H_i - H_j \right\|_2^2. Lgraph=i,jAijHiHj22.
  5. 训练过程

    • 使用Adam优化器,设置学习率(如 1 0 − 3 10^{-3} 103),批量大小(如32)。
    • 在训练集(如BSD68)上迭代优化,验证集上监控PSNR和SSIM。
    • 提前停止或学习率调度以防止过拟合。
  6. 测试与评估

    • 在测试集(如Set12)上评估模型,计算PSNR、SSIM等指标。
    • 定性分析输出图像的纹理和结构恢复效果。

总结

该论文通过系统综述和实验验证,展示了GCNs在图像修复领域的强大潜力,尤其是在处理复杂像素关系和长距离依赖方面的优势。其目标函数结合像素级损失和图结构约束,通过梯度下降优化实现高效训练。实验结果表明,GCN方法在去噪、超分辨率和去模糊任务中均优于传统方法,为未来研究提供了重要参考。算法实现过程清晰,结合图结构构建和GCN特征传播,适合处理非欧几里得数据结构的图像修复任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/81430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[LevelDB]LevelDB版本管理的黑魔法-为什么能在不锁表的情况下管理数据?

文章摘要 LevelDB的日志管理系统是怎么通过双链表来进行数据管理为什么LevelDB能够在不锁表的情况下进行日志新增 适用人群: 对版本管理机制有开发诉求,并且希望参考LevelDB的版本开发机制。数据库相关从业者的专业人士。计算机狂热爱好者,对计算机的…

【C++进阶篇】C++容器完全指南:掌握set和map的使用,提升编码效率

C容器的实践与应用:轻松掌握set、map与multimap的区别与用法 一. 序列式容器与关联式容器1.1 序列式容器 (Sequential Containers)1.2 关联式容器 (Associative Containers) 二. set系列使用2.1 set的构造和迭代器2.2 set的增删查2.2.1 插入2.2.2 查找2.2.3 删除 2.…

2_Spring【IOC容器中获取组件Bean】

Spring中IOC容器中获取组件Bean 实体类 //接口 public interface TestDemo {public void doSomething(); } // 实现类 public class HappyComponent implements TestDemo {public void doSomething() {System.out.println("HappyComponent is doing something...")…

安卓开饭-ScrollView内嵌套了多个RecyclerView,只想与其中一个RecyclerView有联动

在 Android 开发中,将 RecyclerView 嵌套在 ScrollView 内通常会导致性能问题和滚动冲突,应尽量避免这种设计。以下是原因和替代方案: 为什么不推荐 RecyclerView ScrollView?​​ 性能损耗​ RecyclerView 本身已自带高效回收复…

HTTP 请求中 Content-Type 头部

HTTP 请求中 Content-Type 头部可以设置的各种不同的传输格式。multipart/form-data 只是其中一种,主要用于传输包含文件的数据。 以下是一些常见的 HTTP 请求体的 Content-Type 及其用途: 常见的数据传输格式 (Content-Type) 列表: application/json: 描述: 用于传输 JSO…

【U-boot 命令使用】

文章目录 1 查询有哪些命令2 信息查询命令dbinfo - 查看板子信息printenv- 输出环境变量信息version - 输出uboot版本信息 3 环境变量操作命令修改环境变量新建环境变量删除环境变量 4 内存操作命令md命令nm命令mm命令mv命令cp命令cmp命令 5 网络操作命令与网络有关的环境变量p…

初学者如何用 Python 写第一个爬虫?

初学者如何用 Python 写第一个爬虫? 一、爬虫的基本概念 (一)爬虫的定义 爬虫,英文名为 Web Crawler,也被叫做网络蜘蛛、网络机器人。想象一下,有一个勤劳的小蜘蛛,在互联网这个巨大的蜘蛛网中…

IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 VSCode + IoT Link 插件

文章目录 概述IDE安装安装旧版本VSCode安装插件安装问题和解决手动安装SDK包手动下载依赖工具 IoTLink配置IoTLink Home用户设置-工具链-编译器用户设置-工具链-构建器用户设置-工具链-烧录器用户设置-SDK管理工程设置-SDK配置工程设置-编译器工程设置-调试器 创建工程Demo 源码…

深度剖析:Dify+Sanic+Vue+ECharts 搭建 Text2SQL 项目 sanic-web 的 Debug 实战

目录 项目背景介绍sanic-web Dify\_service handle\_think\_tag报错NoneType问题描述debug Dify调用不成功,一直转圈圈问题描述debug 前端markdown格式只显示前5页问题描述debug1. 修改代码2.重新构建1.1.3镜像3.更新sanic-web/docker/docker-compose.yaml4. 重新部…

理想AI Talk第二季-重点信息总结

一、TL;DR 理想为什么要做自己的基模:座舱家庭等特殊VLM场景,deepseek/openai没有解决理想的基模参数量:服务端-300B,VLencoder-32B/3.6B,日常工作使用-300B,VLA-4B为什么自动驾驶可以达成&…

TensorRT

TensorRT 下载 TensorRT 7.1.3.4 TAR压缩包,解压到安装目录: tar xzvf TensorRT-7.1.3.4.Ubuntu-16.04.x86_64-gnu.cuda-11.0.cudnn8.0.tar.gz 添加 TensorRT lib 到环境变量: gedit ~/.bashrc # 添加 export LD_LIBRARY_PATH$LD_LIBRARY_PAT…

【NGINX】 -9 nginx + tomcat实现的多级反向代理

文章目录 1、tomcat的安装 (centos版本)1.1 安装Java依赖环境1.2 安装tomcat 2、tomcat的虚拟主机的配置2.1 配置多级目录 3、利用nginx的反向代理实现将转发指向一个虚拟机3.1 nginx服务器的配置3.2 客户端配置 4、 反向多级代理代理服务器操作nginx 1 服务器nginx 2 服务器to…

基于requests_html的python爬虫

前言:今天介绍一个相对性能更高的爬虫库requests_html,会不会感觉和requests有点联系?是的。为什么开始不直接介绍呢?因为我觉得requests是最基本入门的东西,并且在学习过程中也能学到很多东西。我的python老师在介绍这…

【架构篇】架构类型解释

架构设计的本质:从模糊概念到系统化思维 摘要 “架构”是系统设计的灵魂,但许多人对它的理解仍停留在抽象层面。本文系统解析架构的8大核心维度,结合设计原则、案例与误区分析,帮助开发者建立从战略到落地的完整认知框架。 一、架…

用Python绘制梦幻星空

用Python绘制梦幻星空 在这篇教程中,我们将学习如何使用Python创建一个美丽的星空场景。我们将使用Python的图形库Pygame和随机库来创建闪烁的星星、流星和月亮,打造一个动态的夜空效果。 项目概述 我们将实现以下功能: 创建深蓝色的夜…

PyTorch循环神经网络(Pytotch)

文章目录 循环神经网络(RNN)简单的循环神经网络长短期记忆网络(LSTM)门控循环单元(GRU) 循环神经网络(RNN) 循环神经网络(RecurrentNeuralNetwork,RNN&#…

用算术右移实现逻辑右移及用逻辑右移实现算术右移

函数srl()用算术右移实现逻辑右移,函数sra()用逻辑右移实现算术右移。 程序代码 int sra(int x,int k); unsigned int srl(unsigned int x, int k);void main() {int rx1,k,x1;unsigned int rx2,x2;k3;x10x8777;x20x8777;rx1sra(x1, k);rx2srl(x2, k);while(1); }…

pojo层、dao层、service层、controller层的作用

在Java Web开发中,常见的分层架构(如Spring Boot项目)通常包含POJO层、DAO层、Service层和Controller层,各层职责明确,协同工作。以下是各层的作用及相互关系: 1. POJO层(Model/Entity层&#…

【Linux网络】五种IO模型与阻塞IO

IO 在Linux网络环境里,IO(Input/Output)指的是网络数据在系统与外部网络(像其他设备、服务器或者客户端)之间进行传输的过程。 它是网络编程和系统性能优化的核心内容。 IO :INPUT和OUTPUT(站…

入门OpenTelemetry——应用自动埋点

埋点 什么是埋点 埋点,本质就是在你的应用程序里,在重要位置插入采集代码,比如: 收集请求开始和结束的时间收集数据库查询时间收集函数调用链路信息收集异常信息 这些埋点数据(Trace、Metrics、Logs)被…