要点
- 两类方法,排序相反。保真组(SparkVSR-fast、ReCaVSR、RelayVSR)的 PSNR ≥ 27、LPIPS 最好;感知组(FlashVSR、SwiftVR、FastVR)的 MUSIQ 在 65–68,比 GT 本身(60.8)还高,但 PSNR 低于 bicubic,说明它们在"脑补"锐利纹理。
- 时序稳定性(E*warp,用 GT 光流):SparkVSR-fast 最稳;RelayVSR、SwiftVR、FastVR 比 bicubic 还差,可能有闪烁。
- 初步结论:n = 10 clip,而且这份 UDM10 的 LQ 带真实退化(bicubic 只有 26.02 dB),绝对数值不能和其他论文里的 UDM10 直接比。
效果对比
拖动画面上的分割线对比两个方法;视频模式下两路同步播放;放大网格用来对比同一位置的细节。
每段只有 32 帧(24 fps 下约 1.3 s),默认 0.5× 循环播放。视频是 H.264 CRF 16 编码,做精细对比请用静帧。
放大网格:点击参考图选择位置(帧与 clip 同上方)
保真 vs 感知
横轴 PSNR(保真,越右越好),纵轴 MUSIQ(无参考感知质量,越上越"锐")。虚线是 GT 自身的 MUSIQ。
指标表
点列名排序。每列最好的值加粗(只在完整跑完的方法里比,不含 GT)。↑ 越大越好,↓ 越小越好。
效率
UDM10 上单个 clip(32 帧,输出 1272×720)的推理时间,单张 H200,bf16。
⚠️ 初步数字,不能当速度结论:
720p × 32 帧太短,固定开销占比大;有的方法测前做了预热,有的是冷启动(见"预热"列);另外从约 20:10 UTC 起,这台机器的 GPU 和其他用户的任务共享。正式测速会单独做分辨率扫描(720p → 5872²),在独占 GPU 上跑。
高分辨率的初步发现(5872² 全景单面)
- FlashVSR-tiny:1468² 的面(输出 5872²)整面跑会 OOM。KV cache 在
kv_ratio=3、5888² 下常驻约 200 GB,和帧数无关,单卡 141 GB 也放不下。必须做空间切块:768² 输入 tile × 33 帧 = 26.4 s、峰值 81.9 GB(这次测量时 GPU 被共享)。 - InfVSR:DiT 不切块;5872² 下每个 12 帧 chunk 约 404K token,只是上一个 chunk 的 cache 就约 75 GB,同样需要切块。
- SoL-Refiner:输出 1280×768 时峰值就有 75.8 GB;在这么小的 token 规模下 SoL-Engine 没有加速。
方法
口径说明
指标
- PSNR / SSIM:BT.601 Y 通道(16–235),不裁边,99 dB 封顶,和 BasicSR 实现一致。
- LPIPS:AlexNet v0.1;DISTS、MUSIQ(KonIQ)、CLIP-IQA(基础版)、MANIQA(KonIQ)都用 pyiqa,无参考指标取 32 帧平均。
- DOVER:完整 DOVER.pth,官方 [0,1] 归一化;technical 分支的采样位置用 seed 0 固定,所有方法相同。
- E*warp (GT flow):光流和遮挡 mask 都用 GT 计算(RAFT-things,迭代 20 次),所有方法在同一批像素上比较,×1e-3。
- tLPIPS:TecoGAN 定义,mean |LPIPS(Ot,Ot+1) − LPIPS(Gt,Gt+1)| ×100。它衡量的是帧间变化幅度和 GT 是否一致,不是稳定性本身。
运行
- LQ 不满足模型的尺寸或帧数要求时,先在右下 reflect pad,时间上复制末帧,跑完再裁回;不做中心裁剪,不丢帧。
- 各方法都用官方默认参数(color-fix、稀疏比例、窗口大小等),seed 0,bf16。ReCaVSR (wavelet) 是额外加的变体。
- SwiftVR 本身是同尺寸复原模型,按上游做法先 bilinear ×4。SoL-Refiner 的路径是:LQ pad 到 320×192 → Lanczos 2× → 2× latent upsampler → 1 步 DiT。
- 测试数据是 UDM10(SparkVSR 版本),LQ 带真实退化。