Learning Invariant Representation for Unsupervised Image Restoration

Learning Invariant Representation for Unsupervised Image Restoration (Paper reading)

Wenchao Du, Sichuan University, CVPR20, Cited:63, Code, Paper

1. 前言

近年来,跨域传输被应用于无监督图像恢复任务中。但是,直接应用已有的框架,由于缺乏有效的监督,会导致翻译图像出现域漂移问题。相反,我们提出了一种无监督学习方法,该方法明确地从噪声数据中学习不变表示并重建清晰的观察结果。为此,我们将离散解纠缠表示和对抗性领域自适应引入到一般的领域转移框架中,并借助额外的自监督模块(包括背景和语义一致性约束),在双域约束(如特征域和图像域)下学习鲁棒表示。对合成和真实降噪任务的实验表明,该方法的降噪性能可与现有的有监督降噪和无监督降噪方法相媲美,且收敛速度比其他领域自适应方法更快、更稳定。

2. 整体思想

本文提出了一种无监督low-level的方法。主要的思想是将清晰图像和降质图像分别编码到各自的域中,然后从这些域中重建他们。类似于自编码器的思想。

3. 方法

我们的目标是从噪声输入中学习抽象的中间表示,并重建清晰的观察结果。在某种程度上,无监督图像复原可以看作是一个特定的域转移问题,即从噪声域到清晰域。因此,将该方法注入到一般的领域转移架构中,如图2所示。

在这里插入图片描述

在监督域转移中,我们得到从联合分布 P X , Y ( x , y ) P_{X, Y} (x, y) PX,Y(x,y)中抽取的样本 ( x , y ) (x, y) (x,y),其中 X X X y y y是两个图像域。对于无监督域翻译,从边缘分布PX (x)和PY (y)中提取样本(x, y)。为了从边缘样本推断联合分布,我们提出了一个共享潜空间假设,即在共享潜空间 Z Z Z中存在一个共享潜代码 z z z,从而我们可以从这个代码中恢复两幅图像。给定来自联合分布的样本 ( x , y ) (x, y) (x,y),该过程表示为
z = E X ( x ) = E Y ( y ) , x = G X ( z ) , y = G Y ( z ) z = E_X(x)=E_Y(y), \quad x = G_X(z),y=G_Y(z) z=EX(x)=EY(y),x=GX(z),y=GY(z)
关键的一步是如何实现这个共享潜在空间假设。为此,一种有效的策略是通过共享权重编码器共享高级表示,该编码器从统一分布中采样特征。然而,对于IR图像来说,潜在表示只包含语义是不合适的,这会导致恢复图像的域偏移,例如细节模糊和背景不一致。因此,我们尝试从输入中学习包含更丰富的纹理和语义特征的更广义的表示,即不变表示。为此,在该方法中引入了基于对抗域自适应的离散表示学习和自监督约束模块。细节将在接下来的小节中描述。

3.1 离散表示学习

离散表示旨在从输入中计算潜在编码,其中 z z z包含尽可能多的纹理和语义信息。为此,我们使用两个自编码器分别对 { E X , G X } \{E_X, G_X\} {EX,GX} { E Y , G Y } \{E_Y, G_Y\} {EY,GY}进行建模。给定任意未配对样本 ( x , y ) (x, y) (x,y),其中 x ∈ X x∈X xX y ∈ Y y∈Y yY分别表示来自不同域的噪声样本和干净样本,将Eq. 1重新表述为 z X = E X ( x ) z_X = E_X (x) zX=EX(x) z Y = E Y ( y ) z_Y = E_Y (y) zY=EY(y)。进一步,IR可以表示为$ F x → y ( x ) = G Y ( z X ) F^{x→y}(x) = G_Y(z_X) Fxy(x)=GY(zX)。然而,由于噪声总是附着在高频信号上,由于噪声水平和类型的变化,直接重建干净图像是很困难的,这需要强大的域发生器和鉴别器。因此,我们将解缠表示引入到我们的架构中。

解缠表示。对于噪声样本 x x x,使用额外的噪声编码器 E X N E^N_X EXN来对变化的噪声水平和类型进行建模。自重构由 x = G X ( z X , z X N ) x=G_X(z_X,z^N_X) x=GX(zXzXN)表示,其中 z X = E X ( x ) z_X=E_X(x) zX=EX(x) z X N = E X N ( x ) z^N_X=E^N_X(x) zXN=EXN(x)。假设潜在码 z X z_X zX z Y z_Y zY在共享空间中服从相同的分布, { z X , z Y } ∈ Z \{z_X,z_Y\}∈Z {zXzY}Z,类似于图像平移,无监督图像恢复可以分为两个阶段:前向平移和后向重建。

前向平移。我们首先从 ( x , y ) (x,y) (xy)和额外噪声码 z X N z^N_X zXN中提取表示 { z X , z Y } \{z_X,z_Y\} {zXzY}。恢复和退化可以表示为:
x ~ X → Y = G y ( z X ) y ~ Y → X = G X ( z y + z X N ) \tilde x^{X \to Y} = G_y(z_X) \\ \quad \\ \tilde y^{Y\to X}= G_X(z_y + z_X^N) x~XY=Gy(zX)y~YX=GX(zy+zXN)
其中 X → Y X→Y XY表示复原的清晰样本, Y → X Y→X YX表示退化的噪声样本。 G X G_X GX G Y G_Y GY被视为特定的域生成器。

反向交叉重建。在执行第一次平移后,可以通过交换输入来实现重建 x ~ X → Y \tilde x^{X \to Y} x~XY y ~ Y → X \tilde y^{Y \to X} y~YX表示:
x ^ = G X ( E y ( x ~ X → Y ) + E x N ( y ~ Y → X ) ) y ^ = G y ( E X ( y ~ Y → X ) ) \hat x = G_X(E_y(\tilde x^{X \to Y})+ E_x^N(\tilde y^{Y \to X})) \\ \quad \\ \hat y = G_y(E_X(\tilde y^{Y \to X})) x^=GX(Ey(x~XY)+ExN(y~YX))y^=Gy(EX(y~YX))
其中, x ^ \hat x x^ y ^ \hat y y^表示重构输入。为了加强这一约束,我们为X和Y域添加了交叉周期一致性损失 L C C L^{CC} LCC:
L X C C ( G X , G Y , E X , E Y , E X N ) = E X ( ∣ ∣ G X ( E y ( x ~ X → Y ) + E X N ( y ~ Y → X ) ) − x ∣ ∣ 1 ) L Y C C ( G X , G Y , E X , E Y , E X N ) = E Y ( ∣ ∣ G Y ( E y ( y ~ Y → X ) ) − y ∣ ∣ 1 ) L^{CC}_X(G_X,G_Y,E_X,E_Y,E^N_X) = \mathbb{E}_X(||G_X(E_y(\tilde x^{X\to Y})+E^N_X(\tilde y^{Y\to X}))-x||_1)\\ \quad \\ L^{CC}_Y(G_X,G_Y,E_X,E_Y,E^N_X) = \mathbb{E}_Y(||G_Y(E_y(\tilde y^{Y\to X}))-y||_1)\\ LXCC(GX,GY,EX,EY,EXN)=EX(∣∣GX(Ey(x~XY)+EXN(y~YX))x1)LYCC(GX,GY,EX,EY,EXN)=EY(∣∣GY(Ey(y~YX))y1)
对抗性领域适应。另一个因素是如何将潜在表示 z X z_X zX z Y z_Y zY嵌入到共享空间中。受无监督域自适应的启发,我们通过对抗性学习而不是共享权重编码器来实现它。我们的目标是促进服从相似分布的输入的表示,同时保留输入的更丰富的纹理和语义信息。因此,在我们的体系结构中使用了表示判别器 D R D_R DR。我们将这一特征表示为对抗损失 L a d v R L^R_{adv} LadvR:
L a d v R ( E X , E Y , D R ) = E X [ 1 2 l o g D R ( z X ) + 1 2 l o g ( 1 − D R ( z X ) ) ] + E Y [ 1 2 l o g D R ( z Y ) + 1 2 l o g ( 1 − D R ( z Y ) ) ] L_{adv}^R(E_X,E_Y,D_R) = \mathbb{E}_X\left[\frac{1}{2}logD_R(z_X)+\frac{1}{2}log(1-D_R(z_X))\right]+ \mathbb{E}_Y\left[\frac{1}{2}logD_R(z_Y)+\frac{1}{2}log(1-D_R(z_Y))\right] LadvR(EX,EY,DR)=EX[21logDR(zX)+21log(1DR(zX))]+EY[21logDR(zY)+21log(1DR(zY))]

3.2 自监督限制

由于转移后的图像缺乏有效的监督信号,仅依靠特征域判别约束将不可避免地导致生成图像的域移位问题。为了加快收敛速度,同时学习更鲁棒的表示,引入了自监督模块,包括背景一致性模块(BCM)和语义一致性模块(SCM),以提供更合理和可靠的监督。

BCM的目的是保持转移图像和输入图像之间的背景一致性。类似的策略也被应用于自监督图像重建任务。这些方法利用梯度误差约束重构图像,通过模糊算子对输入和输出图像进行平滑处理,如高斯模糊核和制导滤波。与之不同的是,在我们的模块中,对恢复的图像直接使用L1损失,而不是梯度误差损失,如图3所示,在我们的实验中,这是一种简单而有效的方法,可以在保持背景一致性的同时恢复更精细的纹理。具体来说,采用多尺度高斯模糊算子分别获得多尺度特征。因此,背景一致性损失可表示为:
L B C = ∑ σ = 5 , 9 , 15 λ σ ∣ ∣ ( B σ ( X ) − B σ ( X ~ ) ) ∣ ∣ 1 L_{BC} = \sum_{\sigma=5,9,15} \lambda_\sigma||(B_\sigma(X)-B_\sigma(\tilde X))||_1 LBC=σ=5,9,15λσ∣∣(Bσ(X)Bσ(X~))1
其中, B σ ( ⋅ ) B_σ(·) Bσ()为模糊核为 σ σ σ的高斯模糊算子, λ σ λ_σ λσ为平衡不同高斯模糊水平误差的超参数。 X X X X ~ \tilde X X~表示原始输入和转移后的输出,即 { x , x ~ X → Y } \{x, \tilde x^{X→Y}\} {x,x~XY} { Y , y ~ Y → X } \{Y, \tilde y^{Y→X}\} {Y,y~YX}。基于对图像去噪的实验尝试,当σ ={5,9,15}时,我们将 λ σ λ_σ λσ分别设置为{0.25,0.5,1.0}。
在这里插入图片描述
此外,受感知损失的启发,预训练模型的深层特征只包含语义含义,这些语义含义是无噪声的或噪声很小的。因此,与一般的特征损失是通过浅层特征之间的相似性来恢复更精细的图像纹理细节不同,我们只从损坏和恢复的图像中提取更深层的特征作为语义表示来保持一致性,称为语义一致性损失 L S C L_{SC} LSC。它可以被表示为
L S C = ∣ ∣ ϕ l ( X ) − ϕ l ( X ~ ) ∣ ∣ 2 2 L_{SC} = ||\phi_l(X)-\phi_l(\tilde X)||^2_2 LSC=∣∣ϕl(X)ϕl(X~)22
其中 ϕ ( ⋅ ) \phi(·) ϕ()表示预训练模型的 l l l层特征。在我们的实验中,我们在ImageNet上使用了VGG-19预训练网络的conv5-1层。

4. 实验

测试的时候,直接用图2中的 E X E_X EX G Y G_Y GY进行图像复原。其实可以看到,一些指标甚至不如DnCNN。但这个不是问题~

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

十.EtherCAT开发之microchip MCU D51+ LAN9253 的开发COE应用(SPI directly 模式)

十.EtherCAT开发之microchip MCU D51+ LAN9253 的开发COE应用(SPI directly 模式) 文章目录 十.EtherCAT开发之microchip MCU D51+ LAN9253 的开发COE应用(SPI directly 模式)10.0 LAN9253 REG 访问(SPI directly 模式)10.0.1 手册定义10.0.2 CSR REG访问代码10.0.3 执行结果10…

私有继承和虚函数私有化能用么?

源起 以前就知道private私有化声明关键字,和virtual虚函数关键字两者并不冲突,可以同时使用。 但是,它所表示的场景没有那么明晰,也觉得难以理解,直到近段时间遇到一个具体场景。 场景 借助ACE遇到的问题进行展示 …

四、2023.9.30.C++面向对象end.4

文章目录 49、 简述一下什么是常函数,有什么作用?50、 说说什么是虚继承,解决什么问题,如何实现?51、简述一下虚函数和纯虚函数,以及实现原理?52、说说纯虚函数能实例化吗,为什么&am…

通过code2Session接口获取openId(上)

//导入request请求工具类 import {getBaseUrl,getWxLogin,getUserProfile,requestUtil} from ../../utils/requestUtil; import regeneratorRuntime from ../../lib/runtime/runtime; Page({/*** 页面的初始数据*/data: {address:{},baseUrl:,cart:[],totalPrice:0,totalNum:0}…

【数据结构与算法】通过双向链表和HashMap实现LRU缓存 详解

这个双向链表采用的是有伪头节点和伪尾节点的 与上一篇文章中单链表的实现不同,区别于在实例化这个链表时就初始化了的伪头节点和伪尾节点,并相互指向,在第一次添加节点时,不需要再考虑空指针指向问题了。 /*** 通过链表与HashMa…

030-从零搭建微服务-消息队列(二)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):mingyue: 🎉 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…

1 论文笔记:Efficient Trajectory Similarity Computation with ContrastiveLearning

2022CIKM 1 intro 1.1 背景 轨迹相似度计算是轨迹分析任务(相似子轨迹搜索、轨迹预测和轨迹聚类)最基础的组件之一现有的关于轨迹相似度计算的研究主要可以分为两大类: 传统方法 DTW、EDR、EDwP等二次计算复杂度O(n^2)缺乏稳健性 会受到非…

Flutter笔记:滚动之-无限滚动与动态加载的实现(GetX简单状态管理版)

Flutter笔记 无限滚动与动态加载的实现(GeX简单状态管理版) 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq…

idea常用快捷键 idea搜索快捷键

常用快捷键 IntelliJ IDEA 是一款流行的 Java 集成开发环境(IDE),有许多常用的快捷键可以帮助开发者提高效率。以下是一些常用的 IntelliJ IDEA 快捷键: CtrlSpace:基本代码补全,用于输入任何东西&#x…

stm32 - 初识2

stm32 - 初识2 工程架构点灯程序寄存器方式点灯库函数的方式点灯 工程架构 启动文件 中断向量表,中断服务函数,其他中断等 中断服务函数中的,复位中断是整个程序的入口,调用systeminit,和main函数 点灯程序 寄存器方式…

HTML的相关知识

1.什么是HTML?基本语法 HTML: Hyper Text Markup Language (超文本标记语言) 超文本?超级文本,例如流媒体,声音、视频、图片等。 标记语言?这种语言是由大量的标签组成。HTML标签参考手…

尚硅谷谷粒商城部分报错问题处理

1、启动报错: 内容: org.springframework.beans.factory.BeanCreationException: Error creating bean with name attrAttrgroupRelationController: Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed t…

《数据结构、算法与应用C++语言描述》-栈的应用-离线等价类问题

离线等价类问题 问题描述 等价类:假定一个具有n个元素的集合U1,2,…,n和一个具有r个关系的集合 R ( i 1 , j 1 ),( i 2 , j 2 ), ……

推出全新AIGameFi,SCF金融公链FinSOUL促进元宇宙发展

在被誉为元宇宙元年的2021年,SCF(Standard Cross Finance)金融公链正着眼于打造一项开创性的项目,推出创新的金融公链生态,并期待成为元宇宙2.0的先锋。虽然2021年见证了元宇宙项目的强势崛起,但在SCF金融公…

Vue定义全局组件的方式

Vue.js是一种流行的JavaScript框架,用于构建交互式的Web应用程序。Vue提供了一种简单而灵活的方式来定义和使用组件。在本文中,我们将探讨Vue中定义全局组件的三种方式,让你能够更好地理解和使用Vue组件。 引言 组件是Vue应用程序的基本构建…

【C++】class的设计与使用(十)重载iostream运算符

希望对某个类对象进行读写操作&#xff0c;直接cout<<类对象<<endl;或cin>>类对象;编译器会报错&#xff0c;所以我们必须提供一份重载的input/output运算符&#xff1a; 重载ostream运算符 ostream& operator<<(ostream &os, const Triangu…

Redis配置和优化

Redis配置和优化 一 、Redis介绍二、关系数据库和非关系数据库2.1、关系型数据库2.2、 非关系型数据库2.3、 非关系型数据库的产生背景2.4、 关系型数据库和非关系型数据库区别2.5、 总结 三、缓存概念3.1、系统缓存3.2、 缓存保存位置及分层结构3.2.1、DNS缓存3.2.2、 应用层缓…

10.1 File类

前言&#xff1a; java.io包中的File类是唯一一个可以代表磁盘文件的对象&#xff0c;它定义了一些用于操作文件的方法。通过调用File类提供的各种方法&#xff0c;可以创建、删除或者重命名文件&#xff0c;判断硬盘上某个文件是否存在&#xff0c;查询文件最后修改时间&…

MySQL数据库基础与概念解析

在如今这个信息爆炸的时代,数据成了我们生活中不可或缺的一部分。但是,数据本身并没有太大的价值,真正重要的是我们如何管理和利用这些数据。这就引出了数据库这一概念,一个系统化、高效的数据管理工具。 特别是在复杂的应用场景中,比如游戏《三国志》系列,一个好的数据…

【HTML】表格行和列的合并

概述 当我们需要在 HTML 表格中展示复杂的数据时&#xff0c;行和列的合并可以帮助我们实现更灵活的布局和结构。通过合并行和列&#xff0c;我们可以创建具有更多层次和结构的表格&#xff0c;使数据更易于理解和分析。 在 HTML 表格中&#xff0c;我们可以使用 rowspan 和 …