Empowering Low-Light Image Enhancer through Customized Learnable Priors 论文阅读笔记

- 中科大、西安交大、南开大学发表在ICCV2023的论文,作者里有李重仪老师和中科大的Jie Huang(ECCV2022的FEC CVPR2022的ENC和CVPR2023的ERL的一作)喔,看来可能是和Jie Huang同一个课题组的,而且同样代码是开源的,我很喜欢。
- 文章利用了MAE的encoder来做一些事情,提出了一个叫customized unfolding enhancer (CUE)的方法。从MAE中学了illumination prior 和noise prior两个先验,用到了retinex模型中。流程如下图所示:

- 文章用的是如下的常规retinex公式:

- 目标是最小化如下表达式:

- 把限制项(2b)放到优化式中(拉格朗日),得到如下表达式:

- 用循环的方式来优化这个目标函数,其中L的优化目标如下:

- 用近端梯度下降法从 L k L_k Lk推导出 L k + 1 L_{k+1} Lk+1:

- 其中 p r o x β ρ 2 prox_{\beta\rho_2} proxβρ2是对先验约束 β ρ 2 \beta\rho_2 βρ2的近端梯度下降算子,一般用一个网络来拟合。本文用的是如下网络。所以说利用MAE,其实就是利用MAE的方法来训练一个encoder来提取特征。文章用cnn做一个encoder decoder的网络,然后将输入图像用随机gamma校正进行数据增强后用三通道的max提取illumination maps后切分为不重叠的patch,随机mask掉一些patch,训练一个对illumination的inpainting模型,丢掉decoder,剩下的encoder用来放到下图的网络结构中。其实这样搞已经和MAE没多大关系了,没有注意力的MAE就是个普通的inpainting模型,所以这里其实只是用illumination inpainting任务预训练了一个encoder而已:


- R模块用的是类似的公式,只是网络就简单的得多,两层卷积加一层relu:

- N模块也是两层卷积加一层relu:


- 后面就是对估计出来的L进行增强,和KinD一样,训练的时候先用GT的L的均值除以暗图的L的均值得出一个 ε \varepsilon εconcatenate到L中(测试则直接指定一个预设值),进一个unet预测增亮后的L,同时也要把L R N都送进另一个unet预测修复后的R。修复后的R和增强后的L相乘得到增强结果I。
- 损失函数分为三部分,一部分是前面的retinex 分解的损失,一部分是增强修复网络的损失,还有一部分就是文章第二处用到MAE的noise prior损失。
- retinex分解损失有三个都是常见的,如暗图和亮图的R的距离,以及L的平滑损失,还有R和L相乘等于原图的重建损失。但有一个mutual consistency 损失好像不怎么见到,说是可以在亮度层中保留比较强的边缘而消除比较弱的边缘




- 增强损失如下,也是比较常见:

- 第三部分的损失有点像perceptual loss,就是用一个MAE的encoder去求增强结果和GT的特征算距离,其中MAE的训练也是自己设计的,如下:


- 实验结果如下,也就一般,而且你一个有监督方法和一堆无监督方法比PSNR就不太正常了吧 :

- 评价:看起来给人的感觉就是一篇动机仅仅是为了和MAE结合做一个暗图增强的工作发一篇论文。个人观点是,做研究应该是发现问题解决问题,这篇文章看起来就像是蹭热度发论文。感觉就是大老板一拍脑袋说,最近MAE挺火,xxx你去结合MAE做一个暗图增强模型来。然后xxx kuakua一顿搞勉强拼出来一个模型,实验结果也不是很好,就找一堆无监督方法比一比,发了篇论文出来。感觉MAE的部分用得就很不自然,和一堆无监督方法比PSNR更是奇怪。唉,怎么ICCV这么多这样的论文。
相关文章:
Empowering Low-Light Image Enhancer through Customized Learnable Priors 论文阅读笔记
中科大、西安交大、南开大学发表在ICCV2023的论文,作者里有李重仪老师和中科大的Jie Huang(ECCV2022的FEC CVPR2022的ENC和CVPR2023的ERL的一作)喔,看来可能是和Jie Huang同一个课题组的,而且同样代码是开源的…...
LeetCode 2652. 倍数求和【数学,容斥原理】简单
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
ansible-playbook剧本
一,playbook组成: (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3)Templates&…...
竞赛选题 深度学习LSTM新冠数据预测
文章目录 0 前言1 课题简介2 预测算法2.1 Logistic回归模型2.2 基于动力学SEIR模型改进的SEITR模型2.3 LSTM神经网络模型 3 预测效果3.1 Logistic回归模型3.2 SEITR模型3.3 LSTM神经网络模型 4 结论5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 …...
机械设计师应该在工作中培养哪些良好习惯?
图纸规范 1、一定要按照制图标准设计图纸!图纸上任何一条直线(无论是点划线、粗实线、细实线等等)、数值、公差、图标等,都必须有理有据,不能想当然。图纸是产品生产的基础,无论是生产、加工、装配&#x…...
小程序新增功能页面
需求背景: 小程序主页面有个报名板块,我打算替换主页面报名板块菜单,迁移到我的页面里面, 替换成资讯栏目,我喜欢分享最新技术,开源课题,IT资讯,本想做成论坛的效果,由于时间问题,先替换添加板块 替换后效果: 模块功能: 添加、修改、删除、查看 文件目录:// 添…...
LeetCode每日一题——2652. Sum Multiples
文章目录 一、题目二、题解 一、题目 Given a positive integer n, find the sum of all integers in the range [1, n] inclusive that are divisible by 3, 5, or 7. Return an integer denoting the sum of all numbers in the given range satisfying the constraint. E…...
Python问答题(更新中)
1. 列表(list)和元组(tuple)有什么区别? 列表是可变的,创建后可以对其进行修改;元组是不可变的,元组一旦创建,就不能对其进行更改。列表表示的是顺序。它们是有序序列&a…...
服务器中了locked勒索病毒怎么办,勒索病毒解密,数据恢复
最近一段时间内,相信很多使用金蝶或用友的办公软件的企业,有很多都经历了locked勒索病毒的攻击,导致企业服务器被加密无法正常使用,严重影响了企业的正常工作。通过云天数据恢复中心的解密恢复发现,在今年locked勒索病…...
游游的字母串 (环形数组两点之间的位置)
题目链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 yab 输出 3 思路: 暴力枚举,全部变成对应的26个字母字符需要的操作步数,取最少的一个操作步数, 这里的操作步数࿰…...
Flink的ResourceManager详解(一)
ResourceManager 总结 一、概述 1、ResourceManager 管理 Flink 集群中的计算资源,计算资源主要来自 TaskManager 组件。 2、如果集群采用 Native【本地模式】部署,则 ResourceManager 会动态地向集群资源管理器申请 Container 并启动TaskManager&…...
Tornado 可以使用 nginx 提供负载均衡
Tornado和nginx都是网络服务器的重要组成部分,但它们在职能和使用场景上存在显著的差异。 Tornado可以独立运行,而不需要依赖nginx等其他Web服务器。这是因为Tornado本身就是一个完整的Web服务器,可以独立处理HTTP请求并返回响应数据。 ngi…...
Golang 面向对象编程 多态
基本介绍 变量(实例)具有多种形态。面向对象的第三大特征,在Go语言,多态特征是通过接口实现的(接口能够体现多态的特征)。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。 在前面的Usb接口案例,u…...
WLAN 无线案例(华为AC控制器配置模板)
实验说明: 无线用户VLAN 30 192.168.30.0/24 AP和AC用VLAN 20 192.168.20.0/24 有线网段 VLAN 10 192.168.10.0/24 步骤一:全网互通 sw1: sysname sw1 # vlan batch 10 20 30 # dhcp enable # ip pool 20 gateway-list 192.168.20.1…...
精美的早安问候语,暖心祝福,开心每一天
1、 美好的祝福,成了清晨的主题。相互问候,是一天的开始。让我们伴着不老的岁月,永远开心快乐。早晨好! 2、 心宽似海,百福皆来,世事看淡,内心安然。随缘即福,随遇而安࿰…...
嵌入式养成计划-41----C++ auto--lambda表达式--C++中的数据类型转换--C++标准模板库(STL)--list--C++文件操作
九十九、auto 99.1 概念 C11引入了自动类型推导,和Python不一样,C中的自动类型推导,需要auto关键字来引导比如 :auto a 1.2; 会被编译器自动识别为 a 为 double 类型 99.2 作用 auto修饰变量,可以自动推导变量的数…...
全局事件总线
全局事件总线 功能:可以解决所有组件之间通信传数据的问题原理:通过一个共享对象,将所有组件全部绑定到对象上,即可通过这个对象实现组件与组件之间的传递数据,而这个共享对象叫做全局事件总线。 如何分清楚谁是发送方…...
通讯网关软件026——利用CommGate X2ORACLE-U实现OPC UA数据转入ORACLE
本文介绍利用CommGate X2ORACLE-U实将OPC UA数据源中的数据转入到ORACLE数据库。CommGate X2ORACLE-U是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,将OPC UA数据源的数据写入到ORACLE数据…...
RAII与智能指针
RAII与智能指针 1.RAII1.1RAII理解1.2RAII的原理1.2.1简单的例子说明局部对象的自动销毁的特性 1.2.2 RAII 过程 2.智能指针2.1 auto_ptr2.1.1auto_ptr的使用构造函数与析构函数拷贝构造函数与赋值提领操作auto ptr其它函数 2.1.2autoptr使用的注意事项 2.2 unique_ptr2.2.1uni…...
易云维智慧工业云平台助力广西国企培育数字产业化平台,打造数字化产业生态
2022年6月6日,广西壮族自治区人民政府国有资产监督管理委员会出台了《国有企业数字化转型工作实施意见》,明确了总体要求、主要目标、重点推进国有企业数字化转型的任务和保障措施。 《意见》预计,到2025年底,广西基本实现自治区级…...
算力集群搭建:从单节点到多节点的部署教程
算力集群搭建:从单节点到多节点的部署教程📚 本章学习目标:深入理解从单节点到多节点的部署教程的核心概念与实践方法,掌握关键技术要点,了解实际应用场景与最佳实践。本文属于《云原生、云边端一体化与算力基建&#…...
Qwen3-1.7B效果实测:轻量级模型也能写出高质量文案和代码
Qwen3-1.7B效果实测:轻量级模型也能写出高质量文案和代码 1. 开篇:小身材,大能量 你可能听过很多关于大模型的讨论,动辄几百亿、上千亿参数,听起来很厉害,但部署起来也让人头疼——需要昂贵的显卡&#x…...
无需编程!cv_resnet18_ocr-detection WebUI界面操作详解
无需编程!cv_resnet18_ocr-detection WebUI界面操作详解 1. 开篇:为什么选择这个OCR工具? 在日常工作和生活中,我们经常需要从图片中提取文字信息。传统OCR工具要么需要复杂的编程接口,要么功能单一难以满足需求。今…...
3步打造智能文献库:Ethereal Style效率倍增指南
3步打造智能文献库:Ethereal Style效率倍增指南 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件,提供了一系列功能来增强 Zotero 的用户体验,如阅读进度可视化和标签管理,适合研究人员和学者。 项目地址: https…...
提升arduino开发效率:用快马平台一键生成常用工具模块代码
作为一名经常折腾Arduino的开发者,我发现在项目开发中,总有些重复性的代码需要反复编写。最近尝试用InsCode(快马)平台来生成这些常用工具模块,效率提升非常明显。今天就把我的实践心得分享给大家。 I2C设备扫描功能 在连接多个I2C设备时&…...
BJT与MOSFET高频模型对比指南:5个关键差异点帮你选对晶体管
BJT与MOSFET高频模型对比指南:5个关键差异点帮你选对晶体管 在射频电路设计中,晶体管的高频特性往往决定了整个系统的性能上限。对于刚踏入这一领域的设计师而言,BJT(双极型晶体管)和MOSFET(金属氧化物半导…...
中国蚁剑启动报错全解析:从加载失败到空白界面的终极修复指南
1. 中国蚁剑启动报错的三大常见场景 第一次打开中国蚁剑就遇到报错,那种感觉就像刚拿到新玩具却发现电池没电。根据我这些年处理过的案例,启动问题主要集中在三个方向:界面加载失败、解压权限错误和空白界面。这些问题看似复杂,其…...
从异或到AES:Java类文件加密的3种实现方式对比(含性能测试)
从异或到AES:Java类文件加密的3种实现方式对比(含性能测试) 在Java开发领域,代码保护始终是开发者关注的焦点。当项目涉及商业机密或核心算法时,防止class文件被反编译成为刚需。本文将深入剖析三种不同安全级别的clas…...
【Web前端】深入解析JavaScript异步编程
JavaScript的异步编程是其核心特性之一,也是理解JavaScript运行机制的关键。下面我从几个方面详细介绍。一、为什么需要异步编程?JavaScript 是单线程语言,意味着同一时间只能做一件事。如果没有异步编程,当遇到耗时操作ÿ…...
微信聊天记录完全掌控指南:如何永久保存并深度分析你的数字记忆
微信聊天记录完全掌控指南:如何永久保存并深度分析你的数字记忆 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending…...
