134、RealBasicVSR实战:真实场景视频超分的端到端解决方案
去年年底帮一个安防客户做监控视频增强,对方甩过来一段夜间停车场录像,噪点大得像雪花屏,人脸根本看不清。我试了EDVR、BasicVSR这些经典模型,结果要么把噪点也放大了,要么把车牌上的数字磨成了马赛克。直到翻到RealBasicVSR这篇论文,才算是找到了真正能落地的方案。
真实场景的坑,论文里不会告诉你
先说说为什么BasicVSR在真实场景下翻车。BasicVSR的退化假设是双三次下采样,也就是理想化的模糊+降采样。但真实监控视频的退化链条复杂得多:传感器噪声、压缩伪影、运动模糊、光照变化,这些因素叠加在一起,双三次模型根本扛不住。
RealBasicVSR的核心改进在于两点:一是引入了一个二阶退化模型,模拟真实场景中多次退化叠加的过程;二是在训练时加入了噪声和模糊的随机组合,让模型学会区分“该保留的纹理”和“该去掉的噪声”。但光看论文是不够的,实际跑代码时踩的坑比论文里写的多十倍。
环境配置:别在CUDA版本上翻车
先拉代码,官方仓库地址我就不贴了,直接搜“RealBasicVSR”就能找到。环境配置这块我踩过一个大坑:官方要求PyTorch 1.7以上,但实测1.10版本跑训练会报“torch.cuda.amp”相关的错误。最后锁定在PyTorch 1.9.0 + CUDA 11.1这个组合,稳定跑通。