2. 基础回顾:传统 ISP 流水线与深度学习 ISP 的对比
聊端侧 AI ISP 之前,咱们得先搞清楚一个事儿——传统 ISP 到底在干什么。我见过不少刚入行的同学,一上来就扎进模型轻量化,结果连去马赛克和降噪的先后顺序都搞反了。嗯,这其实挺要命的。
这一节,我会带你快速过一遍传统 ISP 的核心模块,然后跟深度学习 ISP 做个对比。说白了,就是让你知道「老路怎么走」以及「新路为什么能抄近道」。
2.1 传统 ISP 流水线:一个模块一个坑
传统 ISP 是一个高度工程化的系统。每个模块各司其职,按固定顺序执行。我个人习惯把它拆成四个核心环节:
- 去马赛克(Demosaic)——从 RAW 图恢复全彩
- 降噪(NR)——干掉传感器噪声
- HDR 合成——扩展动态范围
- 3A(AE/AWB/AF)——曝光、白平衡、对焦控制
你想想看,这四个环节是串在一起的。前一个模块的输出,就是后一个模块的输入。一旦某个环节出了偏差,后面全得跟着遭殃。
核心认知:传统 ISP 是「模块级独立优化」的典范。每个模块都有独立的算法和参数,但模块之间缺乏全局信息共享。
2.1.1 去马赛克:从拜耳阵列到全彩图
传感器输出的 RAW 图是拜耳阵列——每个像素只记录 R、G、B 中的一个通道。去马赛克的任务,就是通过插值把缺失的两个通道补回来。
常用的方法有:
- 双线性插值:简单,但边缘容易发虚
- 方向自适应插值:沿边缘方向插值,效果更好
- 基于梯度的方法:比如 Hamilton-Adams 算法,至今还在用
我在项目中遇到过一个问题:去马赛克之后的图像如果直接做降噪,边缘的伪彩会被放大。后来我调整了顺序——先做轻量降噪,再去马赛克,伪彩明显减少了。嗯,这就是工程里的「顺序即算法」。
2.1.2 降噪:空间域 vs 变换域
传感器噪声主要分两类:光子散粒噪声(泊松分布)和读出噪声(高斯分布)。传统降噪方法大致分两派:
| 方法 | 原理 | 优缺点 |
|---|---|---|
| 空间域滤波(如双边滤波、NLM) | 在像素邻域内加权平均 | 效果好,但计算量大;边缘保持能力有限 |
| 变换域滤波(如小波、BM3D) | 在频域或变换域处理 | 降噪能力强,但实时性差,端侧跑不动 |
我曾经在某个手机项目里试过 BM3D 做降噪,效果确实惊艳。但一上端侧,帧率直接掉到 15fps。后来我换成了 5x5 双边滤波 + 时域降噪的组合,才勉强稳住 30fps。说白了,端侧就是戴着镣铐跳舞。
2.1.3 HDR 合成:多帧融合的艺术
HDR 的核心思路很简单:拍多张不同曝光的图,然后合成一张高动态范围的图。传统做法包括:
- 多帧合成:短曝 + 中曝 + 长曝,三帧融合
- 局部 tone mapping:把高动态范围映射到 8bit 显示空间
- 鬼影消除:运动物体在多帧间不一致,需要检测并去除
这里有个坑——多帧合成对运动场景非常敏感。我记得有一次在夜景模式下拍行人,三帧之间人走了两步,合成结果直接出现了半透明鬼影。后来我们加了运动检测 mask,才把这个问题压下去。
2.1.4 3A:自动曝光、自动白平衡、自动对焦
3A 是 ISP 的「大脑」。它不直接处理图像,而是控制整个流水线的参数:
- AE(自动曝光):根据场景亮度调整曝光时间和增益
- AWB(自动白平衡):消除色温偏差,让白色看起来是白的
- AF(自动对焦):通过对比度检测或相位检测找到最清晰的对焦位置
3A 的难点在于「实时性」和「稳定性」的平衡。我见过一些方案,AE 收敛速度很快,但画面会来回闪烁——这就是稳定性没做好。端侧尤其要注意,3A 的反馈周期不能太长,否则用户会感觉到明显的「呼吸效应」。
2.2 深度学习 ISP:端到端的革命
传统 ISP 的问题在于:每个模块都是独立设计的,参数靠人工调优。深度学习 ISP 的思路完全不同——用一个神经网络直接完成从 RAW 到 RGB 的映射。
说白了,就是把整个流水线压缩成一个模型。
我的建议:不要一上来就想着用深度学习替代所有模块。先找到传统 ISP 中最薄弱的环节(比如低光照下的降噪),用深度学习做局部替换,效果往往更可控。
2.2.1 端到端 vs 模块化
两种架构的对比,我整理了一张表:
| 维度 | 传统 ISP | 深度学习 ISP |
|---|---|---|
| 架构 | 模块化串行 | 端到端神经网络 |
| 参数调优 | 人工调参,依赖经验 | 数据驱动,自动学习 |
| 计算开销 | 各模块独立,总开销可控 | 单模型,但计算量大 |
| 泛化能力 | 对特定场景调优后效果好 | 数据覆盖广则泛化强 |
| 端侧部署 | 成熟,硬件加速友好 | 需要模型轻量化 |
你可能会问:既然深度学习这么好,为什么还要学传统 ISP?原因很简单——数据。深度学习 ISP 需要大量配对数据(RAW + 理想 RGB),而这类数据的采集成本极高。我在项目中就吃过这个亏,花了三个月采集数据,结果模型在真实场景下还是崩了。
2.2.2 深度学习 ISP 的典型架构
目前主流的深度学习 ISP 架构大致分三类:
- U-Net 变体:编码器-解码器结构,适合像素级预测
- GAN 架构:生成器 + 判别器,适合风格迁移和细节增强
- Transformer 架构:自注意力机制,适合全局依赖建模
但注意,这些架构在端侧都跑不动。我们后面会花大量篇幅讲怎么把它们「瘦身」到能在手机芯片上实时运行。
2.3 传统 vs 深度学习:一张图看懂
下面这张 SVG 图,是我自己画的。它把两种 ISP 的核心流程放在一起对比,你看完应该能有个全局印象。
2.4 端侧部署的挑战:为什么传统 ISP 还没被淘汰
看到这里,你可能会觉得深度学习 ISP 是万能的。但现实是,目前绝大多数手机 ISP 仍然是传统方案。原因有三:
- 功耗:深度学习模型跑在 NPU 上,功耗比硬件 ISP 高一个数量级
- 延迟:端到端模型动辄几十毫秒,而传统 ISP 可以做到 5ms 以内
- 稳定性:深度学习模型在 corner case 下可能崩,传统 ISP 则非常稳定
注意:不要盲目追求「全端到端」。我在一个项目中尝试用单个模型替代整个 ISP,结果在暗光场景下出现了严重的色彩偏移。后来我们改成了「传统 ISP + 深度学习降噪增强」的混合方案,效果和稳定性都达标了。
2.5 小结:两条路,各有千秋
传统 ISP 像是一个经验丰富的老工程师——稳定、可靠、可预测。深度学习 ISP 则像一个天才少年——潜力巨大,但需要调教。
在端侧 AI ISP 的实践中,我的建议是:先理解传统 ISP 的每个模块在干什么,然后用深度学习去解决传统方案解决不好的问题。比如低光照降噪、超分辨率、HDR 合成中的鬼影消除——这些是深度学习真正能发挥优势的地方。