YOLOv8结合CVPR2024最新图像增强算法!让你的模型无惧风雨【含端到端推理脚本】

篇博客的算法来自于CVPR2024,代码刚刚开源没几天~

原图去雨去雨+检测

如何有效地探索雨痕的多尺度表示对于图像去雨是很重要的。与现有的基于Transformer的方法相比,这些方法主要依赖于单一尺度的雨痕外观,我们开发了一个端到端的多尺度Transformer,利用各种尺度中潜在有用的特征来促进高质量的图像重建。为了更好地探索空间变化的雨痕的常见退化表示,我们在像素坐标上结合了基于尺度内隐式神经表示和退化输入,采用闭环设计,使得学习到的特征有助于去除雨水并提高模型在复杂场景中的鲁棒性。为了确保来自不同尺度的更丰富的协作表示,我们在我们的多尺度Transformer中嵌入了一个简单而有效的尺度间双向反馈操作,通过进行粗到细和细到粗的信息交流。大量实验证明,我们的方法,命名为NeRD-Rain,在合成和真实世界基准数据集上表现优于最先进的方法。

代码地址:cschenxiang/NeRD-Rain: Bidirectional Multi-Scale Implicit Neural Representations for Image Deraining (CVPR 2024) (github.com)icon-default.png?t=N7T8https://github.com/cschenxiang/NeRD-Rain

论文地址:2404.01547.pdf (arxiv.org)


论文简介

相关工作

近年来,由于大量深度卷积神经网络(CNN)的发展,图像去雨的研究取得了显著进展。然而,作为 CNN 中的基本操作,卷积是空间不变的,并且具有有限的感受野,不能有效地模拟清晰图像的空间变异特性和非局部结构。此外,仅仅增加网络深度以获得更大的感受野并不总是能够带来更好的性能。为了缓解这个问题,最近的几种方法利用变压器来解决单图像去雨,因为变压器可以模拟非局部信息以更好地恢复图像。尽管这些方法的性能比大多数基于 CNN 的方法更好,但它们大多在固定图像尺度(即单输入单输出架构)上探索特征表示,而忽略了其他尺度可能有用的信息。由于在较粗的图像尺度下雨效果显著减少,探索多尺度表示将有助于去除雨水。

在本文中,我们开发了一种有效的双向多尺度Transformer,采用隐式神经表示来更好地探索多尺度信息并建模复杂的雨滴。考虑到雨滴效应在不同的图像尺度上变化,我们构建了多个不等Transformer分支,每个分支用于学习图像去雨的尺度特定特征。受到隐式神经表示(INR)最近取得的成功启发,能够将图像编码为连续函数,我们进一步在相邻分支之间加入了INR,以从不同的降质输入中学习共同的雨降解表示,使得学习到的特征对复杂和随机的雨滴具有鲁棒性。为了便于在各种尺度上表示雨的外观,我们在INR中采用了两种不同的基于坐标的多层感知器(MLP)(即一个粗糙特征网格和一个细粒度特征网格),以适应复杂的雨特征。此外,为了提高INR的建模能力,我们提出了一种尺度内共享编码器,形成一个闭环框架。请注意,上述两种表示类型(即, 尺度特定和通用的雨滴) 能够互补。

论文贡献

主要贡献总结如下:

  • 我们设计了一种有效的多尺度 Transformer,以利用多尺度雨信息生成高质量的去雨结果。
  • 我们引入了隐式神经表示来更好地学习常见的雨降解特征,并展示它可以帮助促进去雨并增强在复杂场景中去雨模型的鲁棒性。
  • 我们将简单而有效的双向反馈传播操作集成到我们的多尺度 Transformer 中,以实现跨尺度更好的特征交互。
  •  对合成和真实世界基准的实验结果表明,我们的方法在性能上表现优于最先进的方法。

为了更好地探索多尺度信息和建模复杂的雨水条纹,我们精心开发了一种有效的双向多尺度 Transformer,采用隐式神经表示(称为 NeRD-Rain),包括一个尺度内 INR 分支和一个尺度间双向分支。前者从多样的多雨图像中学习潜在的退化表示,而后者实现了不同尺度之间更丰富的协作表示。

算法效果


YOLOv8 结合NeRD去雨算法

具体的算法流程如下所示:

大家最好拉到和v8项目同级路径位置:

git clone https://github.com/cschenxiang/NeRD-Rain.git
pip install -r requirements.txt
cd pytorch-gradual-warmup-lr
python setup.py install
cd ..

然后在NeRD-Rain文件夹下新建一个NeRD_v8.py文件,将代码放进去。

完整的代码和权重我都放到了群文件【NeRD_v8_去雨.zip】

部分NeRD_v8.py

def process_image(input_image, weights_path, win_size=256, gpu_device="0"):# 设置GPU设备os.environ["CUDA_VISIBLE_DEVICES"] = gpu_devicetorch.cuda.set_device(int(gpu_device))# 加载模型model_restoration = mynet()utils.load_checkpoint(model_restoration, weights_path)model_restoration.cuda()model_restoration = nn.DataParallel(model_restoration)model_restoration.eval()# 处理图像with torch.no_grad():input_image = input_image.cuda()_, _, Hx, Wx = input_image.shapeinput_re, batch_list = window_partitionx(input_image, win_size)restored = model_restoration(input_re)restored = window_reversex(restored[0], win_size, Hx, Wx, batch_list)restored = torch.clamp(restored, 0, 1)restored = restored.permute(0, 2, 3, 1).cpu().detach().numpy()restored_img = img_as_ubyte(restored[0])  # 假设直接处理的批量大小为1return restored_img

代码里面需要注意的就是 sys.path 这里,这里务必写成你v8项目的绝对路径,以确保可以找到这个项目包。

import syssys.path.append("/Github/YOLOv8-Magic/ultralytics-8.1.0")

运行我的代码后就能看到检测结果了


引用

@InProceedings{NeRD-Rain,author={Chen, Xiang and Pan, Jinshan and Dong, Jiangxin}, title={Bidirectional Multi-Scale Implicit Neural Representations for Image Deraining},booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},month={June},year={2024}
}

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

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

相关文章

软考132-上午题-【软件工程】-沟通路径

一、定义 1-1、沟通路径1 沟通路径 1-2、沟通路径2 沟通路径 n-1 二、真题 真题1: 真题2: 真题3:

ElasticSearch入门篇

简介 ElasticSearch简介:简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene…

离世界模型更近一步!Meta开源OpenEQA,评估AI Agent情景理解能力

Yann LeCun 朝着 “世界模型” 又近了一步。 Meta最新的开源工作OpenEQA:从文字模型到世界模型,可以像人一样记忆、推理的新基准,AI理解物理空间又近了一步。 场景1: 假设你正准备离开家,但找不到你的工牌。 现在,…

Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码

Java语言开发的AI智慧导诊系统源码springbootredis 3D互联网智导诊系统源码 智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应…

(CVPR,2024)CAT-Seg:基于成本聚合的开放词汇语义分割

文章目录 摘要引言方法计算成本与嵌入空间成本聚合类别成本聚合CAT-Seg框架 实验 摘要 开放词汇的语义分割面临着根据各种文本描述对图像中的每个像素进行标记的挑战。在这项工作中,我们引入了一种新颖的基于成本的方法,以适应视觉语言基础模型&#xf…

1.SCI各模块

1.学会“抄” 写论文,一定要学会“抄”!这样才能事半功倍,尤其是对于初次写作的新手,否则写作过程一定会让你痛不欲生,而且写出来的东西就是一坨shi,不仅折磨自己,也折磨导师。 写论文与建大楼…

【Spring进阶系列丨第十篇】基于注解的面向切面编程(AOP)详解

文章目录 一、基于注解的AOP1、配置Spring环境2、在beans.xml文件中定义AOP约束3、定义记录日志的类【切面】4、定义Bean5、在主配置文件中配置扫描的包6、在主配置文件中去开启AOP的注解支持7、测试8、优化改进9、总结 一、基于注解的AOP 1、配置Spring环境 <dependencie…

Android Studio修改项目包名

1.第一步&#xff0c;项目结构是这样的&#xff0c;3个包名合在了一起&#xff0c;我们需要把每个包名单独展示出来 2.我们点击这个 取消选中后的包名结构是这样的&#xff0c;可以看到&#xff0c;包名的每个文件夹已经展示分开了&#xff0c;现在我们可以单独对每个包名文件夹…

查看TensorFlow已训模型的结构和网络参数

文章目录 概要流程 概要 通过以下实例&#xff0c;你将学会如何查看神经网络结构并打印出训练参数。 流程 准备一个简易的二分类数据集&#xff0c;并编写一个单层的神经网络 train_data np.array([[1, 2, 3, 4, 5], [7, 7, 2, 4, 10], [1, 9, 3, 6, 5], [6, 7, 8, 9, 10]]…

信号完整性的常见术语概念(面试常用)

目录 术语 概念一览 1&#xff0e;信号完整性&#xff08;Signal Integrity&#xff09; 2&#xff0e;传输线&#xff08;Transmission Line&#xff09; 3&#xff0e;特性阻抗&#xff08;Characteristic Impedance&#xff09; 4&#xff0e;反射&#xff08;Reflecti…

RISC-V特权架构 - 中断注入

中断注入 1 中断注入的作用2 mip寄存器3 中断注入后的处理过程 本文属于《 RISC-V指令集基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 中断注入的作用 中断注入&#xff0c;就是在M模式下&#xff0c;手动向S模式去产生一个中断。 比如&#xff1a;向mip寄存器的bit5…

STM32无刷电机全套开发资料(源码、原理图、PCB工程及说明文档)

目录 1、原理图、PCB、BOOM表 2、设计描述 2.1 前言 2.2 设计电路规范 3、代码 4、资料清单 资料下载地址&#xff1a;STM32无刷电机全套开发资料(源码、原理图、PCB工程及说明文档) 1、原理图、PCB、BOOM表 2、设计描述 2.1 前言 经过一个星期的画PCB&#xff0c;今…

Python接口自动化 —— Web接口!

1.2.1 web接口的概念 这里用一个浏览器调试工具捕捉课程管理页面请求作为例子&#xff1a; 当请求页面时&#xff0c;服务器会返回资源&#xff0c;将协议看做是路的话&#xff0c;http可以看做高速公路&#xff0c;soap看做铁路传输的数据有html&#xff0c;css&#xff0…

WAF攻防-权限控制代码免杀异或运算变量覆盖混淆加密传参

知识点 1、脚本后门基础&原理 2、脚本后门查杀绕过机制 3、权限维持-覆盖&传参&加密&异或等 章节点&#xff1a; WAF绕过主要集中在信息收集&#xff0c;漏洞发现&#xff0c;漏洞利用&#xff0c;权限控制四个阶段。 代码表面层免杀-ASP&PHP&JSP&a…

对装饰器模式的理解

目录 一、场景二、面对场景中的新需求&#xff0c;我们怎么办&#xff1f;1、暴力法&#xff1a;直接修改原有的代码。2、子类继承法&#xff1a;既然要增强行为&#xff0c;那我搞一个子类&#xff0c;覆写不就完事了&#xff1f;3、装饰器模式 三、对装饰器模式的思考1、从代…

C++动态内存管理 解剖new/delete详细讲解(operator new,operator delete)

讨厌抄我作业和不让我抄作业的人 讨厌插队和不让我插队的人 讨厌用我东西和不让我用东西的人 讨厌借我钱和不借给我钱的人 讨厌开车加塞和不让我加塞的人 讨厌内卷和打扰我内卷的人 一、C中动态内存管理 1.new和delete操作内置类型 2.new和delete操作自定义类型 二、operat…

2024年在Vim中开发vue2+java

neovim 0.5刚出来的时代&#xff0c;那时刚有lua插件我很狂热。每天沉迷于打造自己的IDE之中。写过一堆相关的博客&#xff0c;也录过一些视频教程。后来发现neovim的接口和插件更新的很快&#xff0c;导致配置文件要不定期的修改&#xff0c;才能保证新版本的插件的适配。我也…

探索设计模式的魅力:融合AI大模型与函数式编程、开启智能编程新纪元

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索AI大模型与函数式编程模式融合之旅✨ 在编程世界的广阔疆域里&#xff0c;两大…

VUE3 + Elementui-Plus 之 树形组件el-tree 一键展开(收起);一键全选(不全选)

需求&#xff1a; 产品要求权限树形结构添加外部复选框进行全部展开或收起&#xff1b;全选或不全选。 实现步骤&#xff1a; tree组件部分&#xff1a; <div class"role-handle"><div>权限选择(可多选)</div><div><el-checkbox v-mode…

【C语言】贪吃蛇项目(1) - 部分Win32 API详解 及 贪吃蛇项目思路

文章目录 一、贪吃蛇项目需要实现的基本功能二、Win32 API介绍2.1 控制台2.2 部分控制台命令及调用函数mode 和 title 命令COORD 命令GetStdHandle&#xff08;获取数据&#xff09;GetConsoleCursorInfo&#xff08;获取光标数据&#xff09;SetConsoleCursorInfo &#xff08…