1. 课程导论与ISP基础:深度学习降噪在ISP中的位置
各位同学好,我是这门课的主讲。在正式开始之前,我想先聊聊——为什么我们要把深度学习降噪塞进ISP里?
我做了快十年的图像算法部署,从传统降噪一路做到深度学习。说实话,早期我对深度学习进ISP是持怀疑态度的。直到有一次,我在一个暗光场景的项目里,传统降噪怎么调都压不住彩噪,最后硬着头皮上了个小模型……效果直接让客户闭嘴了。从那以后,我的态度就变了。
这一章,我们先打好基础。搞清楚深度学习降噪在整个ISP Pipeline里到底站在哪个位置,以及为什么非它不可。
1.1 传统ISP Pipeline回顾
先看一张经典的ISP流程。你想想看,从Sensor拿到RAW数据到最终输出一张能看的图,中间经历了什么?
核心观点:深度学习降噪通常插入在RAW域处理阶段,替代或增强传统的BM3D、NLM等降噪模块。
这张图里,我把深度学习降噪标成了红色。为什么放在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。
具体来说,学完这门课,你应该能:
- 理解ISP Pipeline中降噪模块的接口规范
- 掌握深度学习降噪模型的轻量化与量化方法
- 学会将模型导出为ONNX/TensorRT/MNN等部署格式
- 能在NPU或GPU上完成端到端推理
- 具备调试和优化部署性能的能力
前置知识方面,我建议你具备以下基础:
- Python编程:能写脚本、调库,至少用过PyTorch或TensorFlow
- 图像处理基础:知道什么是RAW、RGB、YUV,了解基本的滤波操作
- 深度学习基础:理解CNN、卷积、池化、损失函数这些概念
- 一点点硬件常识:知道CPU、GPU、NPU的区别,了解量化是什么
如果你还不太熟悉ISP,没关系。这一章之后,我会专门花两章讲ISP的核心模块,保证你能跟上。
最后说一句:这门课不是学术复现,而是实战。我会把我在项目中踩过的坑、总结的经验、调优的技巧,全部摊开来讲。你跟着做一遍,就能上手。