RainDiffusion: When Unsupervised Learning Meets Diffusion Models for Real-world Image Deraining

2023-11-07

一.摘要、介绍及相关工作

       传统方法:图像去雨的传统方法通常利用不同的先验,例如稀疏编码,高斯混合模型和低秩表示。然而,这些手工制作的先验表现出有限的代表性能力,导致在复杂和多变的下雨情况下的结果不佳。

       监督:通过从大量合成的无雨/下雨图像对中学习,基于深度学习的去雨技术性能得到了大幅提高。这些监督的方法通常实现次优性能的真实世界的雨天图像,因为i)合成和真实世界的雨天图像之间的域差距的存在,和ii)收集大规模的真实世界的无雨/雨天图像对的困难。

       半监督:为了缓解上述问题,半监督去雨技术利用成对的合成数据进行良好的初始化,并利用不成对的真实世界数据进行泛化。但由于合成图像的雨型是固定的,而真实图像的雨型是动态变化的,因此适用性仍然有限。

       此外,CycleGAN 的引入使生成对抗网络(GANs)成为现实世界图像去雨任务的首选模型,因为它们避免了对配对数据的需求。然而,基于GAN的方法难以训练并受到一系列问题的影响,例如过早收敛、模型崩溃和优化不稳定性,从而导致图像退化。

总结图像去雨的两个主要障碍:

       1、真实世界的多雨图像缺乏相应的干净图像,这对现有的扩散模型提出了挑战,这些模型通常优先考虑合成退化场景,但合成数据上训练的模型很难有效地处理复杂的现实世界的降雨。

        2、真实世界的雨具有不同尺度,包括不同的方向,密度,大小等。这些多尺度雨模式表现出明显的自相似性,这意味着不同尺度上的相关信息可以潜在地增强特征表示能力。然而,现有的扩散模型主要是为单尺度图像处理而设计的。

二.方法

       RainDiffusion是第一个用于真实世界图像去雨的基于扩散的模型。它由两个主要的交互分支组成:Nondiffusive Translation Branch(NTB)和Diffusive Translation Branch(DTB)。NTB引导初始晴天/下雨图像对的生成,而DTB利用两个多尺度扩散模型来约束晴天和下雨图像之间的转换。

     NTB:作用是生成成对的无雨/有雨图像,采用U-net实现。输入不成对的无雨图x、有雨图y,GA负责由无雨图生成有雨图,GB负责由有雨图生成无雨图,形成循环结构。

       NTB与其他循环结构的区别在于:1)NTB不需要判别器进行对抗性训练。2) NTB生成器用于生成成对的洁净/雨天图像,用于扩散模型训练。因此,GA和GB只在训练阶段使用,不参与测试阶段的图像去噪。

       损失函数为:

      DTB:作用是使用扩散模型进行去雨/生成雨。正向扩散过程不做修改,逆向扩散过程变为:

     即给定高斯噪音以及生成的有雨图,推断无雨图。损失函数为:

       在真实世界的场景中,雨表现出多样性,但不限于不同的方向、密度和大小。这在直接实现扩散模型以执行真实世界的图像解析方面提出了一个相当大的挑战。因此,我们将不同尺度雨纹的这种相关性纳入扩散生成过程中。设计了多尺度扩散模型。

三.实验及结论

      RainDiffusion比目前的un/semi-supervised方法表现得更好,也比完全监督方法具有竞争优势。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RainDiffusion: When Unsupervised Learning Meets Diffusion Models for Real-world Image Deraining 的相关文章

随机推荐

  • 解决git分支切换时遇到的问题

    Please commit your changes or stash them before you switch branches问题的解决 在项目开发的过程中 有时候会遇到一个分支上的BUG还没解决 另一个分支上的BUG又急需解决 这
  • docker 安装mysql总是报错

    完全卸载mysql 把所有的mysql 相关的文件全部删除 find name mysql 查到文件全部删除
  • OpenGL 入门 19:内建变量、接口块、Uniform缓冲

    一 内建变量 查询所有的内建变量的话 请查看OpenGL的wiki 顶点着色器 Input 变量名称 变量类型 变量语义 作用 gl VertexID int 索引 当使用glDrawElements 存储的是正在绘制顶点的当前索引 当使用
  • linux下多线程的创建和结构体传参

    下面总结一下linux下多线程的创建和传参 这里的传的参数是结构体的地址 然后在子线程中输出所传结构体对象的值 实现过程非常简单 其中pthread create 创建子线程 pthread join 是等待阻塞子线程结束 pthread
  • 在Python学习中遇到的一个疑问(可能已解决)

    文章目录 问题 分析 问题 从网上扒拉出来一段代码 是关于函数重写的 输出结果比较正常 但某些函数不太懂 python usr bin python3 class Vector def init self a b self a a self
  • Vue组件之间的通信方式

    六种方式 1 props emit 适用于 父子组件通信 略 2 ref 与 parents children 适用于父子组件通信 不好维护 不推荐使用 3 EventBus 适用于 父子 隔代 兄弟组件通信 这种方法通过一个空的 Vue
  • 每日sql-复购率问题count+case+timediff类函数

    记录一下案例 下次直接拿起来用
  • Python异常捕获及自定义异常类

    Python异常捕获及自定义异常类 一 什么是异常 异常是一个与业务逻辑无关的BUG 一个潜在错误或者网络错误事件等 如 尚未实现的函数 缩进错误 Python语法错误等 该事件可能会在程序执行过程中发生 影响程序的正常执行 在Python
  • 4.单链表ADT模板简单应用算法设计:单链表中前 m 个元素和后 n 个元素的互换

    问题描述 目的 使用C 模板设计单链表的抽象数据类型 ADT 并在此基础上 使用单链表ADT的基本操作 设计并实现单链表的简单算法设计 内容 1 请使用模板设计单链表的抽象数据类型 由于该环境目前仅支持单文件的编译 故将所有内容都集中在一个
  • HJ77 火车进站

    Powered by NEFU AB IN Link 文章目录 HJ77 火车进站 题意 思路 代码 HJ77 火车进站 题意 给定一个正整数N代表火车数量 0
  • C# WPF+skyline可视化学习笔记(一)------在WPF中加载fly地图

    我是学Java的 校招进了公司 是做这个的 我就只有现学了 还好有耐心的师傅和同事们友好帮助 不然我可能就凉了 好了 话不多说 本章内容就是使用vs2017 创建一个WPF项目并且一步一步手把手加载fly地图文件吧 前提准备 你得有这个软件
  • Java聊天--聊天界面

    import java awt import javax swing public class myMain extends JFrame JTextField tsend 在外部声明文本框 用来写留言 Choice clist 声明下拉框
  • 分享一个自媒体副业,认真做可以月入6000+

    做的这个副业并不难 每天花费2 3小时做视频剪辑 上个月一个新账号收益6000多 如果你现在每天的空闲时间比较多 也可以去尝试着做一下视频剪辑 这期内容来把方法分享给粉丝们 如果对你有所帮助 记得点赞支持一下大周 很多人都不知道我们在自媒体
  • Jenkins配置及插件安装

    Jenkins里应该如何把master节点以及slave节点搞到一起 进行一个联系 首先应该访问到安装好Jenkins的机器 下图是Jenkins首页的内容 暂时没有任何的流水线及agent 完善一下基本的信息 root jenkins m
  • TVM(一):简介与安装

    简介 TVM是一个用于深度学习系统的编译器堆栈 它旨在缩小以生产力为中心的深度学习框架与以性能和效率为中心的硬件后端之间的差距 TVM与深度学习框架合作 为不同的后端提供端到端编译 换句话说 TVM就是一种将深度学习工作负载部署到硬件的端到
  • 【Endnote20】批量导入enw格式,便捷快速

    1 将所有参考文献的enw文件整理到同一文件夹内 2 command a全选 我是mac win的话应该ctrl a全选 3 右键点击打开 4 完成
  • FreeRTOS-定时器详解

    作者简介 嵌入式入坑者 与大家一起加油 希望文章能够帮助各位 个人主页 rivencode的个人主页 系列专栏 玩转FreeRTOS 保持学习 保持热爱 认真分享 一起进步 目录 前言 一 软件定时器的简介 二 软件定时器的创建 1 软件定
  • 对登录接口的简单图形验证码进行识别 20221004

    Python黑客编程原理与实战 作业 二 1 编程题 1 语言限定为python3 环境准备 使用虚拟python3环境 pip3 install virtualenv virtualenv python 3 10 vpy3 10 sour
  • 什么是持续集成的自动化测试

    如今互联网软件的开发 测试和发布 已经形成了一套非常标准的流程 最重要的组成部分就是持续集成 Continuous integration 简称CI 目前主要的持续集成系统是Jenkins 那么什么是持续集成 持续集成指的是 频繁地 一天多
  • RainDiffusion: When Unsupervised Learning Meets Diffusion Models for Real-world Image Deraining

    一 摘要 介绍及相关工作 传统方法 图像去雨的传统方法通常利用不同的先验 例如稀疏编码 高斯混合模型和低秩表示 然而 这些手工制作的先验表现出有限的代表性能力 导致在复杂和多变的下雨情况下的结果不佳 监督 通过从大量合成的无雨 下雨图像对中