计算机视觉——day 92 基于跨领域协作学习的单图像去雨
基于跨领域协作学习的单图像去雨
- 1. Introduction
- 3. Proposed method
- 3.1 网络架构
- 4. Experiments and results
- 4.1 数据集和指标
- 4.3 合成图像的结果
- 4.8 建模复杂度和运行时间
- 5. Conclusion
1. Introduction
深度卷积神经网络(DCNN)在图像解析任务中取得了优异的性能。然而,目前的大多数方法都将雨带(rain streak)的去除视为一对一的问题,往往忽略了不同合成数据集的域内偏移。因此,在一个合成数据集上训练的脱轨模型不能有效地去除其他合成数据集的雨带。
为了解决这一问题,本文提出了一个跨领域协同学习(CDCL)框架,以最小化域内移动和域间差距。
首先,提出了一种基于协同学习的双分支脱轨网络来消除图像雨纹在合成域内的分布偏移;然后,设计了一种跨域伪标签生成(CDPLG)方法,为真实雨域图像获取更准确、更鲁棒的伪标签,并利用在线生成的伪标签训练双分支脱轨网络,减小合成域与真实域的域差;在公共基准数据集(包括合成数据集和真实数据集)上进行了大量的实验,实验结果表明,我们提出的框架与目前最先进的模型相比具有良好的性能。
首先,图1(a)所示的真实雨纹与合成雨纹在分布上存在一定的差异。从图1(a)中可以看出,真实的雨屏图像与合成的雨屏图像相比具有多个方向,这导致合成的雨屏图像在真实的雨屏图像中不能包含足够大的雨屏条纹分布范围。
其次,现有的降雨去除模型只考虑了合成域与真实域之间的域间差距,忽略了不同合成数据集上的域内偏移,如图1(b)所示。从图1(b)可以看出,来自不同合成数据集的两幅雨像的密度和方向有很大的不同。
此外,我们还对三个不同的合成数据集进行了简单的实验,验证了由于合成域内的域内移动而导致的降雨去除的影响。实验结果如表1所示。
由表1可知,在一个合成数据集上训练的降雨去除模型在另一个合成数据集上测试时,由于合成数据集的域内移位,不能得到满意的结果。需要注意的是,雨水去除模型与本文的单支脱轨网络结构相同。
在公共基准数据集(包括合成数据集和真实数据集)上进行的大量实验表明,与目前最先进的全监督和半监督单图像解列模型相比,我们提出的框架是有效的。
3. Proposed method
如图2所示,来减小不同合成域之间的域内偏移和合成域与实域之间的域间间隙。该模型主要包括网络结构、标记合成域协作学习、无标记实域协作学习和综合损耗函数。
3.1 网络架构
雨图像可以建模为背景图像与雨纹信息的线性求和,表示为:
o = b + r (1)
式中,o为原始雨纹图像,b为背景图像,r为雨纹信息。
如何设计一个健壮的雨纹学习网络,更好地学习合成雨型和真实雨型,对于提高单幅图像解析模型的性能至关重要。为了解决这一问题,本文提出了雨纹学习网络(RSL)。
式(1)还可以转化为:
b = o− RSL(o) (2)
为了提高雨纹的表达能力,我们构造了多尺度注意剩余块(MSARB)。
两个单支脱轨网络包含相同的结构参数,如表3所示
4. Experiments and results
4.1 数据集和指标
我们选择了三个合成数据集,包括Rain200L (Yang et al., 2017)、Rain1200 (Zhang & Patel, 2018)和Rain1400 (Fu et al., 2017),以及一个真实的图像解列数据集来评估我们的CDCL框架用于图像解列的性能。
Rain200L数据集(Yang et al., 2017)在训练集中包含1800幅合成图像对,在测试集中包含200幅图像对。
Rain1200数据集(Zhang & Patel, 2018)包括12,000对用于训练的图像和1200对用于测试的图像。
Rain1400数据集(Fu et al., 2017)由12,600对用于训练的合成图像和1400对用于测试的合成图像组成。
真实图像解析数据集(Wang et al., 2019)包含1000幅真实的雨天图像。四个公共数据集的详细信息如表4所示。
此外,采用峰值信噪比(PSNR) (Huynh-Thu & Ghanbari, 2008)和结构相似度(SSIM) (Wang et al., 2004)来评价模型性能。
4.3 合成图像的结果
Rain200L、Rain1200和Rain1400的定性结果分别如图4和图5所示。从图4和图5可以看出,所提出的有监督和半监督的CDCL具有更高的定性性能,特别是在图4和图5中以红色线框标记的部分局部区域。因此,可以断言,我们提出的框架性能优于最先进的监督和半监督图像去雨模型。
如表5所示,我们提出的模型在Rain200L、Rain1200和Rain1400上获得了较好的性能,与其他监督图像去核模型相比。此外,与其他半监督图像解算方法相比,我们提出的模型在无标签合成数据下获得的SSIM和PSNR值也取得了更高的结果。
4.8 建模复杂度和运行时间
在本节中,我们将所提模型的参数和时间复杂度与最先进的监督和半监督图像解推理模型进行比较。各模型的实验结果见表12。
该模型在参数和时间复杂度方面都达到了可接受的性能,这表明该方法可以在可接受的计算代价下获得令人满意的解算结果。
5. Conclusion
在本文中,我们提出了一种跨领域的协作学习方法来完成单个图像的解析任务。首先,提出了一种基于MSARB的双分支脱轨网络,通过协作学习消除图像雨纹在合成域内的分布偏移;然后,利用在线生成的伪标签对双分支脱轨网络进行训练,减小合成域与实域之间的域差;在多个数据集上的大量实验表明,基于标记合成域和无标记实域的协同学习方法有效地提高了网络模型的降雨去除泛化能力。与现有的基于单个合成域雨纹信息的半监督雨纹去除方法相比,我们提出的方法充分利用了不同合成雨纹的多样性和互补性,更好地实现了从合成域到实际域的知识脱轨转移。然而,该模型对真实雨型信息的适应能力仍然不足。未来,我们将设计一个雨纹学习网络,以便更好地模拟真实雨纹信息的方向和密度。
相关文章:

计算机视觉——day 92 基于跨领域协作学习的单图像去雨
基于跨领域协作学习的单图像去雨 1. Introduction3. Proposed method3.1 网络架构 4. Experiments and results4.1 数据集和指标4.3 合成图像的结果4.8 建模复杂度和运行时间 5. Conclusion 1. Introduction 深度卷积神经网络(DCNN)在图像解析任务中取得了优异的性能。然而&am…...
Java 正则表达式
Java 正则表达式 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 示例 boolean b String.matches(String regex) ;regex 有2种形式: 字符串 直接就是一…...
Oracle索引知识看这一篇就足够
🏆 文章目标:本篇介绍Oracle索引知识以及案例场景 🍀 Oracle索引知识看这一篇就足够 ✅ 创作者:Jay… 🎉 个人主页:Jay的个人主页 🍁 展望:若本篇讲解内容帮助到您,请帮忙…...
kafka命令行操作
新老版本kafka命令行操作 啓動Kafka: kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties Kafka命令行操作 查看当前集群中已存在的主题topic 旧的方式 kafka-topics.sh --zookeeper bdphdp01:2181 --list kafka-topics.sh --zookeeper bdphd…...

Pinia 上手使用(store、state、getters、actions)
参考链接:https://juejin.cn/post/7121209657678364685 Pinia官方:https://pinia.vuejs.org/zh/introduction.html 一、安装 npm i pinia -S二、main.js 引入 import { createApp } from "vue" import App from "./App.vue" impor…...

C++小项目之文本编辑器mynote(1.0.0版本)
2023年5月19日,周五晚上: 今天晚上突然想写一个运行在命令行上的文本编辑器,因为平时写文本时老是要创建新的文本文件,觉得太麻烦了。捣鼓了一个晚上,才选出一个我觉得比较满意的。我把这个程序添加到了系统环境变量中…...

人工智能的界面革命,消费者与企业互动的方式即将发生变化。
本文来源于 digitalnative.substack.com/p/ais-interface-revolution 描述了一种社会现象: 随着真实友谊的减少和虚拟友谊的增加,越来越多的人开始将AI聊天机器人视为自己的朋友,甚至建立了深厚的情感纽带。这可能与当前人们越来越孤独的现实…...

深度学习课程:手写体识别示例代码和详细注释
Pytorch 的快速入门,参见 通过两个神经元的极简模型,清晰透视 Pytorch 工作原理。本文结合手写体识别项目,给出一个具体示例和直接关联代码的解释。 1. 代码 下面代码展示了完整的手写体识别的 Python 程序代码。代码中有少量注释。在本文后…...

10-03 单元化架构设计
设计原则 透明 对开发者透明 在做实现时,不依赖于单元划分和部署对组件透明 在组件运行时,不感知其承载单元对数据透明 数据库并不知道为哪个单元提供服务 业务可分片 系统业务复杂度足够高系统可以按照某一维度进行切分系统数据必须可以被区分 业务…...

JAVA—实验3 继承与多态
一、实验目的 1.掌握类的继承机制 2.掌握抽象类的定义方法 2.熟悉类中成员变量和方法的访问控制 3.熟悉成员方法或构造方法的多态性 二、实验内容 1. Circle类及其子类 【问题描述】 实现类Circle,半径为整型私有数据成员 1)构造方法:参数为…...

TCP协议和相关特性
1.TCP协议的报文结构 TCP的全称为:Transmission Control Protocol。 特点: 有连接可靠传输面向字节流全双工 下面是TCP的报文结构: 源端口和目的端口: 源端口表示数据从哪个端口传输出来,目的端口表示数据传输到哪个端口去。…...

【SpringCloud组件——Eureka】
前置准备: 分别提供订单系统(OrderService)和用户系统(UserService)。订单系统主要负责订单相关信息的处理,用户系统主要负责用户相关信息的处理。 一、微服务当中的提供者和消费者 1.1、概念 服务提供…...

JVM面试题(一)
JVM内存分哪几个区,每个区的作用是什么? java虚拟机主要分为以下几个区: JVM中方法区和堆空间是线程共享的,而虚拟机栈、本地方法栈、程序计数器是线程独享的。 (1)方法区: a. 有时候也成为永久代,在该区内…...
c# 无损压缩照片大小,并且设计了界面,添加了外部Ookii.Dialogs.dll,不一样的选择文件夹界面,并且可以把外部dll打包进exe中
c# 无损压缩照片大小,并且设计了界面,添加了外部Ookii.Dialogs.dll,不一样的选择文件夹界面,并且可以把外部dll打包进exe中 using System; using System.Collections; using System.Collections.Generic; using System.ComponentM…...

《统计学习方法》——隐马尔可夫模型(上)
引言 这是《统计学习方法》第二版的读书笔记,由于包含书上所有公式的推导和大量的图示,因此文章较长,正文分成三篇,以及课后习题解答,在习题解答中用Numpy实现了维特比算法和前向后向算法。 《统计学习方法》——隐马…...
ElasticSearch删除索引【真实案例】
文章目录 背景分析解决遇到的问题 - 删除超时报错信息解决办法1:调大超时时间解决办法2:调大ES堆内存参考背景 项目中使用了ELK技术栈实现了日志管理,但是日志管理功能目前并没有在生产上实际使用。 但ELK程序依然在运行,导致系统磁盘发生告警,剩余可用磁盘不足10%。 所以…...

基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集设计(三)连续多段触发存储及传输逻辑设计
本章将完成数据速率为 80MHz 、位宽为 12bits 的 80 路并行采样数据的连续多 段触发存储。首先,给出数据触发存储的整体框架及功能模块划分。然后,简介 MIG 用户接口、设置及读写时序。最后,进行数据跨时钟域模块设计,内存…...
对 Iterator, Generator 的理解?
Iterator Iterator是最简单最好理解的。 简单的说,我们常用的 for of 循环,都是通过调用被循环对象的一个特殊函数 Iterator 来实现的,但是以前这个函数是隐藏的我们无法访问, 从 Symbol 引入之后,我们就可以通过 Sy…...

C++基础
文章目录 C命名空间定义命名空间using指令不连续的命名空间嵌套的命名空间 面向对象类类成员的访问权限及类的封装对象类成员函数类访问修饰符构造函数和析构函数类的构造函数带参数的构造函数使用初始化列表来初始化字段类的析构函数拷贝构造函数 友元函数内联函数this指针指向…...
软件测试全流程
软件测试全流程 一、制定测试策略二、制定测试方案三、编辑测试用例四、执行测试用例五、输出问题单六、回归测试七、测试文件归档 一、制定测试策略 1、测试目的测试范围 2、用什么测试方法工具(例如功能测试用黑盒测试) 3、测试优先级(功能…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...