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

本文主要是介绍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}
}

这篇关于YOLOv8结合CVPR2024最新图像增强算法!让你的模型无惧风雨【含端到端推理脚本】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913064

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

PyCharm 接入 DeepSeek最新完整教程

《PyCharm接入DeepSeek最新完整教程》文章介绍了DeepSeek-V3模型的性能提升以及如何在PyCharm中接入和使用DeepSeek进行代码开发,本文通过图文并茂的形式给大家介绍的... 目录DeepSeek-V3效果演示创建API Key在PyCharm中下载Continue插件配置Con

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

MySql9.1.0安装详细教程(最新推荐)

《MySql9.1.0安装详细教程(最新推荐)》MySQL是一个流行的关系型数据库管理系统,支持多线程和多种数据库连接途径,能够处理上千万条记录的大型数据库,本文介绍MySql9.1.0安装详细教程,... 目录mysql介绍:一、下载 Mysql 安装文件二、Mysql 安装教程三、环境配置1.右击此电脑