论文阅读: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.hqwc.cn/news/468319.html

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

相关文章

【从零到Offer】MySQL最左匹配

前言 ​ 相信大家在日常开发时,也经常能听到“最左匹配”这个词,那么什么是最左匹配呢?本篇文章就带你一起探索“最左匹配”的神奇秘密。 什么是最左匹配 ​ 最左匹配,通常指的是最左前缀匹配原则,即MySQL在检索数据…

C++ 特殊类的实现

一、请设计一个类,不能被拷贝 拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 在C98中:将拷贝构造函数与赋值运算符重载…

今天:旧时是这样“破五迎福”

昨(正月初四)天,笔者——“ 人民体验官 ”, 为了推广人民日报官方微博文化产品所发表在10余个网站自媒体平台上的文章《今天:大年初四迎灶神爷》,不知何故被笔者寄居养老城市的自媒体论坛反复拒之门外&…

Imgui(2) | macOS 绘制 CPU 占用率曲线

Imgui(2) | macOS 绘制 CPU 占用率曲线 文章目录 Imgui(2) | macOS 绘制 CPU 占用率曲线0. 简介1. 绘制曲线 - 以正弦函数为例1.1 基于 sf::RectangleShape 的渲染 - 不好看,效率低1.2 基于 sf::VertexArray 的绘制 2. 获取和绘制所有 CPU 的占用率2.1 测试程序 - 用…

LeetCode、136. 只出现一次的数字【简单,位运算】

文章目录 前言LeetCode、136. 只出现一次的数字【简单,位运算】题目链接与分类思路异或一遍运算 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术…

测试西门子博途S7-PLCSIM Advanced V5.0的使用

原创 honeytree 西门子博途S7-PLCSIM Advanced V5.0能支持S7-1500,S7-1500R/H,ET200SP,ET200pro的仿真,用此仿真器可以模拟实际的PLC,用于其他软件的连接,比如上位机软件、触摸屏软件,自己用高级语音开发…

BUGKU-WEB POST

题目描述 进入场景看下: 代码如下: $what$_POST[what]; echo $what; if($whatflag) echo flag{****};解题思路 形式和上一题(get)一样本题需要post一个what来查看flag 相关工具 使用插件hackbar 来传post参数 解题步骤 使用…

项目计划制定攻略:从构思到执行的完整指南

在任何项目中,制定一个全面、详细的项目计划是至关重要的。项目计划是项目成功的基石,它提供了项目的路线图和指导,帮助团队成员了解项目的目标、里程碑和时间表。本文将详细介绍如何制定一个高质量的项目计划,确保项目顺利实施。…

25天物理探索旅程 - 第二天:力学基石的构筑

第二天的课堂,我们将一起踏上一段力学世界的奇妙旅程,探索那些如同魔法般引导着宇宙万物运动法则的基石——牛顿三定律。想象一下,你手中握着一根魔杖,而那根魔杖正是我们今天要深入研究的力学奥秘:牛顿三大定律。别担…

【Web】CVE-2021-31805 s2-062漏洞复现学习

目录 Struts2介绍 漏洞概况 OGNL与Struts2 简单原理 漏洞复现 正向rce 反弹shell payload分析 Struts2介绍 Struts 2 是一个流行的用于构建 Java Web 应用程序的开源 Web 应用程序框架。它是 Apache 软件基金会下的一个顶级项目,是 Struts 框架的升级版本。…

ARMv8-AArch64 的异常处理模型详解之异常处理概述Handling exceptions

异常处理模型详解之异常处理概述 一,异常处理相关概念二,异常处理概述 一,异常处理相关概念 在介绍异常处理之前,有必要了解一些关于异常处理状态的术语: 当处理器响应一个异常时,我们称该异常被获取了&a…

Python实现EMV指标计算:股票技术分析的利器系列(2)

Python实现EMV指标计算:股票技术分析的利器系列(2) 介绍算法解释: 核心代码:rolling函数介绍 完整代码:一定要看 介绍 先看看官方介绍: EMV(简易波动指标) 用法 1.EMV 由下往上穿越…