FastDVDnet快速视频去噪高分PSNR背后的3个训练技巧:SVD正交化、学习率调度与数据增强
【免费下载链接】fastdvdnetFastDVDnet: A Very Fast Deep Video Denoising algorithm项目地址: https://gitcode.com/gh_mirrors/fa/fastdvdnet
FastDVDnet 是一款快速深度学习视频去噪算法(CVPR 2020 口头报告),它不做光流估计,仅靠一个小型 U-Net 就能实时去除视频中的高斯噪声,在 DAVIS、Set8 基准上取得当时最优的 PSNR 与运行速度。很多人复现时发现:网络结构并不复杂,真正拉开 PSNR 差距的是训练阶段的3个技巧。本文带你逐一拆解:SVD 正交化正则化、两阶段学习率调度、以及一套轻量数据增强策略。
🎯 先认识 FastDVDnet:快且准的视频去噪网络
FastDVDnet 的思路非常"反直觉":传统视频去噪算法(如 V-BM4D、ViDeNN)需要估计帧间运动做补偿,计算量巨大;而 FastDVDnet 直接输入 5 帧带噪图像 + 噪声强度图,用两级去噪块(先各去一次噪、再联合去噪)输出中心帧,全程无光流。
在 DAVIS 测试集上,它对 10~50 各档噪声水平的 PSNR 全面领先同期方法:
速度上更是数量级领先:
那 PSNR 红利从哪来?答案在 train_fastdvdnet.py 和 utils.py 的训练细节里。
🔬 技巧一:SVD正交化正则化,让卷积滤波器互不冗余
核心思想:卷积层的每个滤波器如果高度相似(冗余),网络表达能力就会打折扣。FastDVDnet 在训练每 10 步后,对所有卷积层做一次正交化:
- 把该层滤波器矩阵做 SVD 分解
W = U · Σ · Vᵀ; - 丢弃奇异值 Σ,直接用
U · Vᵀ替换原权重——相当于把所有奇异值强制设为 1; - 结果:滤波器之间两两正交,"信息利用率"更高,且起到了类似 L2 正则的效果,抑制过拟合。
实现见 utils.py 中的svd_orthogonalization(约 300-330 行),由训练循环里model.apply(svd_orthogonalization)批量作用于每个 Conv 层。
两个容易被忽视的细节:
- 只在训练期生效:正交化只改权重数值,不破坏推理结构,因此验证/测试用的就是正交化后的模型,PSNR 是"真实"提升;
- 不是全程开启:它在训练后期被刻意关闭(见技巧二),这直接影响最终 PSNR。
📉 技巧二:两阶段学习率调度,与正交化"接力"
FastDVDnet 的学习率调度由 train_common.py 的lr_scheduler函数控制(约 56-72 行),默认配置是 80 个 epoch,milestone 设在[50, 60]:
| 阶段 | Epoch 区间 | 学习率 | 正交化 |
|---|---|---|---|
| 粗调阶段 | 0 - 50 | 1e-3 | ✅ 开启(每10步一次) |
| 精调阶段 | 50 - 60 | 1e-4 | ✅ 开启 |
| 收敛阶段 | 60 - 80 | 1e-6 | ❌ 关闭 |
为什么后 20 个 epoch 要关掉正交化?因为 SVD 正交化对权重是"暴力"扰动——前期它帮助跳出局部最优、约束冗余;但进入极小学习率的收敛阶段后,继续扰动只会让模型无法精细贴合数据。lr_scheduler在越过第二个 milestone 时返回reset_orthog=True,训练主循环随即把正交化标志置为关闭,完成"正则 → 精调"的接力。
这个"学习率三档递减 + 定时停正则"的组合拳,是高 PSNR 的关键之一。
🎲 技巧三:数据增强,9 种变换 + 随机噪声强度
FastDVDnet 的增强策略集中在 utils.py 的normalize_augment函数(约 18-64 行),非常"经济实惠"却有效:
- 几何变换 8 选 1:恒等、上下翻转、90°/180°/270° 旋转,以及"旋转+翻转"组合,共 9 种操作;权重设定为 1/4 概率保持不变,其余均匀分布——既扩大多样性,又避免变换过度;
- 常数偏置噪声(add_csnt):以 1/9 概率给整段序列加一个均值随机、标准差约
5/255的整体亮度扰动,模拟曝光波动,提升鲁棒性; - 随机噪声强度:每个 batch 内每张图的噪声标准差在
[5, 55]/255区间独立随机采样,噪声图直接作为模型输入通道(噪声感知机制)。这让一个模型通吃全部噪声档位,测试时无需为每个 sigma 单独训练; - 时空随机裁剪:数据由 DALI VideoReader 在 GPU 上解码 mp4(dataloaders.py),每个样本取 5 帧时序片段、随机裁出 96×96 块,帧间步长 3,每 epoch 采样 25.6 万块、batch size 64。
这套增强的妙处在于几乎零额外开销:所有变换都是张量原地操作,不引入光流或磁盘 I/O,与"快速"的项目定位一致。
🧩 小结:3个技巧如何协同出高分 PSNR
SVD正交化(0-60 epoch)→ 抑制滤波器冗余、防过拟合 两档学习率递减 → 从粗到细收敛 增强后20 epoch 关闭正交化 → 小学习率精细打磨 随机sigma输入 → 单模型泛化全噪声区间复现 FastDVDnet 的高 PSNR,网络结构只是入场券——正交化正则 + 阶梯学习率 + 低开销增强三者缺一不可。如果你想动手实验,可以从 train_fastdvdnet.py 的--no_orthog、--milestone、--noise_ival参数入手,分别观察关闭正交化、调整里程碑对验证 PSNR 的影响,效果会非常直观。
【免费下载链接】fastdvdnetFastDVDnet: A Very Fast Deep Video Denoising algorithm项目地址: https://gitcode.com/gh_mirrors/fa/fastdvdnet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考