RAW域AI ISP算法训练与硬件部署实战 - 第1节

什么是RAW域?为什么要在RAW域做AI ISP?

大家好,我是这门课的主讲。在芯片行业摸爬滚打了十几年,从传统ISP做到AI ISP,踩过的坑不少。今天咱们先聊聊最基础的问题——RAW域到底是什么?

说白了,RAW域就是图像传感器(比如索尼的IMX系列、豪威的OV系列)直接输出的原始数据。它还没经过任何处理,每个像素点只记录了一个颜色通道的亮度值。你想想看,手机拍完一张照片,你看到的JPG文件,其实已经经过了白平衡、去马赛克、降噪、锐化等几十道工序。而RAW数据,就是这些工序开始前的“毛坯房”。

RAW数据的“三要素”

我习惯用三个关键词来理解RAW域:

  • 拜耳阵列(Bayer Pattern):每个像素只感知一种颜色(R/G/B),通过2x2的RGGB排列来采集彩色信息。这是最经典的方案,也是我们课程讨论的基础。
  • 线性数据:RAW数据与场景亮度呈线性关系。这意味着暗部细节和亮部细节是等比例压缩的,不像人眼那样有非线性响应。
  • 高位宽:通常是10bit、12bit甚至14bit。我做过一个项目,传感器输出14bit RAW,但ISP流水线只支持12bit处理,结果暗部条纹噪声怎么都去不掉——后来发现是截位丢掉了两个bit的信息。

核心观点:RAW域保留了最完整的物理信息。一旦进入RGB或YUV域,信息就发生了不可逆的损失。AI ISP之所以能超越传统ISP,很大程度上是因为它能在RAW域“看到”更多。

为什么要在RAW域做AI ISP?

这个问题我当年也困惑过。传统ISP在RGB域做得挺好的,为什么非要折腾RAW域?

原因有三:

  1. 噪声特性最干净:RAW域的噪声模型最简单——主要是光子散粒噪声和读出噪声。一旦经过去马赛克、伽马校正,噪声会变得非常复杂,AI模型很难学。我在一个项目中试过在RGB域做降噪,效果还不如RAW域一个简单的3层CNN。
  2. 动态范围最大:RAW域是线性空间,没有经过任何压缩。AI模型可以充分利用高位宽的动态范围,恢复出传统ISP丢失的高光和暗部细节。
  3. 避免“垃圾进垃圾出”:传统ISP的每个模块(如去马赛克、白平衡)都会引入误差。这些误差在流水线中累积,最终导致画质下降。在RAW域做AI ISP,可以端到端地学习从RAW到最终图像的映射,避免中间误差。

我的经验:曾经有一个项目,客户要求在极低光照(0.1 lux)下拍摄。传统ISP的降噪模块把细节全抹平了,人脸像油画。后来我们改用RAW域AI ISP,直接学习RAW到干净RGB的映射,信噪比提升了6dB以上。嗯,从那以后我就成了RAW域的坚定拥护者。

传统ISP与AI ISP的架构对比

咱们直接上干货。下面这张表是我自己总结的,涵盖了从模块到系统层面的核心差异。

对比维度 传统ISP AI ISP
处理域 主要在RGB/YUV域 主要在RAW域
模块结构 固定流水线(去马赛克→白平衡→降噪→锐化…) 端到端神经网络(可替换、可联合优化)
参数调优 手动调参(几百个寄存器) 数据驱动(训练数据决定性能)
噪声处理 基于统计模型的滤波(如BM3D、NLM) 基于学习的去噪(CNN、Transformer)
动态范围 依赖HDR融合(多帧合成) 单帧RAW即可恢复高动态范围
硬件实现 专用硬件(ASIC,低功耗、低延迟) NPU/GPU(灵活但功耗高)
迭代周期 硬件流片后无法修改 算法可OTA升级

你可能会问:AI ISP是不是完全取代传统ISP? 我个人觉得,短期内不会。传统ISP在功耗、延迟和稳定性上仍有优势。但长期来看,AI ISP会逐步渗透到更多场景。

架构对比图

下面这张SVG图,是我用来说明两种架构的核心差异的。左边是传统ISP的“串行流水线”,右边是AI ISP的“端到端学习”。

传统ISP vs AI ISP 架构对比 传统ISP vs AI ISP 架构对比 传统ISP(串行流水线) RAW输入 去马赛克 白平衡 降噪 锐化 RGB/YUV输出 AI ISP(端到端学习) RAW输入 端到端神经网络 (CNN/Transformer) RGB/YUV输出 串行流水线,模块间误差累积 端到端学习,避免中间误差

注意:AI ISP的端到端网络虽然强大,但训练数据质量直接决定最终效果。我曾经见过一个团队,用公开数据集训练模型,结果在真实场景下完全失效——因为公开数据集的噪声模型和实际传感器不匹配。所以,数据采集和标定是AI ISP落地的第一道坎。

一个具体的例子:降噪模块

咱们拿降噪来对比一下。传统ISP通常用BM3D或NLM这类算法,它们基于“图像块相似性”的假设。但实际场景中,纹理和噪声往往难以区分。

AI ISP的做法就不同了。它直接在RAW域学习一个映射函数:

# 伪代码示例:RAW域AI降噪
def ai_denoise(raw_input):
    # raw_input: [H, W] 单通道RAW数据
    # 网络结构:U-Net + 残差学习
    noise_map = unet(raw_input)  # 预测噪声
    clean_raw = raw_input - noise_map  # 残差学习
    return clean_raw

你看,就这么几行。但背后的训练数据、网络设计、硬件部署,才是真正的难点。这也是咱们这门课要讲的核心内容。

小结

这一章咱们聊了三个核心问题:

  • RAW域是什么:传感器原始数据,线性、高位宽、拜耳阵列。
  • 为什么选RAW域:噪声简单、动态范围大、避免误差累积。
  • 传统ISP vs AI ISP:串行流水线 vs 端到端学习,各有优劣。

我个人觉得,理解RAW域是入门AI ISP的第一步。后面咱们会深入每个模块的算法细节和硬件实现。嗯,今天就到这儿,下节课见。