Unblur-SLAM: Dense Neural SLAM for Blurry Inputs¶
会议: CVPR 2026
arXiv: 2603.26810
代码: https://github.com/SlamMate/Unblur-SLAM.git
领域: 3D 视觉 / 神经 SLAM
关键词: 模糊鲁棒 SLAM、3DGS、单帧去模糊、子帧建模、混合 bundle adjustment
一句话总结¶
Unblur-SLAM 不是简单把去模糊网络塞进 SLAM 前端,而是围绕“哪些模糊帧可以先去模糊再跟踪、哪些模糊帧必须直接在 3D 空间里建模”这一关键决策,设计了模糊检测、物理约束去模糊、3D Gaussian blur refinement 和严重模糊 fallback 的完整流水线,因此能同时处理运动模糊和散焦模糊,并显著提升跟踪与重建质量。
研究背景与动机¶
大多数 SLAM 系统默认输入帧足够清晰。无论是依赖特征点的传统方法,还是更现代的 dense/neural SLAM,本质上都需要在相邻视图间建立可靠对应关系。一旦图像受运动模糊或散焦模糊影响,前端跟踪变弱,后端重建也会被拖垮。
现有去模糊 SLAM 工作主要有两个问题。第一,很多方法默认模糊都来自相机运动,因此重点建模 motion blur,而忽略 defocus blur。可现实数据并非如此,手机、手持相机、室内弱光采集里二者常同时出现。第二,许多 blur-aware SLAM 方法把所有帧都当成模糊帧处理,这会显著增加计算成本,也不符合真实数据里“模糊帧只占一部分”的事实。
作者因此提出一个更精细的问题设置:
- 并不是所有帧都需要昂贵的模糊优化。
- 并不是所有模糊帧都能靠单帧去模糊网络修好。
- 一旦单帧去模糊失败,系统不应直接崩掉,而应切换到更稳的 3D 建模方式。
换句话说,SLAM 需要的不是一个“万能去模糊器”,而是一套对不同模糊程度与模糊类型都能做分流处理的系统。Unblur-SLAM 就是在这个前提下设计的。
方法详解¶
整体框架¶
系统先对输入帧做模糊量评估,再根据结果分成三类:
- sharp frames:清晰帧,直接进入 Droid-SLAM 前端和 3DGS 后端,不做额外昂贵处理。
- successfully deblurred blurry frames:模糊但可以被单帧去模糊网络修复的帧,先去模糊,再进入跟踪与映射,同时在后端用残余模糊模型继续细化。
- failed blurry frames:模糊太重或类型太复杂,单帧去模糊失败。这类帧不再强行送进 tracker,而是通过多子帧渲染和 blur network 直接在 3DGS 空间中解释其成像过程。
这个三分流是整篇文章的核心。它避免了两个极端:既不假设所有帧都必须做重型模糊优化,也不在去模糊失败时简单丢弃信息。
关键设计¶
-
模糊检测与帧分流:
- 功能:判断一帧到底该走普通 SLAM 流程、去模糊后 SLAM,还是直接进入 3D blur fallback。
- 核心思路:作者先构建一个包含真实与半合成数据的模糊检测 benchmark,比较 39 种图像质量/模糊指标,最后选择 ARNIQA 作为默认 blur detector。运行时若模糊分数低于阈值则视为清晰帧;否则进入去模糊分支,并进一步用 Laplacian ratio 等标准判断去模糊是否成功。
- 设计动机:系统不该把所有帧一视同仁。只有先把模糊量识别出来,才能把计算预算用在真正需要的地方。
-
物理约束单帧去模糊网络:
- 功能:给前端跟踪和深度估计提供尽可能接近中曝光时刻的清晰图像。
- 核心思路:作者采用两阶段训练。第一阶段在 RED、GoPro、ReplicaBlurry 等半合成 motion blur 数据上训练,让网络学会恢复曝光中间帧,而不是只做锐化;第二阶段在 DPDD defocus 数据集上微调,增强散焦鲁棒性。训练时使用基于成像物理的中帧约束,避免网络学到与 3D 几何不一致的“伪清晰纹理”。
- 设计动机:I2-SLAM 一类方法已经表明,普通 2D 去模糊网络若不考虑几何一致性,常会产生看似清晰但不利于多视图匹配的纹理。作者因此强调恢复中曝光真值,而不是纯视觉锐化。
-
3DGS 残余模糊建模与严重模糊 fallback:
- 功能:对去模糊仍不完美的帧继续建模残余模糊;对去模糊失败的帧提供稳健备选路径。
- 核心思路:系统以 Splat-SLAM 式 3D Gaussian Splatting 作为地图表示。对于成功去模糊的帧,作者借助 Blur Proposal Network 估计逐像素卷积核和 mask,对渲染图像做深度相关的残余去模糊与细节增强。对于失败帧,则沿虚拟相机轨迹渲染多个子帧,对每个子帧施加 blur proposal,再平均形成观测,直接拟合模糊成像过程。
- 设计动机:轻中度模糊帧更适合“先修后跟踪”,重度模糊帧则更适合“在 3D 里解释它为什么模糊”。这比强迫所有帧走同一条路径更稳健。
损失函数 / 训练策略¶
后端优化分为三类损失。
- Sharp frame loss:对清晰帧赋予更大权重,作为强几何和外观锚点。
- Deblur frame loss:对成功去模糊的帧做多尺度 RGB 与深度一致性优化,并加上稀疏 mask 正则。
- Fail frame loss:对失败帧使用多子帧合成后的 RGB/Depth 误差优化。
总损失是所有帧的加权和,且 w_sharp > w_deblur = w_fail。作者同时保留 sliding-window BA、loop closure 和 global BA,并在全局优化里对 Gaussian 尺度加入正则,防止过度拉伸。
实验关键数据¶
主实验¶
论文分别在极端模糊合成场景、离线去模糊标准集以及真实 SLAM 数据集上测试,既看跟踪 ATE,也看重建 PSNR/SSIM/LPIPS。
| 数据集 / 方法 | 关键指标 1 | 关键指标 2 | 结果 |
|---|---|---|---|
| ArchViz-1 MBA-SLAM | ATE | PSNR | 0.0075 / 28.45 |
| ArchViz-1 Ours | ATE | PSNR | 0.0075 / 28.76 |
| ArchViz-2 MBA-SLAM | ATE | PSNR | 0.0036 / 30.16 |
| ArchViz-2 Ours | ATE | PSNR | 0.0027 / 32.71 |
| ArchViz-3 MBA-SLAM | ATE | PSNR | 0.0141 / 27.85 |
| ArchViz-3 Ours | ATE | PSNR | 0.0067 / 30.09 |
| Deblur-NeRF offline SOTA (CoMoGaussian) | PSNR / SSIM / LPIPS | - | 27.85 / 0.8431 / 0.0822 |
| Ours | PSNR / SSIM / LPIPS | - | 29.49 / 0.9213 / 0.0728 |
这张表有两个信息点。第一,Unblur-SLAM 在 ArchViz 这种几乎全是极端模糊的合成场景里,比 MBA-SLAM 更稳,特别是第三个序列 ATE 和 PSNR 都提升明显。第二,更有冲击力的是,在 Deblur-NeRF 这个离线去模糊 benchmark 上,在线方法居然还能超过一批离线方法,说明其 3D blur modeling 非常有效。
真实数据与运行效率¶
作者还在 TUM RGB-D 与 IndoorMCD 上测试轨迹误差,并报告 TUM 上的映射质量和运行速度。
| 实验 | 对比项 | 指标 | 结果 |
|---|---|---|---|
| TUM 跟踪 | Droid-SLAM | ATE[m] | 0.380 |
| TUM 跟踪 | Ours* | ATE[m] | 0.352 |
| TUM 跟踪 | Ours | ATE[m] | 0.336 |
| MCD 跟踪 | Droid-SLAM | ATE[m] | 0.138 |
| MCD 跟踪 | Ours | ATE[m] | 0.128 |
| TUM 映射 fr1_desk | I2-SLAM / Ours | PSNR | 27.23 / 28.03 |
| TUM 映射 fr2_xyz | I2-SLAM / Ours | PSNR | 32.06 / 31.14 |
| TUM 映射 fr3_office | I2-SLAM / Ours | PSNR | 28.91 / 29.22 |
| 运行速度 | Splat-SLAM | FPS | 1.24 |
| 运行速度 | I2-SLAM | FPS | 0.095 |
| 运行速度 | Ours w/o ref. | FPS | 0.85 |
| 运行速度 | Ours | FPS | 0.74 |
关键发现¶
- 模糊分流非常重要。若所有帧都走重型 blur refinement,系统会明显更慢;若所有模糊帧都简单喂给 tracker,又会导致跟踪失败。Unblur-SLAM 正是靠分流拿到了稳定性与速度之间的平衡。
- 物理约束的中帧去模糊训练是必要的。作者特别指出,普通单帧去模糊若缺少 3D 一致性约束,反而会伤害 SLAM。
- 严重模糊 fallback 并不是少数边角情况。只要相机快速运动或存在明显散焦,这条路径就能避免系统直接丢帧或崩溃。
- 尽管最终速度仍低于纯 Splat-SLAM,但比 I2-SLAM 快很多,说明这套系统还保留了一定的在线可用性。
亮点与洞察¶
- 这篇论文最值得肯定的是系统观。很多相关工作只解决“去模糊更清晰”或“SLAM 更鲁棒”中的一个点,本文则真正围绕整条 pipeline 的失败模式设计了不同分支。
- 作者没有把单帧去模糊神化。它被当作前置修复器,但一旦失败,系统立刻切换到 3D 空间的模糊建模,这是非常成熟的工程思路。
- 成功去模糊帧和失败帧使用不同损失与不同更新策略,也说明作者理解“模糊不是单一强度标量,而是对成像过程的不同扰动”。
- 在线方法在 Deblur-NeRF 上超过离线方法这一点很亮眼,说明 3DGS + blur network 的组合不只是为了 SLAM 服务,本身也具备很强的去模糊能力。
局限与展望¶
- 虽然作者已经比很多 blur-aware SLAM 更快,但 0.74 FPS 与真正实时系统仍有差距,尤其部署在移动平台上时会更吃紧。
- 系统目前主要针对静态场景。若场景中存在明显动态物体,模糊来源与几何变化会耦合,现有模型未必能稳定处理。
- 严重模糊分支依赖虚拟子帧与 blur proposal 网络,参数较多、链路较长,后续可探索更紧凑的表示方式。
- 当前 blur detector 使用固定阈值策略,对不同设备和不同曝光设置的泛化能力仍需要更多外部测试。
- 一个很自然的后续方向,是把 3D foundation model 的空间先验进一步并入 blur-aware SLAM,让模型不只会“看清”,还会“更懂几何”。
相关工作与启发¶
- vs MBA-SLAM / Deblur-SLAM:这些方法主要聚焦 motion blur,且通常默认所有帧都模糊;Unblur-SLAM 则同时覆盖 motion blur 与 defocus blur,并显式处理 sharp/blurry/failure 三类帧。
- vs I2-SLAM:I2-SLAM 已注意到成像过程建模的重要性,但它对单帧去模糊的一致性利用不够成功;本文通过物理约束训练和 3DGS refinement 把这条路走通了。
- vs 离线 3DGS 去模糊方法:像 BAGS、CoMoGaussian 注重离线高质量重建,本文则把这些思想带进在线 SLAM,并增加对严重模糊帧的 fallback。
- 对研究的启发是,感知前处理模块不应孤立设计。真正影响系统表现的,往往是“前处理失败以后怎么办”。Unblur-SLAM 的分流思想在低光、噪声、雨雾等其他困难成像条件下也很值得借鉴。
评分¶
- 新颖性: ⭐⭐⭐⭐ 同时处理运动模糊与散焦模糊,并把去模糊失败分支系统化纳入 SLAM,组合设计很强。
- 实验充分度: ⭐⭐⭐⭐ 合成、真实、离线 benchmark 和运行速度都测了,但更多真实长序列和动态场景仍值得补充。
- 写作质量: ⭐⭐⭐⭐ 方法链路较长,但组织清楚,系统各模块职责明确。
- 价值: ⭐⭐⭐⭐⭐ 对真实世界 SLAM 落地很有意义,尤其适合模糊频发的手持和移动设备场景。
相关论文¶
- [CVPR 2026] SGAD-SLAM: Splatting Gaussians at Adjusted Depth for Better Radiance Fields in RGBD SLAM
- [CVPR 2026] VGGT-SLAM++: Visual SLAM with DEM-Based Covisibility and Local Bundle Adjustment
- [ECCV 2024] SGS-SLAM: Semantic Gaussian Splatting for Neural Dense SLAM
- [CVPR 2026] DROID-W: DROID-SLAM in the Wild
- [ECCV 2024] I²-SLAM: Inverting Imaging Process for Robust Photorealistic Dense SLAM