论文阅读:GamutMLP A Lightweight MLP for Color Loss Recovery

这篇文章是关于色彩恢复的一项工作,发表在 CVPR2023,其中之一的作者是 Michael S. Brown,这个老师是加拿大 York 大学的,也是 ISP 领域的大牛,现在好像也在三星研究院担任兼职,这个老师做了很多这种类似的工作,通过一些轻量模型,将一些数据转换过程中的变换关系进行拟合,然后再进行恢复,比如 RAW域 到 sRGB 域的转换,这篇文章是 wide RGB 到 sRGB 的转换

一般相机的 ISP 或者一些图像编辑软件,可以处理更为宽广的色域,也就是 wide-gamut,广色域基本涵盖了 90% 的可见光色彩空间,不过这些图像最终转换到标准色域 standard-RGB (sRGB) 的时候,由于标准色域空间 sRGB 只涵盖了 30% 的色彩空间,所以会有很多的截断及精度损失,这篇文章也是借助神经网络强大的隐式表达能力,这篇文章提出在进行色彩转换的时候,用一个轻量级的的 MLP 去记录转换时的截断像素值。这个 MLP 需要大概 2s 的时间训练,需要大概 23k 的存储空间,可以看到,这是一个类似在线拟合的过程,每转换一张图片,需要同步去训练一个 MLP 在线拟合这个色彩转换过程,然后后面需要再进行色彩恢复的时候,可以调用这个模型进行色彩恢复。

文章整体的思路还是比较直观简单的,可以分成两个阶段,第一个阶段是编码阶段,也就是从 wide gamut 到 standard gamut 的时候,需要同步训练一个 MLP; 第二个阶段可以认为是解码阶段,就是从 standard gamut 重新扩展成 wide gamut 的时候。

  • 编码阶段

在这里插入图片描述

  • 解码阶段

在这里插入图片描述

假设一张 wide gamut 的图像可以表示成 I P P ∈ R 3 × N \mathbf{I}_{PP} \in \mathbb{R}^{3 \times N} IPPR3×N,转换后的 sRGB 图像为 I s R G B \mathbf{I}_{sRGB} IsRGB,整个转换过程可以表示为:

I s R G B = g ( clip ( M I P P , m i n = 0 , m a x = 1.0 ) ) (1) \mathbf{I}_{sRGB} = g(\text{clip}(\mathbf{M}\mathbf{I}_{PP}, min=0, max=1.0)) \tag{1} IsRGB=g(clip(MIPP,min=0,max=1.0))(1)

M \mathbf{M} M 是一个色彩转换矩阵, I P P \mathbf{I}_{PP} IPP 表示广色域的图像,clip 是一个截断操作, g g g 表示 gamma 变换,可以看到,由于其中有一个 clip 的截断操作,所在这个变换是不可逆的,当从 sRGB 图像转换回 wide gamut 图像时,可以用下面的式子表示:

I C l i p e d P P = M − 1 g − 1 ( I s R G B ) (2) \mathbf{I}_{ClipedPP} =\mathbf{M}^{-1}g^{-1}(\mathbf{I}_{sRGB}) \tag{2} IClipedPP=M1g1(IsRGB)(2)

为了能从 I C l i p e d P P \mathbf{I}_{ClipedPP} IClipedPP 恢复得到真正的 I P P \mathbf{I}_{PP} IPP,文章提出用一个 MLP 网络来进行拟合。MLP 本身预测的是残差,整个恢复过程如下所示:

在这里插入图片描述

I ^ P P ( x ) = f θ ( x , I C l i p e d P P ( x ) ) + I C l i p e d P P ( x ) (3) \hat{\mathbf{I}}_{PP}(\mathbf{x}) = f_{\theta} (\mathbf{x}, \mathbf{I}_{ClipedPP}(\mathbf{x})) + \mathbf{I}_{ClipedPP}(\mathbf{x}) \tag{3} I^PP(x)=fθ(x,IClipedPP(x))+IClipedPP(x)(3)

其中, f θ ( x , I C l i p e d P P ( x ) ) f_{\theta} (\mathbf{x}, \mathbf{I}_{ClipedPP}(\mathbf{x})) fθ(x,IClipedPP(x)) 就是 MLP 网络预测的残差, I ^ P P ( x ) \hat{\mathbf{I}}_{PP}(\mathbf{x}) I^PP(x) 表示最终恢复的 wide gamut 的 RGB 值,网络的输入是一个五维的向量 ( x , y , R ′ , G ′ , B ′ ) (x, y, R', G', B') (x,y,R,G,B) ,文章中用了一个编码函数,对每个维度进行了编码,编码函数如下所示:

γ ( m ) = ( sin ⁡ ( 2 0 π m ) , cos ⁡ ( 2 0 π m ) , . . . , sin ⁡ ( 2 K − 1 π m ) , cos ⁡ ( 2 K − 1 π m ) ) (4) \gamma(m) = ( \sin(2^{0}\pi m), \cos(2^{0}\pi m), ..., \sin(2^{K-1}\pi m), \cos(2^{K-1}\pi m) ) \tag{4} γ(m)=(sin(20πm),cos(20πm),...,sin(2K1πm),cos(2K1πm))(4)

每个维度编码成一个 24 维的向量,5 个维度一共是 120 维的向量。最终的损失函数是一个 L 2 L_2 L2 的 loss

L g a m u t = ∑ x ∥ I ^ P P ( x ) − I P P ( x ) ∥ (5) \mathcal{L}_{gamut} = \sum_{\mathbf{x}} \left \| \hat{\mathbf{I}}_{PP}(\mathbf{x}) - \mathbf{I}_{PP}(\mathbf{x}) \right \| \tag{5} Lgamut=x I^PP(x)IPP(x) (5)

文章中也提到,训练的时候,不能只用 out-of-gamut 的像素值训练,out-of-gamut 和 in-gamut 都用上,模型拟合的效果最好,文章最后用了 20% 的 out-of-gamut 的像素,以及 2% 的 in-gamut 的像素,混合着训练。最后就是实验结果了。

在这里插入图片描述

这篇文章主要是为了解决色域转换时候的精度损失及截断问题,通过在线训练一个 MLP 网络,对转换过程进行拟合,文章整体的思路简单直观,效果从文章给的结果来看,比之前的一些方法要好。毕竟是每张图片都需要单独训练一个 MLP 网络,用效率换效果了。

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

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

相关文章

C++数据结构与算法——双指针法

C第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更…

STM32——OLED菜单

文章目录 一.补充二. 二级菜单代码 简介:首先在我的51 I2C里面有OLED详细讲解,本期代码从51OLED基础上移植过来的,可以先看完那篇文章,在看这个,然后按键我是用的定时器扫描不会堵塞程序,可以翻开我的文章有单独的定时…

免费chatgpt使用

基本功能如下: https://go.aigcplus.cc/auth/register?inviteCode3HCULH2UD

TensorRT转换onnx的Transpose算子遇到的奇怪问题

近来把一个模型导出为onnx并用onnx simplifier化简后转换为TensorRT engine遇到非常奇怪的问题,在我们的网络中有多个检测头时,转换出来的engine的推理效果是正常的,当网络中只有一个检测头时,转换出来的engine的推理效果奇差&…

OpenCV-42 直方图均匀化

目录 一、直方图均匀化原理 二、直方图均匀化在OpenCV中的运用 一、直方图均匀化原理 直方图均匀化是通过拉伸像素强度的分布范围,使得在0~255灰阶上的分布更加均匀,提高图像的对比度。达到改善图像主管视觉效果的目的。对比度较低的图像适合使用直方…

Flink理论—容错之状态

Flink理论—容错之状态 在 Flink 的框架中,进行有状态的计算是 Flink 最重要的特性之一。所谓的状态,其实指的是 Flink 程序的中间计算结果。Flink 支持了不同类型的状态,并且针对状态的持久化还提供了专门的机制和状态管理器。 Flink 使用…

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核基础-互斥锁mux

目录 一、互斥锁基本概念二、互斥锁运行机制三、互斥锁开发流程四、互斥锁使用说明五、互斥锁接口六、代码分析(待续...) 一、互斥锁基本概念 互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式处理。…

Nginx (window)2024版 笔记 下载 安装 配置

前言 Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理(Reverse Proxy)服务器及电子邮件(IMAP/POP3)代理服务器。 反向代理方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服…

C++ //练习 6.3 编写你自己的fact函数,上机检查是否正确。

C Primer(第5版) 练习 6.3 练习 6.3 编写你自己的fact函数,上机检查是否正确。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /********************************************************…

数据结构~二叉树(基础知识)

上一篇博客我们对树有了初步了解与学习,这篇我将初步学习二叉树!!(新年快乐!) 目录 二叉树 1、定义: 2、特点: 3、基本形态: 4、二叉树的种类: &…

精工电联:定制精工线缆,赋能科技互联---致力于为客户提供卓越的连接线缆和连接器产品

精工电联 “定制精工线缆 ,赋能科技互联”,精工电联致力于为高科技产业提供全方位、多维度的集成线缆解决方案。凭借深厚的研发实力和丰富的行业经验,精工电联已经成功地在工控设备、医疗设备、人工智能、新能源领域、轨道交通和超声波设备等…

数学建模【非线性规划】

一、非线性规划简介 通过分析问题判断是用线性规划还是非线性规划 线性规划:模型中所有的变量都是一次方非线性规划:模型中至少一个变量是非线性 非线性规划在形式上与线性规划非常类似,但在数学上求解却困难很多 线性规划有通用的求解准…

实战 | 使用CNN和OpenCV实现数字识别项目(步骤 + 源码)

导 读 本文主要介绍使用CNN和OpenCV实现数字识别项目,含详细步骤和源码。 前 言 在当今世界,深度学习和图像处理技术正在各个应用领域得到利用。在这篇博文中,我们将使用卷积神经网络 (CNN) 和 OpenCV 库完成数字识别项目。我们将逐步掌握该项目如何执行。 项目准…

Git 初学

目录 一、需求的产生 二、版本控制系统理解 1. 认识版本控制系统 2. 版本控制系统分类 (1)集中式版本控制系统 缺点: (2)分布式版本控制系统 三、初识 git 四、git 的使用 例:将 “ OLED文件夹 ”…

Nuxt3+Vue3(Composition API)+TS+Vite+Ant Design Vue 搭建

最近官网搭建选择了nuxtjs,由于框架更新了,其中语法也有很多变化,中间遇到了一些问题点做下总结。 nuxt3官方文档地址:https://nuxt.com/docs/getting-started/installation 安装 在安装Nuxt3之前,你需要保证你的nod…

如何使用iptables或者firewalld配置Linux系统的防火墙策略

在网络安全中,防火墙是一种关键的安全设备,用于保护计算机网络免受恶意攻击和未经授权的访问。在Linux系统中,我们可以使用iptables或者firewalld来配置防火墙策略。本文将介绍如何使用这两种工具来配置Linux系统的防火墙策略,包括…

java8-重构、测试、调试

8.1.1 改善代码的可读性 改善代码的可读性到底意味着什么?我们很难定义什么是好的可读性,因为这可能非常主观。通常的理解是,“别人理解这段代码的难易程度”。改善可读性意味着你要确保你的代码能非常容易地被包括自己在内的所有人理解和维护。为了确保…

php基础学习之函数

基本概念 是一种语法结构,将实现某一个功能的代码块封装到一个结构中,从而实现代码的重复利用 php函数的定义语法 (与C/Java很类似,区别在于没有数据类型,因为php是弱类型语言) function 函数名(参数){ //…

问题:内存时序参数 CASLatency 是() #学习方法#微信#微信

问题:内存时序参数 CASLatency 是() A.行地址控制器延迟时间 B.列地址至行地址延迟时间 C.列地址控制器预充电时间 D.列动态时间 参考答案如图所示

HTML-多媒体嵌入-MDN文档学习笔记

HTML-多媒体与嵌入 查看更多学习笔记&#xff1a;GitHub&#xff1a;LoveEmiliaForever MDN中文官网 HTML-中的图片 将图片放入网页 可以使用<img/>来将图片嵌入网页&#xff0c;它是一个空元素&#xff0c;最少只需src属性即可工作 <img src"图片链接"…