3D Congealing: 3D-Aware Image Alignment in the Wild¶
会议: ECCV 2024
arXiv: 2404.02125
代码: https://ai.stanford.edu/~yzzhang/projects/3d-congealing/ (项目页)
领域: 3D视觉
关键词: 图像对齐, 3D canonical空间, NeRF, Score Distillation, 语义对应, DINO特征
一句话总结¶
3D Congealing将一组语义相似的无标注互联网图像对齐到共享的3D canonical空间,通过结合预训练扩散模型的SDS指导获得3D形状 + DINO语义特征匹配估计位姿和坐标映射,无需模板、位姿标注或相机参数。
背景与动机¶
传统的"图像congealing"(对齐)在2D平面上工作,只能处理视角变化较小的情况。然而互联网图像中同类物体的拍摄角度、光照、外观差异很大,2D warping无法处理大视角旋转。现有3D重建方法要么需要已知位姿(NeRF),要么需要粗略位姿初始化(SAMURAI),要么需要多视角下同一物体的图像。实际需求是:给一堆网上搜来的同类物体照片(形状、纹理都不同),把它们统一到一个3D空间里。
核心问题¶
如何在无位姿标注、无模板先验、甚至输入图像不是同一物体的情况下,将语义相似的图像集合对齐到共享的3D canonical坐标系?
方法详解¶
整体框架¶
三阶段优化pipeline(所有阶段共用一个canonical NeRF表示): 1. Textual Inversion → 找到能描述输入图像的文本embedding y 2. SDS优化 → 用MVDream+y通过Score Distillation生成canonical 3D形状θ 3. 位姿估计+坐标映射 → 用DINO特征将每张输入图像注册到3D形状上
关键设计¶
-
扩散模型先验 + Textual Inversion: 不微调扩散模型(节省内存),而是用Textual Inversion从输入图像中学习文本embedding y。然后冻结y,用SDS损失优化NeRF形状。这比DreamBooth3D的方法显著省内存,且能泛化到各种物体类别。
-
语义特征距离函数: 不用像素级photometric loss(对光照/外观变化不鲁棒),而是用DINO-V2 ViT-G/14提取的语义特征计算图像相似度。语义特征对物体身份变化容忍度高,使得不同实例间也能建立对应关系。辅以IoU mask损失保证轮廓对齐。
-
Forward/Reverse Canonical Coordinate Mapping: 建立了完整的2D↔3D双向映射:
- Forward: 2D像素→(DINO特征匹配warp到渲染图)→(NOCS渲染查3D坐标)→3D canonical坐标
- Reverse: 3D坐标→(最近邻找2D投影)→(反向warp到真实图像)→2D像素
-
两张图像间的2D对应 = image1的Forward映射 + image2的Reverse映射
-
位姿初始化策略: 不用梯度下降初始化(易陷入局部最优),而是exhaustive search:3个FoV×16方位角×16仰角 = 768个候选位姿,选语义距离最小的。
损失函数 / 训练策略¶
- Stage 1: Textual Inversion用扩散模型训练损失,1000步
- Stage 2: SDS损失(MVDream backbone)优化NeRF,10000步
- Stage 3: IoU mask损失优化位姿1000步 + 语义距离+平滑性+ℓ2正则优化坐标映射4000步
- 全流程在单卡A5000 24GB上运行
实验关键数据¶
位姿估计 (NAVI数据集, 35场景) | 方法 | 额外输入 | 旋转误差°↓ | 平移误差↓ | |------|----------|-----------|----------| | GNeRF | 无 | 较高 | 较高 | | PoseDiffusion | 无(预训练) | 中等 | 中等 | | 3D Congealing (Ours) | 无 | 最优 | 最优 | | SAMURAI | 位姿方向标注 | 相当 | 相当 |
语义对应匹配 (SPair-71k) | 方法 | Mean PCK@0.1 | |------|-------------| | ASIC | 32.1 | | DINOv2-ViT-G/14 | 55.0 | | Ours | 57.2 |
消融实验要点¶
- 去掉位姿初始化(No Pose Init): 性能显著下降——位姿优化极易陷入局部最优
- 去掉IoU损失(No IoU Loss): 性能下降——仅用初始化位姿不够精确
- 3个随机种子下结果一致性好,说明方法对canonical shape初始化鲁棒
亮点 / 我学到了什么¶
- 将SDS的3D先验能力与DINO的语义匹配能力解耦组合是一个优美的设计:SDS负责"什么是合理的3D形状",DINO负责"输入图像如何对应到3D形状"
- Textual Inversion替代DreamBooth进行图像条件化是一个聪明的省内存选择
- 分析-合成式位姿初始化(exhaustive search)虽然暴力,但对避免局部最优至关重要
- 通过3D中间表示实现跨图像对应关系,比纯2D特征匹配更能处理大视角变化
- 跨类别对齐(猫+狗→共享3D空间)展示了方法的强泛化能力
局限性 / 可改进方向¶
- 依赖扩散模型生成的形状质量:如果SDS产生错误形状(如水枪手柄位置不对),后续全部出错
- 对称物体的DINO特征无法区分正反面,导致位姿歧义
- 优化流程较慢:每个场景约2小时(NeRF优化1h + 位姿15min + 映射45min)
- 需要前景mask(虽然可用SAM自动获取)
- 无法处理严重遮挡或极端变形
与相关工作的对比¶
- Neural Congealing/GANgealing: 2D warping方法,无法处理大视角旋转;3D Congealing通过3D推理超越
- GNeRF: 用GAN做无位姿NeRF,但设计给单光照场景,多光照失败;本文用语义特征而非photometric loss
- SAMURAI: 需要位姿方向初始化标注;本文完全无标注且精度相当
- DreamBooth3D: 微调扩散模型重建3D但不做图像注册;本文用更高效方式做3D+注册
与我的研究方向的关联¶
- SDS+DINO的组合框架可以启发其他需要"3D理解+语义理解"的任务
- 3D canonical空间的概念对于跨实例/跨类别的对比学习研究有参考价值
- 目前ideas/中无直接关联idea
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 提出了新问题(3D Congealing),框架设计优雅,融合了扩散模型先验和语义匹配
- 实验充分度: ⭐⭐⭐⭐ 定量+定性实验丰富,涵盖位姿估计和对应关系;消融验证了各组件必要性
- 写作质量: ⭐⭐⭐⭐⭐ 问题定义清晰,方法推导严谨,图示直观
- 对我的价值: ⭐⭐⭐⭐ SDS+语义特征的组合使用模式和3D canonical空间概念具有启发性