FRR-NET:用于弱光图像增强的快速重参数残差网络

2024-04-15 07:28

本文主要是介绍FRR-NET:用于弱光图像增强的快速重参数残差网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

很久之前写的文章,前两天才见刊。项目的具体代码因项目原因无法公布,我自己重新训练了一个版本(包含两类预训练模型),供初学者参考。本文主要为A+B式创新。


文章链接:paper

代码链接:GitHub || CSDN

摘要:微光图像增强算法是图像增强算法领域的一个重要分支。为了解决亮度增强后增强图像特征严重退化的问题,人们在构建多尺度特征提取模块方面投入了大量的工作。然而,此类研究通常会产生大量参数,从而阻碍了工作的推广。为了解决上述问题,本文提出了一种用于低光图像增强的快速重参数残差网络(FRR-NET)。它取得了超越同类多尺度融合模块的结果。通过设计轻量级快速重新参数残差块和基于变压器的亮度增强模块。本文的网络只有0.012 M参数。大量的实验验证表明,本文算法在色彩还原上更加饱和,同时适当提高了亮度。与现有方法相比,FRR-NET 在主观视觉测试和图像质量测试方面表现良好,参数较少。

首先,写这篇文章的动机是想在FMR-NET的基础上再做进一步工作。主要参考的算法请查看我的paper。FRR-NET的出发点在于两个,第一,更好的特征提取能力;第二,更快的处理速度。特征提取能力的部分,还是考虑到了多尺度的使用(Inference那里的推理速度应该是你自己构建的模块中,最慢的那个卷积),因此,级联结构 + 权重融合是很好的方法。文章名字为快速,自从FasterNet和RRRP之类的文章出来以后,除了参数量浮点计算量以外,大多还需要考虑内存访问次数运行速度。因此,Concat换成ADD,取消BN层,尽可能少的使用激活函数,都是很好的解决办法。

在FRRB中,最重要的工作除级联外,则是仅使用1/4通道数量进行特征提取(图像冗余的利用,可参考FasterNET原文,和GhostNET也很类似)。其次。注意力模块,非常简单,三个步骤,就不多讲了。下面的一个方法就是轻量化的双分支Transformer模块,参考的STAR。不过既然是做的有监督学习,迭代函数增强之后,依然只是作为亮度增强的特征,重新与主干网络的特征相结合。

网络整体结构非常简单。是初学者可以参考并作为研究基础的原始网络。

实验部分,我做了三个消融实验:

因为当时的想法很抽象,用了LOL数据集和FIVEK数据集做了一个结合,结果效果还行吧。三个消融实验则是模块间的消融实验,数据集的消融实验和FRRB的优势性对比(请看原文)

最后的实验效果,是很不错的。欢迎引用我的文章:

Chen, Yuhan, et al. "FRR-NET: a fast reparameterized residual network for low-light image enhancement." Signal, Image and Video Processing (2024): 1-10.

这篇关于FRR-NET:用于弱光图像增强的快速重参数残差网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja