论文总结:Rethinking Reconstruction and Denoising in the Dark:New Perspective, General Architecture and
Rethinking Reconstruction and Denoising in the Dark:
New Perspective, General Architecture and Beyond
黑暗中的重构与去噪:新视角、普通建筑与超越
CVPR 2025文章
目录
RAW图像是传感器直接捕获的原始数据,通常以Bayer阵列形式存储,未经任何ISP处理。每个像素仅记录单一颜色通道的强度值,保留了最原始的感光信息。
本文指出,相比于RGB域,RAW域的处理在低光条件下具有显著优势:
- 保留未压缩的传感器数据:RAW数据避免了ISP流水线中的不可逆失真,为重建与去噪提供了更丰富、更真实的信号基础。
- 避免噪声放大与伪影:RGB图像在ISP过程中可能引入噪声放大、色彩失真与压缩伪影,而RAW数据则保持噪声的自然分布,便于建模与去除。
- 支持端到端优化:在RAW域中,去噪与重建可以在统一的信号空间中进行联合优化,避免任务间的信息断层与误差累积。
- 更适合深度学习模型:RAW数据的线性特性与完整信息使得深度学习模型能够更有效地学习噪声分布、色彩映射与细节恢复之间的复杂关系。

目前解决RAW处理的有三种范式:
传统方法,直接通过ISP通道,纯数学计算,没有办法根据照片调整,在低光图像上会出现大量的噪点以及失真,这样生成的RGB图像再去及逆行低照度处理,会固有地遭受图像信号处理(ISP)管道引起的不可逆失真,例如噪声放大和压缩伪影,这给学习和优化带来了额外的挑战
D or R单任务方法,把去噪和重建当作两个个不同的任务,但是该方法无法同时实现去噪和重建,往往忽略了这些任务之间的相互作用,从而产生残留噪声、颜色不正确等固有问题
D for R多任务方法,把去噪当作重建的前提操作,这会出现一个问题,噪点去掉有利于颜色恢复,颜色信息也能帮助区分什么是噪点,他们的内部应该是相通的,忽略掉这种关系会导致训练结果不是最优,并且导致两个功能无法区分。经典的方法如MCR和DNF
- MCR:在近乎全黑的环境下,颜色信息已经极其微弱且不可信,奴应该执着于从一开始就采集有瑕疵的彩色信号,他首先提出一个算法将原始的、带拜耳滤镜的RAW数据,模拟重构成仿佛由一个没有拜耳滤镜的单色(灰度)传感器所捕获的数据用来获取结构信息,然后拿着学习到的结构信息注入到重建里面

- DNF:创新在于它显式地将重建任务分解为两个子问题,并让它们相互作用,他将网络分为两个部分去噪和重建,去噪是作为辅助网络,去噪模块生成了一个噪声分布先验,然后注入重建网络,整体实现的是用去噪指导重建

D for R多任务策略,他整体就有点像上边提到的DNF,不过DNF更像一种总分总的结构,CANS更像一种分总分的结构,它首先设计了一个类似知识库的模块,在这里面添加了色彩感知和纹理感知模块,用来学习图片中的色彩和纹理信息,然后把这些信息分到两个轻量的头上,去噪头和重建头,他们从知识库学习提取到的色彩信息和纹理信息进行处理

如图,它由归一化和GCPA组成,下边主要讲解一下GCPA:
他首先经过1*1的卷积融合通道信息和3*3的深度卷积融合周围信息,并生成Q,K,V,其中Q,K进行pooling池化,将[C, H, W] 的特征图池化为 [C, H/s, W/s],降低了计算的复杂度的同时,聚合了色彩的信息,然后进行矩阵的乘法和softmax计算注意力权重,再与v相乘计算出来全局色彩上下文调制后的特征,他和普通的注意力计算不一样,就是图片最右侧 O((HW)^2) 降至 O(HW * (HW/s^2))
为什么GCP能够实现只提取色彩特征而不提取纹理特征
1.数据的输入:在RAW中,色彩与空间信息是“解耦”的:每个像素点只记录一种颜色(红、绿或蓝)的亮度。相邻像素记录的是不同颜色的信息。这种结构使得“颜色”信息天然分布在通道维度上,而“纹理”需要组合多个相邻的不同颜色像素才能形成。
2.池化的存在:池化会破坏纹理信息,让一块部分直接融合,所以就不会有纹理信息,但又能保存色彩信息
3.损失函数:总损失ℒ_total = ℒ_denoise + ℒ_reconstruct当提取色彩特征的时候会获得更好的提升,所以模型会将整个模块往色彩方面训练
它首先使用一个7*7的空洞卷积,获取全局感受野并且获得提取细节纹理,然后进行归一化吗,然后连接一个门控函数,门控函数进去之后把特征送入两条路线,一条线性变换一条非线性变换,最后提升重要部分
7*7深度可分离大核空洞卷积:
- 大核:提供了宽广的感受野,能够捕捉更大范围的上下文,这对于判断一个点是孤立噪声还是连续边缘的一部分至关重要。
- 空洞:在扩大感受野的同时,不增加参数量或丢失分辨率,保持了计算效率。
- 深度可分离:将空间滤波与通道混合分离,极大减少计算量。这一步初步聚合了跨区域的细节信息。

论文中并没有提到全局架构,只提了一下是由U形网络构成,然后我根据代码把全局结构画了一下

U形网络部分被称为Backbone(骨干网络),他就相当于是专家库,另外两个任务头就从这里面获取相关知识进行学习处理,之所以要有这个专家库,是因为专家库里面有色彩信息和纹理信息,它对两个任务都有好处

(1)参数结构
- θ_b(主干参数):模型绝大部分的“大脑”,负责从RAW输入x中提取统一特征空间。它是所有计算的核心。
- θ_m(重建头参数) 与 θ_n(去噪头参数):两个轻量的“专业工具”。它们以θ_b的输出作为输入,
(2)优化目标
优化器同时最小化去噪损失(ℒ_den)和重建损失(ℒ_rec)。这是一个多目标优化问题。网络无法使两个损失都达到单独训练时的最小值,但可以通过调整(θ_b, θ_m, θ_n)来寻找一个最优解——即在此点上,降低任何一个损失都会导致另一个损失上升。
(3)“动态分配资源”的机制:
资源分配不是由一个外部控制器完成的,而是通过反向传播的梯度流自动、隐式实现的,在反向传播时,ℒ_den和ℒ_rec产生的梯度会汇聚到共享主干θ_b。
- 如果当前批次数据噪声特别严重,ℒ_den的梯度会更强,迫使θ_b更侧重于学习有利于噪声分离的特征。
- 如果当前批次数据色彩失真严重,ℒ_rec的梯度会占主导,引导θ_b强化色彩感知能力。
CANS++相当于在原来的CANS上两任务头之间用交叉注意力建立连接,它实际上就是拿骨干网络生成K,V,再拿两个任务头生成他们独特的Q,然后进行注意力计算,最后训练出两个任务头,他的设计主要是每一次循环练完的参数会更新骨干网络,骨干网络又能生成KV和他们再次联系,从而就能使两个任务头能够进行互相的联系,这个任务头能从骨干获取上一轮另一个任务头产生的信息
论文中没有给出完整流程图,我自己画的一份

它实际上就是比普通的CANS加了一个交叉联系




这篇论文主要是提出了一个新范式,就是骨干+轻量化任务头,在最开始我一直不理解他跟端到端模型有什么区别,因为它一直在提自己比单任务串联好,后来问了一些AI,说这个论文本质上是一个新思想,它依赖的是设计来提升模型,而之前的Retinexformer和restormer更像是依赖一个模型然后黑箱计算,直接得到结果
这篇论文本质上还是在主要训练Backbone,无论是CANS还是CANS++,它本质上就是训练出来一个更聪明,只是更全面的专家来帮助后边任务完成结果,所以当在论文中有提到去掉某一个任务头只执行单任务也可以得到很好的结果,因为骨干网络被训练的很好很完善。
对于这篇论文,我的想法有把restormer里面直接用通道计算注意力会不会整体计算量更小,再结合该模型每个任务头可拆卸这一特点,有没有可能出来一个更轻量化的模型。同时retinex里面把图片分为光照分量和反射分量,有点类似于我在上边提到的MCR,不过我想训练好一个retinex分离光照分量和反射分量,然后让后模型直接从反射分量学习模型结构,色彩感知GCP和光照分量结合,不过这样感觉整个网络计算量会很大很复杂。
同时我认为论文提出这个骨干网络和多任务的交叉注意力是个很好的地方,我们可以训练出一个足够全能的专家网络,让他进行一些更多更全面的任务,这在高级视觉任务里面挺常见,如目标检测分割,所以我认为这一类高级视觉任务的某些思想应该在低级视觉任务中会有很好的效果,不过目前我没啥想法,或许以后会有。