4K-Resolution Photo Exposure Correction at 125 FPS with ~8K Parameters
MSLTNet开源 | 4K分辨率+125FPS+8K的参数量,怎养才可以拒绝这样的模型呢?
错误的曝光照片的校正已经被广泛使用深度卷积神经网络或Transformer进行广泛修正。尽管这些方法具有令人鼓舞的表现,但它们通常在高分辨率照片上具有大量的参数数量和沉重的计算浮点运算(FLOPs)。
在本文中,作者提出了一个极轻量级(仅有约8K参数)的多尺度线性变换(MSLT)网络,该网络采用多层感知架构,可以在125帧每秒(FPS)的速度下,使用泰坦RTX GPU处理4K分辨率sRGB图像。
具体来说,提出的MSLT网络首先使用拉普拉斯金字塔技术将输入图像分解为高和低频层,然后依次通过像素自适应线性变换来纠正不同层,这种实现方式是通过高效的双边网格学习或1×1卷积来实现的。在两个基准数据集上的实验表明,作者的MSLT在照片曝光校正方面与最先进的水平相比具有高效性。大量的消融实验验证了作者的贡献的有效性。
代码:https://github.com/Zhou-Yijie/MSLTNet
1 Introduction
智能手机摄像头的普及使人们像摄影师一样捕捉日常生活场景。然而,快门速度、焦距光圈比和/或ISO值设置不准确可能导致捕捉到的照片曝光不正确,视觉质量下降。为了以视觉上可取的方式正确调整照片曝光,对于边缘设备开发高效的曝光校正方法至关重要。
在过去的几十年里,提出了低光增强方法和过曝校正方法来分别调整欠曝和过曝图像的亮度。然而,低光增强方法在矫正过曝图像时几乎无法实现,而过曝校正方法在矫正欠曝图像时则无法正常工作。
高动态范围(HDR)调色映射方法也可以在一定程度上调整内容的不正确曝光,但主要是通过在曝光不正确区域的局部细节增强以及动态范围减少来实现。最后,所有这些方法都不适合曝光校正,因为曝光校正需要在图像中的不正确曝光进行全局调整。
近年来,基于卷积神经网络(CNN)或Transformer的曝光校正方法或也出现了几种。例如,多尺度曝光校正(MSEC)使用拉普拉斯金字塔技术和UNet架构进行层次曝光校正。后来,[48]的工作利用局部颜色分布先验(LCDP)来定位和增强不正确曝光区域。
基于注意力的照明自适应Transformer(IAT)在Transformer架构下估计与图像信号处理器(ISP)相关的参数。尽管这些曝光校正的卷积神经网络或Transformer具有令人鼓舞的表现,但它们通常受到大量参数数量和计算成本的限制。
为了在提高模型效率的同时产生视觉上令人满意的结果,本文提出了一种极轻量级的多尺度线性变换(MSLT)网络,用于高分辨率图像曝光校正。具体来说,作者首先通过拉普拉斯金字塔技术将输入图像分解为高频和低频层,以实现从粗到细的曝光校正。然后作者设计简单的线性变换网络逐步校正这些层,消耗较少的参数数量和计算成本。对于低频层,作者采用双边网格学习(BGL)框架,在不良曝光和正确曝光图像对之间学习像素级仿射变换。
为了在BGL中学习上下文感知的变换系数,作者提出了一种无参数的上下文感知特征分解(CFD)模块,并将其扩展为多尺度仿射变换。对于高频层,作者通过两个通道的1×1卷积层简单地学习像素级校正Mask。
得益于使用多层感知(MLP)进行从粗到细的曝光校正,作者的最大网络MSLT++有8098个参数,只需要0.14G和3.67ms来处理一个的图像,使用RTX GPU。
作为比较,基于CNN的MSEC、LCDP和基于Transformer的IAT的参数数量分别为约7015K、约282K和约86.9K,对应的FLOPs/速度分别为73.35G/240.46ms、17.33G/507.67ms和22.96G/153.96ms。在两个基准数据集上的实验表明,作者的MSLTs在定量和定性方面都优于最先进的曝光校正方法。如图1所示,在ME数据集上的性能比较结果。
作者主要的贡献可以总结如下:
1. 开发了具有最多8098个参数的多尺度线性变换网络,在运行4K分辨率(3840X2160X3)图像时,最多可达到125 FPS,并具有有效的曝光校正性能。
2.为了加速多尺度分解,设计了一个双边网格网络(BGN)来像素级校正低频层的曝光。
3.通过使用通道级MLP而不是CNN或Transformer来实现BGN,以赋予作者的MSLTs较小的参数数量和计算成本。
4.提出了一种上下文感知特征分解(CFD)模块,用于在作者的BGN中学习层次变换系数,以实现有效的曝光校正。
2 Related Work
Image Exposure Correction Methods
曝光校正任务类似于低光图像增强、过曝校正和HDR调色映射等任务,但又有不同。据作者所知,MSEC是第一个基于深度学习的曝光校正方法。该方法将图像分解为高频和低频部分,并逐步校正曝光错误。然而,MSEC有超过700万个参数,在高分辨率图像上的效率不足。
Local Color Distributions Prior(LCDP)利用局部颜色分布来统一处理欠曝和过曝,大约有282K个参数,需要巨大的计算成本,17.33G FLOPs,处理一个1024X1024X3X3的图像。基于Transformer的照明自适应Transformer(IAT)有大约86.9K个参数,但在高分辨率图像上存在巨大的计算成本和缓慢的推理速度。
在本文中,作者提出了一种轻量级和高效的Multi-Scale Linear Transformation(MSLT)网络,其参数数量最多为8098个,并且可以在125 FPS的速度下运行,用于校正不正确的4K分辨率图像曝光。
Image Processing MLPs
在卷积神经网络(CNNs)和Transformer的繁荣之前,多层感知(MLPs)在视觉任务中起着重要的作用。MLP为基础的网络再次引起了研究人员注意,因为它们具有简单性。MLP-Mixer是一种纯粹基于MLP的网络,没有卷积或自注意力。后来,ResMLP被提出,它只使用线性层和GELU非线性。gMLP的工作利用具有gating的MLP来实现与Transformer在图像分类上相似的结果。Ding等人提出了一种再参数化技术来提高MLP在图像分类上的能力。最近开发的MAXIM是一种多轴MLP为基础的网络,用于通用图像处理任务。
在本文中,作者开发了一种非常高效的曝光校正网络,该网络主要利用通道MLPs(而不是空间MLPs)来全局感知图像的曝光信息。
Light-weight Image Enhancement Networks
为了追求轻量级和高效的模型,一种简单的方法是将模型应用于低分辨率输入,然后将输出放大到高分辨率。但高频细节会丢失。为此,Laplacian Pyramid分解被用来保留高频信息。另一种方法是学习一个近似算子,并将其应用于下采样输入,然后将这个算子应用于原始图像。这样的近似算子通常简单且高效。后来,这个近似洞察也被研究了,用于加速图像处理方法在图像增强、图像去雾和立体匹配等任务上的应用。
在本文中,作者设计了使用拉普拉斯金字塔技术和双边网格学习框架的轻量级和高效的图像曝光校正网络。与CNN和Transformer不同,作者的双边网格网络纯粹由通道MLP实现,消耗的参数和计算成本比CNN和Transformer少得多。
3 Proposed Method
Network Overview
Low-Frequency Layer Correction
照明信息主要存在于低频中,因此作者更关注低频层的有效曝光校正。受到在高效图像处理上的成功启发,作者采用双边网格学习来校正低频层的曝光。
如图2所示,作者的双边网格网络包含三个部分:
-
学习引导图;
-
估计仿射系数的双边网格;
-
系数变换。
如图3(a)所示,上下文感知特征是通过将原始特征通道乘以全局平均池化和全局标准池化计算的平均值和标准差得到的。作者将CFD扩展为一个层次化的特征分解(HFD)模块,通过将三个共享参数的CFD和SFE模块堆叠在一起,如图3(c)所示。
目标是学习一个16x16x72的仿射系数3D双边网格,其中每个12个通道表示一个3x4仿射矩阵。作者通过通道级的1x1卷积来实现层次化的特征分解(HFD)模块,以进行空间一致性和像素自适应亮度调整。在ReLU之前,三个共享参数的1x1卷积(如图3(c)所示),具有较少的参数数量和计算成本。
如图4所示的校正强度热图与输入图像 I 的上下文密切相关。这表明作者的MSLT确实实现了像素自适应的曝光校正。
在SICE上,作者的MSLTs与MSECs具有可比性能,但比IAT和FECNet稍逊一筹。然而,作者的MSLTs在效率方面优于所有比较方法,如表3所示。
在图6中,作者提供了ME数据集中的"Manor"和SICE数据集中的"Mountain"的校正图像,分别由比较方法生成。更多视觉比较结果可参见补充文件。
在过曝的"Manor"图像上,可以看出Zero-DCE,SCI,LPTN和Channel-MLP很难减弱曝光。作者的MSLTs在云、墙壁和草坪的细节上比LCDP和IAT更好。校正后的MSEC图像对比度过高,不够真实。在欠曝的"Mountain"图像上,作者的MSLTs在整体亮度和绿叶细节方面都优于其他方法。
在作者的MSLT+和MSLT++中,作者引入可学习3X3的卷积核,步长为2用于Laplacian金字塔分解中的下采样,以及步长为1的3X3卷积核 followed by 双线性插值用于Laplacian金字塔重构中的上采样。
相关文章:

4K-Resolution Photo Exposure Correction at 125 FPS with ~8K Parameters
MSLTNet开源 | 4K分辨率125FPS8K的参数量,怎养才可以拒绝这样的模型呢? 错误的曝光照片的校正已经被广泛使用深度卷积神经网络或Transformer进行广泛修正。尽管这些方法具有令人鼓舞的表现,但它们通常在高分辨率照片上具有大量的参数数量和沉…...

网络初识:局域网广域网网络通信基础
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、局域网LAN是什么?二、广域网是什么:三. IP地址四.端口号五.认识协议5.1五元组 总结 前言 一、局域网LAN是什么? 局域网…...

JVM之jps虚拟机进程状态工具
jps虚拟机进程状态工具 1、jps jps:(JVM Process Status Tool),虚拟机进程状态工具,可以列出正在运行的虚拟机进程,并显示虚拟机执 行主类(Main Class,main()函数所在的类)的名称,…...

C++实现顺序栈的基本操作(扩展)
#include <stdio.h> typedef char ElemType; #define StackSize 100 /*顺序栈的初始分配空间*/ typedef struct { ElemType data[StackSize]; /*保存栈中元素*/int top; /*栈顶指针*/ } SqStack; void InitStack(SqStack &st) {st.top-1; } …...

用python写一个简单的爬虫
爬虫是一种自动化程序,用于从互联网上获取数据。它能够模拟人类浏览网页的行为,访问网页并提取所需的信息。爬虫在很多领域都有广泛的应用,例如数据采集、信息监控、搜索引擎索引等。 下面是一个使用Python编写的简单爬虫示例: …...

分布式追踪
目录 文章目录 目录自定义指标1.删除标签2.添加指标3.禁用指标 分布式追踪上下文传递Jaeger 关于我最后最后 自定义指标 除了 Istio 自带的指标外,我们还可以自定义指标,要自定指标需要用到 Istio 提供的 Telemetry API,该 API 能够灵活地配…...
make -c VS make -f
make 是一个用于构建(编译)项目的工具,它通过读取一个名为 Makefile 的文件来执行构建任务。make 命令有很多选项和参数,其中包括 -c 和 -f。 make -c: 作用:指定进入指定的目录并执行相应的 Makefile。 示…...

Unity 代码控制Color无变化
Unity中,我们给Color的赋值比较常用的方法是: 1、使用预定义颜色常量: Color color Color.white; //白色 Color color Color.black; //黑色 Color color Color.red; //红色 Color color Color.green; //绿色 Color color Color.blue; …...

【Erlang进阶学习】2、匿名函数
受到其它一些函数式编程开发语言的影响,在Erlang语言中,将函数作为一个对象,赋予其“变量”的属性,即为我们的匿名函数 或 简称 fun,它具有以下特性: (匿名函数:不是定义在Erlang模…...

肖sir__mysql之视图__009
mysql之视图 一、什么是视图 视图是一个虚拟表(逻辑表),它不在数据库中以存储形式保存(本身包含数据),是在使用视图的时候动态生成。 二、视图作用 1、查询数据库中的非常复的数据 例如:多表&a…...

FPGA falsh相关知识总结
1.存储容量是128M/8 Mb16MB 2.有256个sector扇区*每个扇区64KB16MB 3.一页256Byte 4.页编程地址0256 5:在调试SPI时序的时候一定注意,miso和mosi两个管脚只要没发送数据就一定要悬空(处于高组态),不然指令会通过两…...

升辉清洁IPO:广东清洁服务“一哥”还需要讲好全国化的故事
近日,广东物业清洁服务“一哥”升辉清洁第四次冲击IPO成功,拟于12月5日在香港主板挂牌上市。自2021年4月第一次递交招股书,时隔两年半,升辉清洁终于拿到了上市的门票。 天眼查显示,升辉清洁成立于2000年,主…...

Python自动化办公:PDF文件的分割与合并
我们平时办公中,可能需要对pdf进行合并或者分割,但奈何没有可以白嫖的工具,此时python就是一个万能工具库。 其中PyPDF2是一个用于处理PDF文件的Python库,它提供了分割和合并PDF文件的功能。 在本篇博客中,我们将详细…...
破解app思路
1.会看smali代码逻辑 一.快速定位关键代码 1.分析流程 搜索特征字符串 搜索关键 api 通过方法名来判断方法的功能 2.快速定位关键代码 反编译 APK 程序 AndroidManifest.xml>包名/系统版本/组件 程序的主 activity(程序入口界面) 每个 Android 程序…...

36.位运算符
一.什么是位运算符 按照二进制位来进行运算的运算符叫做位运算符,所以要先将操作数转换成二进制(补码)的形式在运算。C语言的中的位运算符有: 运算符作用举例结果& 按位与(and) 0&00; 0&10; …...
C#异常处理-throw语句
throw语句是我们手动引发异常的一个语句。 在程序执行过程中,当某些条件不符合我们的要求时,那么我们就可以使用throw语句手动抛出异常,那么就可以在异常发生的地方终止当前代码块的执行,此时我们就可以把控制权传递给调用堆栈中…...

PlantUML语法(全)及使用教程-时序图
目录 1. 参与者1.1、参与者说明1.2、背景色1.3、参与者顺序 2. 消息和箭头2.1、 文本对其方式2.2、响应信息显示在箭头下面2.3、箭头设置2.4、修改箭头颜色2.5、对消息排序 3. 页面标题、眉角、页脚4. 分割页面5. 生命线6. 填充区设置7. 注释8. 移除脚注9. 组合信息9.1、alt/el…...
231204 刷题日报
21. 合并两个有序链表 单调栈没看懂,晚上回家再说吧 380. O(1) 时间插入、删除和获取随机元素 今天被接雨水钉在耻辱柱,找时间再看吧...
PTA 7-229 sdut-C语言实验- 排序
给你N(N<100)个数,请你按照从小到大的顺序输出。 输入格式: 输入数据第一行是一个正整数N,第二行有N个整数。 输出格式: 输出一行,从小到大输出这N个数,中间用空格隔开。 输入样例: 5 1 4 3 2 5输出样例: 1 2 3 4 5 #include <stdio.h>…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...