VDMamba·AutoDL 复现笔记 · 学习笔记

VDMamba·AutoDL 复现笔记 · 学习笔记

论文:Semi-Supervised State-Space Model with Dynamic Stacking Filter for Real-World Video Deraining(CVPR 2025)

代码:sunshangquan/VDMamba(本地副本 H:\zj\RainMamba\VDMamba-main)

复现平台:AutoDL 云 GPU 实例

复现范围:仅推理(论文理解向),不含训练

整理日期:2026-10-08

目录

  • 摘要
  • 一、项目辨析与复现目标
    • [1.1 VDMamba 不是 RainMamba](#1.1 VDMamba 不是 RainMamba)
    • [1.2 复现目标界定](#1.2 复现目标界定)
  • 二、代码依赖审查结论
    • [2.1 纯 Python 依赖](#2.1 纯 Python 依赖)
    • [2.2 CUDA 扩展依赖(三个)](#2.2 CUDA 扩展依赖(三个))
    • [2.3 预训练权重现状](#2.3 预训练权重现状)
  • [三、AutoDL 实例与镜像选择](#三、AutoDL 实例与镜像选择)
    • [3.1 GPU 架构硬约束](#3.1 GPU 架构硬约束)
    • [3.2 镜像三段式选择法](#3.2 镜像三段式选择法)
  • 四、两阶段环境搭建流程
    • [4.1 Phase 1:无卡模式(纯 Python 依赖)](#4.1 Phase 1:无卡模式(纯 Python 依赖))
    • [4.2 Phase 2:GPU 模式(CUDA 扩展)](#4.2 Phase 2:GPU 模式(CUDA 扩展))
    • [4.3 编译要点](#4.3 编译要点)
  • 五、推理测试与指标复现
    • [5.1 测试命令范式](#5.1 测试命令范式)
    • [5.2 指标计算](#5.2 指标计算)
    • [5.3 省流量技巧](#5.3 省流量技巧)
  • 六、成本核算(仅推理)
  • 七、常见坑点清单
  • [附录 A:术语速查](#附录 A:术语速查)
  • [附录 B:复现自查清单](#附录 B:复现自查清单)

摘要

本文记录在 AutoDL 云平台复现 CVPR 2025 视频去雨模型 VDMamba 的完整流程。经代码依赖审查,确定其推理链路依赖 PyTorch 2.1.1 与三个 CUDA 扩展;采用无卡模式与 GPU 模式两阶段搭建策略压缩成本,实测仅推理复现的总开销可控制在十元以内。


一、项目辨析与复现目标

1.1 VDMamba 不是 RainMamba

本地目录 H:\zj\RainMamba\VDMamba-main 中的项目,与 RainMamba(TonyHongtaoWu/RainMamba,ECCV 2024)是两个不同的工作,极易混淆:

维度 RainMamba VDMamba
论文 Rain Removal with Locality-Enhanced State Space Models Semi-Supervised SSM with Dynamic Stacking Filter
会议 ECCV 2024 CVPR 2025
任务 视频去雨(合成雨为主) 真实世界视频去雨(半监督)
框架依赖 MMEditing / mmcv-full 无 MM 系列,纯 PyTorch
特色模块 局部增强状态空间模型 LLM 动态堆叠滤波器 DSF + S3ML/TSML

两项目均以 Mamba 状态空间模型为核心构件,但代码体系互不兼容。复现前必须先确认目标是哪一个。

1.2 复现目标界定

本文定位为"论文理解向"复现:跑通官方预训练权重的测试推理,复现论文中 NTURain / RainSynLight25 / RainSynComplex25 三个数据集上的 PSNR / SSIM 指标,不涉及训练与半监督流程。


二、代码依赖审查结论

复现的第一步不是开机器,而是通读代码的 import 链 。对 test_video_rain.py 及其引用模块逐层审查后,得到最小依赖集:

2.1 纯 Python 依赖

包 版本约束 说明
torch 2.1.1+cu121 README 指定
torchvision 0.16.1 README 所写 0.10.1 系笔误,须与 torch 2.1.1 配套
numpy 1.26.4 torch 2.1.1 按 NumPy 1.x 编译,2.x 会报错
einops --- s3ml/tsml 重排算子
opencv-python 4.8.1.78 与 numpy 1.x 配套
scikit-image / matplotlib / natsort / pillow --- 指标计算与数据读取

2.2 CUDA 扩展依赖(三个)

扩展 引用位置 获取方式
mamba_ssm networks/s3ml.py、tsml.py cu122+torch2.1+py310 有官方预编译 wheel
causal_conv1d networks/s3ml.py、tsml.py 同上,有预编译 wheel
correlation_cuda networks/LiteFlowNet*.py 必须源码编译,且需先清除仓库携带的 build/ 旧产物

关键结论:本项目不需要 mmcv/mmedit(那是 RainMamba 的依赖),复现门槛显著更低。

2.3 预训练权重现状

仓库 checkpoints/ 已附带三个数据集的完整权重(nturain5_vdmamba、rainsynlight25_vdmamba、rainsyncomplex25_vdmamba,各 90 MB),无需再从 Google Drive 下载 。注意 README 测试命令中的 -epoch 25/82 与实际不符------三个权重文件均为 model_epoch_100.pth,统一使用 -epoch 100。


三、AutoDL 实例与镜像选择

3.1 GPU 架构硬约束

mamba_ssm 与 causal_conv1d 的预编译 wheel 仅覆盖 sm_80 及以后架构。选卡原则:

  • 可选:RTX 3090(sm_86)、RTX 4090(sm_89)、A5000、A40
  • 禁选:V100(sm_70)、T4(sm_75)、P100------wheel 不支持,源码编译亦繁琐

3.2 镜像三段式选择法

创建实例时在「框架镜像 → PyTorch」下选择:

复制代码
PyTorch 2.1.1 / Python 3.10 / CUDA 12.1

CUDA 12.1 的选定依据:与 torch cu121 构建对应,且兼容 mamba 官方 cu122 wheel 的 ABI。若该精确组合缺货,任何 PyTorch 2.1.x + CUDA 12.1 + Python 3.10 组合均可;即便 Python 版本不符,搭建脚本会自建 python=3.10 的 conda 环境兜底。


四、两阶段环境搭建流程

核心思路:把不花钱的步骤放进无卡模式(约 0.1 元/小时),只有编译与推理才进 GPU 模式。

4.1 Phase 1:无卡模式(纯 Python 依赖)

  1. 将本地 VDMamba-main 整体打包上传至 /root/autodl-tmp/(自带权重约 270 MB);
  2. 运行 bash setup_vdmamba_autodl.sh phase1:创建 conda 环境 vdmamba,安装 torch 2.1.1+cu121 及全部纯 Python 依赖;
  3. 期间完成测试数据集下载:NTURain(SPAC-SupplementaryMaterials 仓库)、RainSynLight25 / RainSynComplex25(J4RNet 仓库),各 1~3 GB,走 AutoDL 学术加速。

4.2 Phase 2:GPU 模式(CUDA 扩展)

  1. 关机 → 切换 GPU 模式开机;
  2. 运行 bash setup_vdmamba_autodl.sh phase2 /root/autodl-tmp/VDMamba-main;
  3. 脚本策略:优先 pip 安装 mamba_ssm / causal_conv1d 预编译 wheel(命中即免编译);wheel 失配时回退源码编译(MAX_JOBS=2 防 OOM);correlation_cuda 始终源码编译;
  4. 末尾自动验证 import mamba_ssm / causal_conv1d / Correlation / networks.vdmamba.Model 全链路可导入。

4.3 编译要点

  • correlation_package 编译前必须 rm -rf build dist *.egg-info------作者机器的旧构建产物会导致链接失败;
  • 源码编译 mamba 必须在有 GPU 的环境下进行,编译系统需探测显卡真实架构(sm_86/sm_89),无卡编译产物架构不匹配。

五、推理测试与指标复现

5.1 测试命令范式

bash 复制代码
CUDA_VISIBLE_DEVICES=0 python test_video_rain.py \
    -list_filename lists/nturain_test.txt \
    -epoch 100 \
    -data_dir <Dataset_Testing_Synthetic 路径> \
    -checkpoint_dir ./checkpoints/ \
    -model_name nturain5_vdmamba

RainSynLight25 / RainSynComplex25 同理,替换 list 文件与 -model_name,并追加 -file_suffix .png。

5.2 指标计算

bash 复制代码
python comp_psnr_ssim.py --path1 <推理结果目录> --path2 <GT 目录>

将 PSNR / SSIM 与论文表格逐项对照即可验证复现质量。

5.3 省流量技巧

lists/ 目录内置 *_sub.txt 子集列表(如 nturain_test_sub.txt)。建议先用子集跑通全链路,确认无误后再跑全量,避免在调试上浪费 GPU 时长。


六、成本核算(仅推理)

环节 模式 时长 费用估算
环境搭建 + 数据下载 无卡模式 1~2 h ≈ 0.2 元
扩展安装(wheel 命中则极快) GPU 模式 0.2~1 h 0.3~2 元
三数据集全量推理 GPU 模式 1~2 h 1.5~4 元
合计 --- --- 约 3~10 元

单数据集复现约 3~5 元。相对动辄数十小时的训练复现,论文理解向推理复现的成本可以忽略。


七、常见坑点清单

  1. 项目混淆:VDMamba 与 RainMamba 是两套代码体系,环境互不通用;
  2. epoch 参数陷阱 :README 命令的 -epoch 25/82 与仓库附带权重不符,一律用 -epoch 100;
  3. torchvision 版本笔误:README 写 0.10.1,实际须装 0.16.1;
  4. NumPy 2.x 陷阱:torch 2.1.1 编译基于 NumPy 1.x,须钉住 numpy==1.26.4;
  5. 老架构显卡不可用:V100/T4/P100 无 mamba wheel 支持;
  6. correlation 旧构建残留:编译前不清 build/ 会失败;
  7. 无卡模式编译 OOM:无卡实例内存仅够跑 pip,nvcc 编译必须在 GPU 模式下进行;
  8. 代理作用域:AutoDL 学术加速仅用于 GitHub/Google 访问,pip 安装前须 unset 代理。

附录 A:术语速查

术语 含义
Mamba / SSM 状态空间模型,线性复杂度长序列建模架构
causal_conv1d Mamba 配套的因果卷积 CUDA 算子
correlation_cuda 光流网络代价体计算的 CUDA 算子(FlowNet 系)
sm_86 / sm_89 NVIDIA GPU 计算架构代号(3090 / 4090)
无卡模式 AutoDL 提供的无 GPU 低价开机模式,用于环境准备
NTURain / RainSyn 视频去雨领域标准测试集(真实/合成)
PSNR / SSIM 峰值信噪比 / 结构相似度,复原质量指标

附录 B:复现自查清单

  • 确认目标是 VDMamba(CVPR 2025)而非 RainMamba
  • 镜像:PyTorch 2.1.1 / Python 3.10 / CUDA 12.1
  • GPU:3090/4090/A5000(sm_80+)
  • Phase 1 完成:torch 2.1.1+cu121 导入正常,numpy 1.26.4
  • Phase 2 完成:mamba_ssm、causal_conv1d、Correlation 三者导入正常
  • from networks.vdmamba import Model 无报错
  • 权重路径:checkpoints/*/model_epoch_100.pth,测试命令 -epoch 100
  • PSNR/SSIM 与论文表格对照,偏差应在 ±0.1 dB 内
相关推荐
~kiss~2 小时前
LangGraph ~ 为图添加跨线程持久化
学习
xianrenli383 小时前
水肺潜水学习
学习
ACP广源盛139246256733 小时前
USB3.0 高速信号切换方案评估,LH3412 @ACP双通道差分开关硬件选型笔记
笔记·硬件架构·硬件工程·国产芯片·开关
自不量力的A同学4 小时前
Goldfish Scheme v18.11.39 发布了:迈向现代宏系统与多核并发
笔记
海里的果4 小时前
论文阅读笔记-<Alpamayo-R1 >
论文阅读·笔记
凌云若寒4 小时前
BarTender提示#807错误:无法在拥有其他许可证的Licensing Service上激活节点锁定的 Professional 版许可证 的解决办法
运维·服务器·前端·学习·软件需求
浅念-5 小时前
动态规划专题:斐波那契数列模型 + 网格路径DP(LeetCode例题全解析)
笔记·算法·leetcode·面试·职场和发展·动态规划·推荐算法
爱吃苹果的日记本5 小时前
离散数学第七课
学习·离散数学
迪丽热爱5 小时前
多媒体应用31-914(计算机硬件与体系结构)
学习