论文阅读:Learning sRGB-to-Raw-RGB De-rendering with Content-Aware Metadata

论文阅读:Learning sRGB-to-Raw-RGB De-rendering with Content-Aware Metadata

Abstract

大多数的 Camera ISP 会将 RAW 图经过一系列的处理,变成 sRGB 图像,ISP 的处理中很多模块是非线性的操作,这些操作会破坏环境光照的线性关系,这对于一些希望获取环境光照线性关系的 CV 任务来说是不友好的,对于这类任务来说,线性的 RAW-RGB 图像来说更合适,不过,一般的 RAW-RGB 图像的 bit 位都是 12 或者 14 比特的,直接存储 RAW-RGB 图像比较费存储空间。为了解决这个问题,有几个 raw 重建的方法,是通过从 RAW-RGB 图像中提取特定的元数据,并嵌入 sRGB 图像中,这些元数据,最后可以用来参数化一个映射函数,这个映射函数可以将 sRGB 图像重映射回 RAW-RGB 图像。现有的 RAW 重建的方法都是基于简单的采样以及全局映射函数来实现。这篇文章提出了一种联合学习的方式,将采样策略与重建方法进行联合优化,最终得到的采样策略可以基于图像内容自适应地进行采样,从而可以得到更好的 RAW 重建结果。文章也提出了一种在线 fine-tuning 的方式进一步提升重建网络的效果。

在这里插入图片描述

De-rendering Framework

在这里插入图片描述
文章先对这个 RAW-RGB 图像的重建,进行了一个抽象的表述,假设 x \mathbf{x} x y \mathbf{y} y 分别表示 sRGB 图像以及 RAW-RGB 图像,RAW-RGB 图像的重建问题,可以抽象为寻找一个映射函数,使得

y = f ( x ) \mathbf{y} = f(\mathbf{x}) y=f(x)

对于元数据的这类方法,映射关系通常基于一个小样本的采样来获得:

y = f ( x ; s y ) \mathbf{y} = f(\mathbf{x}; s_{\mathbf{y}}) y=f(x;sy)

这类采样,一般是基于事先设定好的规则,比如均匀采样等。这篇文章,希望能同时学习到采样函数以及映射函数,即:

y = f ( x ; s y = g ( x , y ) ) \mathbf{y} = f(\mathbf{x}; s_{\mathbf{y}} = g(\mathbf{x}, \mathbf{y}) ) y=f(x;sy=g(x,y))

其中, g ( x , y ) g(\mathbf{x}, \mathbf{y}) g(x,y) 是一个可学习的映射函数。

文章作者将 f , g f, g f,g 用两个 U-Net 的网络进行建模, 并且通过端到端的方式进行训练,在训练阶段,从 RAW-RGB 图像中提取 k % k\% k% 的像素点,采样网络输入一张 RAW-RGB 图像以及一张 sRGB 图像,输出一个二值的采样图,被采样点的位置上赋值为 1,为了更有效的计算采样点,采样网络也会学习将 RAW-RGB 图像分成多个超像素区域,每个采样点就从超像素区域通过 max-pooling 获得,而对于重建网络,输入的就是 sRGB 图像,采样的 RAW-RGB 图像点以及采样图,从而恢复出完整的 RAW-RGB 图像。测试阶段,包含两个阶段,第一阶段就是在拍摄的时候,利用采样网络 g g g 对 RAW-RGB 图像进行采样,同时 ISP 会输出一张 sRGB 图像;然后第二阶段就是需要 RAW-RGB 图像的时候, 通过重建网络 f f f 进行重建。

在这里插入图片描述

基于内容的元数据采样方式,就是想基于图像内容找到最合适的图像采样点。为了实现这个目的,文章作者提出了一种基于 superpixel 的方式,将图像分成若干个 superpixel 区域,然后每个 superpixel 区域进行采样。通过这种方式,可以将 RAW-RGB 图像分成很多个分割区域,每个区域选择最具代表性的采样点。

文章中的采样网络是直接从 RAW-RGB 图像中进行采样,如下图所示,首先将 RAW-RGB 图像分成若干个均匀分布的网格,网络会预测相关分数 q c ( p ) q_c(\mathbf{p}) qc(p),表示每个像素 p \mathbf{p} p 属于网格 c c c 的概率有多大,为了计算效率, 文章中只选择了一个 9 邻域的网格来计算相关分数。相关性图通过如下的 loss 来学习获得:

L S = α ∑ p ∥ x ( p ) − x ^ ( p ) ∥ 2 2 + ( 1 − α ) ∑ p ∥ y ( p ) − y ^ ( p ) ∥ 2 2 + m 2 S 2 ∑ p ∥ p − p ^ ∥ 2 2 (1) L_S = \alpha \sum_{\mathbf{p}} \left \| \mathbf{x}(\mathbf{p}) - \hat{\mathbf{x}}(\mathbf{p}) \right \|_{2}^{2} + (1-\alpha) \sum_{\mathbf{p}} \left \| \mathbf{y}(\mathbf{p}) - \hat{\mathbf{y}}(\mathbf{p}) \right \|_{2}^{2} + \frac{m^2}{S^2} \sum_{\mathbf{p}} \left \| \mathbf{p} - \hat{\mathbf{p}} \right \|_{2}^{2} \tag{1} LS=αpx(p)x^(p)22+(1α)py(p)y^(p)22+S2m2ppp^22(1)

其中, x ^ ( p ) \hat{\mathbf{x}}(\mathbf{p}) x^(p) x ( p ) \mathbf{x}(\mathbf{p}) x(p) 重建之后的 RGB 值,其表达式如下所示:

u c = ∑ p ∈ N c x ( p ) ⋅ q c ( p ) ∑ p ∈ N c q c ( p ) , x ^ ( p ) = ∑ c u c ⋅ q c ( p ) (2) \mathbf{u}_c = \frac{\sum_{\mathbf{p} \in \mathcal{N}_c} \mathbf{x}(\mathbf{p}) \cdot q_c(\mathbf{p}) }{\sum_{\mathbf{p} \in \mathcal{N}_c} q_c(\mathbf{p})}, \quad \hat{\mathbf{x}}(\mathbf{p}) = \sum_c \mathbf{u}_c \cdot q_c(\mathbf{p}) \tag{2} uc=pNcqc(p)pNcx(p)qc(p),x^(p)=cucqc(p)(2)

其中, u c \mathbf{u}_c uc 表示超像素区域中心的特征向量, N c \mathcal{N}_c Nc 表示网格 c c c 的 9 邻域内的所有像素集合, y ^ ( p ) , p \hat{\mathbf{y}}(\mathbf{p}), \mathbf{p} y^(p),p 都用类似的方法进行计算, m 和 S m 和 S mS 表示权重参数。如果选择 % k \%k %k 的采样点,文章就将整个图像区域分成 % k \%k %k 个网格区域,然后每个网格区域选择似然估计最大的像素点作为采样点:

p c ∗ = arg max ⁡ p ∈ N c q c ( p ) (3) \mathbf{p}^{*}_c = \argmax_{\mathbf{p} \in \mathcal{N}_c} q_c(\mathbf{p}) \tag{3} pc=pNcargmaxqc(p)(3)

这些采样点,最后会形成一个二值化化的采样 mask m ( p ) \mathbf{m}(\mathbf{p}) m(p),然后用这个 mask 与 RAW-RGB 图像相乘,就能得到采样后的 RAW-RGB 值,这些值存下来作为元数据。

介绍完了采样,后面的重建就比较直观,将 RGB 图像 x \mathbf{x} x,采样后的 RAW-RGB 图像值 s y \mathbf{s}_y sy 以及 mask m \mathbf{m} m 串起来,一起输入重建网络,重建网络最后预测出一个完整的 RAW-RGB 图像,重建 loss 由下所示:

L R = ∑ p ∥ y ( p ) − y ^ ( p ) ∥ 1 L_{R} = \sum_{\mathbf{p}} \left \| \mathbf{y}(\mathbf{p}) - \hat{\mathbf{y}}(\mathbf{p}) \right \|_{1} LR=py(p)y^(p)1

其中, y ^ = f ( x , s y , m ) \hat{\mathbf{y}}=f(\mathbf{x}, \mathbf{s}_y, \mathbf{m}) y^=f(x,sy,m)

推理的时候,可以利用在线 finetune 的方式进一步提升重建效果,可以通过只对采样点处的像素进行重建损失的计算:

L O = ∑ p m ( p ) ∥ y ( p ) − y ^ ( p ) ∥ 1 L_{O} = \sum_{\mathbf{p}} \mathbf{m}(\mathbf{p}) \left \| \mathbf{y}(\mathbf{p}) - \hat{\mathbf{y}}(\mathbf{p}) \right \|_{1} LO=pm(p)y(p)y^(p)1

文章中还利用了元学习的策略,进一步提升推理时候的重建效果:

L M = ∑ p ∥ y ~ θ ′ ( p ) − y ^ ( p ) ∥ 1 L_{M} = \sum_{\mathbf{p}} \left \| \tilde{\mathbf{y}}_{\theta'}(\mathbf{p}) - \hat{\mathbf{y}}(\mathbf{p}) \right \|_{1} LM=py~θ(p)y^(p)1

最终的训练loss 是这几种 loss 的加权:

L T o t a l = L R + λ S L S + λ M L M L_{Total} = L_{R} + \lambda_{S}L_{S} + \lambda_{M}L_{M} LTotal=LR+λSLS+λMLM

在这里插入图片描述

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

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

相关文章

【LLM】Prompt Engineering

Prompt Engineering CoTCoT - SCToTGoT CoT: Chain-of-Thought 通过这样链式的思考,Model输出的结果会更准确 CoT-SC: Self-Consistency Improves Chain of Thought Reasoning in Language Models 往往,我们会使用Greedy decode这样的策略&#xff0c…

arcgis更改服务注册数据库账号及密码

最近服务器数据库密码换了,gis服务也得换下数据库连接密码。传统官方的更改方式(上传连接配置文件): ArcGIS Server数据库注册篇(I) — 更新数据库密码_arcgis server sde换密码-CSDN博客 方式太麻烦了,需要安装ArcG…

springboot221酒店管理系统

springboot221酒店管理系统 源码获取: https://docs.qq.com/doc/DUXdsVlhIdVlsemdX

通话状态监听-Android13

通话状态监听-Android13 1、Android Telephony 模块结构2、监听和广播获取通话状态2.1 注册2.2 通话状态通知2.3 通话状态 3、通知状态流程* 关键日志 frameworks/base/core/java/android/telephony/PhoneStateListener.java 1、Android Telephony 模块结构 Android Telephony…

数据结构-猴子吃桃问题

一、需求分析 有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。要求: 1)采用数组数据结构实现上述求解; 2)采用链数据结构实现上述…

TrustZone之其他设备及可信基础系统架构

一、其他设备 最后,我们将查看系统中的其他设备,如下图所示: 我们的示例TrustZone启用的系统包括一些尚未涵盖的设备,但我们需要这些设备来构建一个实际的系统。 • 一次性可编程存储器(OTP)或保险丝 这些是一旦写入就无法更改的存储器。与每个芯片上都包含相同…

数据仓库与数据挖掘小结

更加详细的只找得到pdf版本 填空10分 判断并改错10分 计算8分 综合20分 客观题 填空10分 判断并改错10分--错的要改 mooc中的--尤其考试题 名词解释12分 4个,每个3分 经常碰到的专业术语 简答题40分 5个,每道8分 综合 画roc曲线 …

02.Git常用基本操作

一、基本配置 (1)打开Git Bash (2)配置姓名和邮箱 git config --global user.name "Your Name" git config --global user.email "Your email" 因为Git是分布式版本控制工具,所以每个用户都需要…

数据安全传输基础设施平台(一)

1引言 1.1项目简介 数据安全传输基础设置平台项目(简称,数据传输平台),是一款基础设施类项目,为集团、企业信息系统的提供统一、标准的信息安全服务;解决企业和企业之间,集团内部信息数据的传…

gitee提交代码步骤介绍(含git环境搭建)

1、gitee官网地址 https://gitee.com; 2、Windows中安装git环境 参考博客:《Windows中安装Git软件和TortoiseGit软件》; 3、设置用户名和密码 这里的用户名和密码就是登录gitee网站的用户名和密码如果设置错误,可以在Windows系统的“凭据管理…

【深度学习目标检测】九、基于yolov5的安全帽识别(python,目标检测)

YOLOv5是目标检测领域一种非常优秀的模型,其具有以下几个优势: 1. 高精度:YOLOv5相比于其前身YOLOv4,在目标检测精度上有了显著的提升。YOLOv5使用了一系列的改进,如更深的网络结构、更多的特征层和更高分辨率的输入图…

IDEA2023 + spring cloud 工程热部署设置方法

基于spring cloud 工程进行热部署 &#xff0c;实现每次修改工程源文件&#xff0c;后台自动启动&#xff0c;方便开发测试工作。具体分为5步骤即可&#xff1a; 1、修改工程的pom文件&#xff0c;增加adding devtools 工具包。 <dependency> <groupId>org.s…

js基础入门

先来一点js基础&#xff0c;其实js大部分的时候都在处理对象或者数组。 对象四个基本操作&#xff1a;增删改查 掌握元素的增删改查&#xff0c;了解如何拷贝&#xff0c;深拷贝和浅拷贝的区别。详情见代码 <script>//创建对象一共有三种赋值声明的语法let obj{} //赋值…

Vue 项目关于在生产环境下调试

前言 开发项目时&#xff0c;在本地调试没问题&#xff0c;但是部署到生产会遇到一些很奇怪的问题&#xff0c;本地又没法调&#xff0c;就需要在生产环境/域名下进行调试。 在这里介绍一个插件Vue force dev ,浏览器扩展里下载 即便是设置了Vue.config.devtoolsfalse 只要安…

认知能力测验,③如何破解语言常识类测试题?

作为认知能力测评中的一个环节&#xff0c;语言常识类&#xff0c;是大概率的出现&#xff0c;不同的用人单位可能略有不同&#xff0c;语言是一切的基础&#xff0c;而常识则意味着我们的知识面的宽度。 语言常识类的测试&#xff0c;如果要说技巧&#xff1f;难说....更多的…

maui sqlite开发一个商城加购物车的演示(3)

购物车界面及代码 <?xml version"1.0" encoding"utf-8" ?> <ContentPage xmlns"http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x"http://schemas.microsoft.com/winfx/2009/xaml"xmlns:syncfusion"clr-namesp…

ArcMap自定义脚本工具箱迁移至ArcGIS pro

本文记录了将ArcMap10.7创建的自定义脚本工具箱&#xff08;.tbx&#xff09;迁移至ArcGIS pro的过程 ArcGIS Pro使用的是python版本与ArcMap不同&#xff0c;前者为python3&#xff0c;后者为python2。由于python3 和 python2 的部分语法不兼容&#xff0c;以及一些地理处理工…

87 GB 模型种子,GPT-4 缩小版,超越ChatGPT3.5,多平台在线体验

瞬间爆火的Mixtral 8x7B 大家好&#xff0c;我是老章 最近风头最盛的大模型当属Mistral AI 发布的Mixtral 8x7B了&#xff0c;火爆程度压过Google的Gemini。 缘起是MistralAI二话不说&#xff0c;直接在其推特账号上甩出了一个87GB的种子 随后Mixtral公布了模型的一些细节&am…

vue3的大致使用

<template><div class"login_wrap"><div class"form_wrap"> <!-- 账号输入--> <el-form ref"formRef" :model"user" class"demo-dynamic" > <!--prop要跟属性名称对应-->…