1. 课程导论与ISP基础:深度学习降噪在ISP中的位置

各位同学好,我是这门课的主讲。在正式开始之前,我想先聊聊——为什么我们要把深度学习降噪塞进ISP里?

我做了快十年的图像算法部署,从传统降噪一路做到深度学习。说实话,早期我对深度学习进ISP是持怀疑态度的。直到有一次,我在一个暗光场景的项目里,传统降噪怎么调都压不住彩噪,最后硬着头皮上了个小模型……效果直接让客户闭嘴了。从那以后,我的态度就变了。

这一章,我们先打好基础。搞清楚深度学习降噪在整个ISP Pipeline里到底站在哪个位置,以及为什么非它不可。

1.1 传统ISP Pipeline回顾

先看一张经典的ISP流程。你想想看,从Sensor拿到RAW数据到最终输出一张能看的图,中间经历了什么?

核心观点:深度学习降噪通常插入在RAW域处理阶段,替代或增强传统的BM3D、NLM等降噪模块。

传统ISP Pipeline 与 深度学习降噪插入位置 RAW输入 黑电平校正 Lens Shading 深度学习降噪 Demosaic AWB Gamma校正 CCM YUV转换 传统降噪 锐化 输出 说明 红色节点:深度学习降噪插入位置(RAW域,Demosaic之前) 绿色节点:传统降噪位置(YUV域,Demosaic之后) 两者可以共存,也可以互相替代。本课程聚焦红色路径。

这张图里,我把深度学习降噪标成了红色。为什么放在RAW域、Demosaic之前?因为RAW数据保留了最原始的传感器信息,没有经过插值、颜色校正这些非线性操作。说白了,噪声在RAW域里还是加性的、相对干净的,模型学起来更容易。

我的经验:我曾经在YUV域试过用深度学习替代传统降噪,效果也有,但细节保留不如RAW域。后来我总结——越早介入,信息损失越少。所以现在我的项目里,只要硬件算力允许,我一定把模型塞在RAW域。

1.2 为什么需要深度学习降噪

你可能会问:传统降噪用了这么多年,BM3D、NLM、双边滤波,不也挺好吗?

嗯,这里要注意。传统降噪有几个硬伤:

  • 参数调优靠经验:每个场景都要调一套参数,暗光、室内、户外完全不一样。我在项目里见过有人调了三个月参数,最后还是漏了某些场景。
  • 纹理与噪声的取舍:传统方法降噪越强,细节丢得越多。你想想看,一张人脸降完噪变成塑料质感,谁受得了?
  • 计算效率瓶颈:BM3D在CPU上跑一张1080p要几百毫秒,手机端根本扛不住。

深度学习降噪的优势在哪?我列个表,你一看就明白:

对比维度 传统降噪(BM3D/NLM) 深度学习降噪
参数调优 每场景手动调参 数据驱动,一次训练覆盖多场景
纹理保留 降噪越强,纹理越模糊 可学习纹理先验,保留细节
暗光表现 彩噪难去除,容易偏色 端到端学习,彩噪抑制好
计算效率 CPU慢,GPU加速有限 可量化部署,NPU/GPU友好
泛化能力 场景切换需重新调参 训练数据覆盖广,泛化强

避坑指南:我曾经在一个安防项目里,直接拿公开数据集训练的模型去跑夜间监控,结果彩噪是没了,但出现了伪影——因为训练数据里没有那种特定Sensor的噪声模式。后来我加了真实Sensor噪声标定数据,问题才解决。所以,数据分布一定要对齐你的目标Sensor,这是铁律。

1.3 课程目标与前置知识

这门课的目标很明确:让你能把深度学习降噪模型真正部署到ISP Pipeline里,跑在真实硬件上,而不是只停留在PyTorch里跑个demo。

具体来说,学完这门课,你应该能:

  1. 理解ISP Pipeline中降噪模块的接口规范
  2. 掌握深度学习降噪模型的轻量化与量化方法
  3. 学会将模型导出为ONNX/TensorRT/MNN等部署格式
  4. 能在NPU或GPU上完成端到端推理
  5. 具备调试和优化部署性能的能力

前置知识方面,我建议你具备以下基础:

  • Python编程:能写脚本、调库,至少用过PyTorch或TensorFlow
  • 图像处理基础:知道什么是RAW、RGB、YUV,了解基本的滤波操作
  • 深度学习基础:理解CNN、卷积、池化、损失函数这些概念
  • 一点点硬件常识:知道CPU、GPU、NPU的区别,了解量化是什么

如果你还不太熟悉ISP,没关系。这一章之后,我会专门花两章讲ISP的核心模块,保证你能跟上。

最后说一句:这门课不是学术复现,而是实战。我会把我在项目中踩过的坑、总结的经验、调优的技巧,全部摊开来讲。你跟着做一遍,就能上手。