2024IJCAI | MetalISP: 仅用1M参数的RAW到RGB高效映射模型

文章标题是:《MetaISP:Effcient RAW-to-sRGB Mappings with Merely 1M Parameters》

MetaISP收录于2024IJCAI,是新加坡国立大学(Xinchao Wang为通讯作者)华为联合研发的新型ai-isp。

原文链接:MetaISP

【1】论文的主要motivation为目前的ai-isp为了提高在不同场景下的泛化性,一味的提增加AI-ISP架构的尺寸和复杂性,导致得到的模型根本无法在侧端(手机端)部署。

【2】论文的主要创新为:提出了一个可以针对不同输入自适应修改"parameters and network architecture"的新型ai-isp。这一点主要是依靠两个模块来实现的。MCCB(Meta Channel Correction Block)学习特征图中层级关系、MSCB(Meta Spatial Correction Block)学习空间注意力图,从而自适应的调整特征图包含的内容。

1. Abstract

SOTA的深度ISP模型通过增加网络的尺寸和复杂性缓解了对不同异质输入的有限泛化能力问题,但也不可避免地导致了网络参数量和FLOPs的急剧增长。为了解决这个问题,本文提出了MetaISP,一个通过"针对不同输入自适应调整参数和结构"以达到优越的图像重构质量的模型。我们的理论主要涉及为不同的输入生成对应的空间/通道注意力矫正矩阵,以帮助分配注意力(即模型应更关注图像的哪些部分)。我们通过“为每张输入图像预测动态权重把权重与多个可学习的基础矩阵相结合构建矫正矩阵“的方法实现上述理论。MetaISP在达到最好效果的同时保证了计算高效性。MetaISP在两个大规模数据集上达到了SOTA,在ZRR数据集上,MetaISP达到了23.8dB的PSNR(以9.2%的参数量和10.6%的FLOPs超过了之前的SOTA方法0.19dB);在MAI21数据集上,MetaISP达到了25.06dB(以0.9%的参数量和2.7%的FLOPs超过了之前的SOTA方法0.17dB)

2. Methods

先验知识:self-attention的计算复杂度很高,大概是 O(N2),N是输入序列长度;以SE (Squeeze and Excitation) 模块为代表的一系列基于CNN实现通道注意力机制的方法计算复杂度就比较低,大约是 O(r2) ,r是放缩率。

模型框架图如图1所示

img

图1. MetalISP的整体框架

 

2.1 整体流程

采用U-Net架构保证了模型可以学习到图像特征的底层及高层特征,促进了鲁棒的表示能力。输入是4通道的RAW图 I r a w ∈ R 4 × H / 2 × W / 2 I_{raw}\in \mathbb{R}^{4×H/2×W/2} IrawR4×H/2×W/2 ,输出是3通道的标准RGB图像 I r g b ∈ R 3 × H × W I_{rgb}\in \mathbb{R}^{3×H×W} IrgbR3×H×W 。MFEB将 I r a w I_{raw} Iraw提取成 F 0 ∈ R C × H / 2 × W / 2 F_0 \in \mathbb{R}^{C×H/2×W/2} F0RC×H/2×W/2

到U-Net架构的bottom层之前是4对MCCB和MSCB的堆叠,生成的特征图通道数为 { C , C , C , 2 C } \{C,C,C,2C\} {C,C,C,2C}低通道数意味着卷积核的数量也很少,保证了低计算复杂度。图中的下采样和上采样均使用的是3×3的卷积核和离散小波变换 。残差连接是基于逐像素加法实现的。

2.2 Meta Channel Correction Block (MCCB)

作者在介绍MCCB之前,先提了一嘴2018年很火的通道注意力 。作者说,这篇工作被广泛用于各个low-level的任务中 (包括深度ISP)去捕捉通道间的依赖关系,从而关注富有信息的特征并抑制冗余的特征。通道注意力CA(Channel attention),实现了计算高效性并且把全局信息带入了特征图中。但是,作者认为,CA中使用的计算方式(通道乘法及注意力预测层)过于简单,因此会导致次优的结果。与此同时,作者提到,基于Self-attention改进的算法又面临计算复杂度 O ( N 2 ) O(N^2) O(N2) 过大的问题,因此,作者提出了MCCB模块。

考虑输入的特征图经过层归一化,卷积,GELU之后,得到特征图 X ∈ R C × H × W X\in \mathbb{R}^{C×H×W} XRC×H×W被分别投射到高维空间 Y ∈ R K × H × W Y\in \mathbb{R}^{K×H×W} YRK×H×W获得更丰富的特征)以及预测得到权重向量 { w n } n = 1 , 2 , . . . , N = p ( X ) \{w_n\}_{n=1,2,...,N}=p(X) {wn}n=1,2,...,N=p(X)矫正矩阵(私以为可以理解为注意力图)的计算方式则为 M = Σ n = 1 N w n ( x ) ϕ ( n ) M=Σ_{n=1}^Nw_n(x)ϕ(n) M=Σn=1Nwn(x)ϕ(n) ,其中, { ϕ n } n = 1 , 2 , . . . , N \{ϕ_n\}_{n=1,2,...,N} {ϕn}n=1,2,...,N为基础矩阵。

后面的流程就不需赘述了,一切如流程图所示。

需要注意的是,MCCB仅仅使用了一些基础矩阵就修正了特征图并应用了动态软权重实现内容自适应的通道变换。MCCB在利用了CA的低计算复杂度的同时,实现了对通道间复杂关系的高效学习。

2.3 Meta Spatial Correction Block (MSCB)

作者在讲MSCB之前,先提了一嘴基于CNN的空间注意力机制。作者指出,使用CNN去学习注意力图强调了相关的空间区域,并且利用参数共享机制降低了计算复杂度,但是,也造成了有限的感受野,阻碍了其建模长范围的像素交互。然后勾连了上一节的SA叙述 (SA可以很好的感受全局信息但是计算复杂度很高,是输入序列长度的平方次),指出SA不适用于ISP任务中的高分辨率图像

为了利用CNN的低计算复杂度以及SA的全局上下文建模能力,作者提出了MSCB。

如图1所示,MSCB和MCCB的基础架构其实差不多,矫正向量的公式为: V = Σ n = 1 N w n ( x ) ε n V=Σ_{n=1}^Nw_n(x)ε_n V=Σn=1Nwn(x)εn ,其中 ε n ε_n εn 是第n个basis vector。

接下来有一些很细节的点,我们放大一下MSCB看看。

img

图2. MSCB

 

令改变形状后的特征图为 Y Y Y,则Y中的每一行都对应一个通道的特征图, Y Y Y中的每一竖列都对应一个像素在不同通道中的取值。接下来,作者使用公式 S w , h = Y w , h ∗ V ∣ Y w , h ∣ ∣ V ∣ S_{w,h}=\frac{Y{w,h}∗V}{|Y_{w,h}||V|} Sw,h=Yw,h∣∣VYw,hV来得到空间注意力图,再用逐元素乘法得到输出的 Y ^ = Y ⊗ S \hat{Y}=Y⊗S Y^=YS ,此处,我理解就是对每个元素使用矫正向量进行矫正。作者指出,这个过程的计算复杂度为 O ( H W ) O(HW) O(HW),是线性复杂度,同时高效利用了特征图的全局信息。

img

图3. MSCB的注意力可视化

 

作者可视化了MSCB的注意力图,并指出,U-Net架构不同层级的注意力关注点不同

3. Experiments

贴一下ZRR数据集的可视化结果图,在颜色上确实贴近GroundTruth.

img

图4. 实验结果可视化
 

【思考1】刚看完摘要的时候,我在想:针对不同输入自适应调整参数和结构是啥意思?难道网络权重在测试的时候还可以改变?看到Methods才明白,论文是搞了一些基础矩阵(Basis Matrices),不同的图像产生不同的权重,和矩阵运算得到注意力图,再跟对应层的特征运算,得到修正后的特征(这里以MCCB为例,MSCB也差不多)。这样相当于是对特征做了处理,但是这个处理模块对于不同的图像是不同的,此之谓"动态参数和动态结构"。

【思考2】作者在MCCB和MSCB架构中是怎么同时利用了CNN和SA的?依照我个人的理解,作者其实相当于简化了生成注意力图的过程,他们设计了一些basis matrices/vectors,只需用CNN给出weights就能生成注意力图,这个过程在SA中是 O ( N 2 ) O(N^2) O(N2) 复杂度的。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

使用 ts-node 运行 ts文件,启动 nodejs项目

最近在写一个nodejs项目,使用 ts-node 启动项目。遇到了一些问题,在此记录一下。 ts-node 是 TypeScript 执行引擎和 Node.js 的 REPL(一个简单的交互式的编程环境)。 它能够直接在 Node.js 上执行 TypeScript,而无需预编译。 这是通过挂接…

《鸿蒙生态:开发者的机遇与挑战》

一、引言 在当今科技飞速发展的时代,操作系统作为连接硬件与软件的核心枢纽,其重要性不言而喻。鸿蒙系统的出现,为开发者带来了新的机遇与挑战。本文将从开发者的角度出发,阐述对鸿蒙生态的认知和了解,分析鸿蒙生态的…

PHP代码审计 - SQL注入

SQL注入 正则搜索(update|select|insert|delete).*?where.*示例一: bluecms源码下载:source-trace/bluecms 以项目打开网站根目录,并以ctrlshiftf打开全局搜索 (update|select|insert|delete).*?where.*并开启正则匹配 最快寻找脆弱点的…

Essential Cell Biology--Fifth Edition--Chapter one (5)

1.1.4 The eukaryotic cell [真核细胞] 真核细胞,一般来说,比细菌和古细菌更大,更复杂。有些是独立的单细胞生物,如变形虫和酵母(图1-14);另一些则生活在多细胞集合中。所有更复杂的多细胞生物…

线程-2-线程概念与控制

main 线程常见寄存器(CR3 EIP IR MMU TLB) CR3是当前进程页表物理内存地址(包不能虚拟地址,不然套娃了) CPU中有寄存器指向task_struct* current EIP:入口虚拟地址 IR:当前命令地址系统总线&a…

Vulkan 开发(十一):Vulkan 交换链

Vulkan 系列文章: 1. 开篇,Vulkan 概述 2. Vulkan 实例 3. Vulkan 物理设备 4. Vulkan 设备队列 5. Vulkan 逻辑设备 6. Vulkan 内存管理 7. Vulkan 缓存 8. Vulkan 图像 9. Vulkan 图像视图 10. Vulkan 窗口表面(Surface&#xff…

【HarmonyOS】鸿蒙系统在租房项目中的项目实战(一)

从今天开始,博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”,对于刚接触这项技术的小伙伴在学习鸿蒙开发之前,有必要先了解一下鸿蒙,从你的角度来讲,你认为什么是鸿蒙呢?它出现的意义又是…

百度搜索AI探索版多线程批量生成TXT原创文章软件-可生成3种类型文章

百度搜索AI探索版是百度推出的一款基于大语言模型文心一言的综合搜索产品‌。以下是关于百度搜索AI探索版的详细介绍: ‌产品发布‌:百度搜索AI探索版在百度世界大会上进行了灰度测试,并面向用户开放体验‌。 ‌核心功能‌:与传…

Linux软件包管理与Vim编辑器使用指南

目录 一、Linux软件包管理器yum 1.什么是软件包? 2.什么是软件包管理器? 3.查看软件包 4.安装软件 ​编辑 5.卸载软件 Linux开发工具: 二、Linux编辑器---vim 1.vim的基本概念 (1) 正常/普通模式(Normal mode&#xff0…

Android Osmdroid + 天地图 (一)

Osmdroid 天地图 前言正文一、配置build.gradle二、配置AndroidManifest.xml三、获取天地图的API Key① 获取开发版SHA1② 获取发布版SHA1 四、请求权限五、显示地图六、源码 前言 Osmdroid是一款完全开源的地图基本操作SDK,我们可以通过这个SDK去加一些地图API&am…

2024国内AI工具十大推荐丨亲测好用‼️

🚀探索了市面上数百款AI工具后,我精心挑选了10款在不同场景下超级好用的神器,快来一起看看吧!🌟 1️⃣豆包 基于云雀模型开发,具备聊天机器人、写作助手、英语学习助手等功能,能够进行多轮对话…

Unity学习---IL2CPP打包时可能遇到的问题

写这篇主要是怕自己之后打包的时候出问题不知道怎么搞,所以记录一下。 问题一:类型裁剪 IL2CPP打包后会自动对Unity工程的dll进行裁剪,将代码中没有引用到的类型裁剪掉。特别是通过反射等方式调用一些类的时候,很容易出问题。 …

多模态大模型(2)--BLIP

大模型如火如荼,研究者们已经不再满足于基本文本的大语言模型(LLM, Large Language Model),AI领域的热点正逐步向多模态转移,具备多模态能力的多模态大型语言模型(MM(Multi-Modal)-L…

基于MATLAB身份证号码识别

课题介绍 本课题为基于连通域分割和模板匹配的二代居民身份证号码识别系统,带有一个GUI人机交互界面。可以识别数十张身份证图片。 首先从身份证图像上获取0~9和X共十一个号码字符的样本图像作为后续识别的字符库样本,其次将待测身份证图像…

Siggraph Asia 2024 | Adobe发布MagicClay:可通过文字引导去对3D模型中的特定部分进行雕刻

今天给大家介绍一篇来自Adobe研究人员在Siggraph Asia 2024上发表的最新工作MagicClay,它是一款结合网格和距离场(SDF)的混合式工具,可以通过文字引导去对3D模型中的特定部分进行雕刻。允许艺术家通过文字提示进行局部网格编辑,支持生成具纹理…

滑动窗口的使用

一、定义与基本原理 滑动窗口是一种流量控制技术,也用于管理和处理数据流。它通过定义一个固定大小或可根据特定条件动态调整的窗口,在数据流或数据序列上滑动,以便高效地处理其中的数据。这种技术能够限制同时处理的数据量,从而…

Python学习26天

集合 # 定义集合 num {1, 2, 3, 4, 5} print(f"num:{num}\nnum数据类型为:{type(num)}") # 求集合中元素个数 print(f"num中元素个数为:{len(num)}") # 增加集合中的元素 num.add(6) print(num) # {1,2,3,4,5,6} # 删除…

android开发

文章目录 android开发 类微信界面整体框架展示:主页Fragment_MainActivity2:1. 聊天界面2. 用户界面用户界面的跳转 3. 朋友圈界面4. 我的界面 android开发 类微信界面 整体效果展示: 整体框架展示: 4个主要的fragment页面&#…

【大数据学习 | flume】flume的概述与组件的介绍

1. flume概述 Flume是cloudera(CDH版本的hadoop) 开发的一个分布式、可靠、高可用的海量日志收集系统。它将各个服务器中的数据收集起来并送到指定的地方去,比如说送到HDFS、Hbase,简单来说flume就是收集日志的。 Flume两个版本区别: ​ 1&…

vmware安装Ubuntu桌面版系统

1安装环境 vmware版本:VMware Workstation 17 Ubuntu版本:ubuntu-24.04.1-desktop-amd64.iso 文档时间:2024年11月 每一个Ubuntu的版本安装显示可能不一样,但安装方法是类似的 2镜像下载 Ubuntu官网:[https://ubun…