Real3D:使用真实世界图像扩展大型重建模型
摘要:由于从2D到3D的模糊性,单视图3D重建是一个病态问题,重建模型必须从大量数据中学习通用的形状和纹理先验。训练单视图大型重建模型(LRMs)的默认策略遵循完全监督的路线,使用合成3D资产或多视图捕获。尽管这些资源简化了训练过程,但它们很难扩展到现有数据集之外,而且它们不一定代表物体形状的真实分布。为了解决这些限制,本文我们介绍了Real3D,这是第一个可以使用单视图真实世界图像进行训练的LRM系统。Real3D引入了一种新颖的自训练框架,可以同时受益于现有的3D/多视图合成数据和多样化的单视图真实图像。我们提出了两种无监督损失,即使对于没有真实3D或新视图的训练样本,也能在像素级和语义级对LRMs进行监督。为了进一步提高性能并扩大图像数据规模,我们开发了一种自动数据整理方法,从野外图像中收集高质量样本。我们的实验表明,Real3D在四种不同的评估设置中始终优于先前的工作,这些设置包括真实和合成数据,以及域内和域外形状。
安装
首先,安装环境。
conda create --name real3d python=3.8
conda activate real3d
# 安装pytorch,我们使用:
conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia
pip install -r requirements.txt
然后,下载模型权重并将其放置到./checkpoints/model_both_trained_v1.ckpt
。
演示
使用./run.sh
并相应地修改您的图像路径和前景分割配置。调整块大小以适应您的GPU。
训练
数据准备
本仓库使用MVImgNet、CO3D、OmniObject3D和我们收集的真实图像。请参阅此文件。
步骤0:(可选)微调TripoSR
由于TripoSR预测具有随机尺度的3D形状,我们首先需要在Objaverse上对其进行微调。我们提供了微调后的模型权重,因此您可以将其放置到./checkpoint/model_both.ckpt
并跳过此阶段。
步骤1:对真实图像进行自训练
使用./train_sv.sh
。
评估
使用./eval.sh
并相应地修改脚本和配置。
例如,要在具有真实多视图的CO3D上进行评估,使用eval_mv.py
和./config/eval/eval_mv_co3d.yaml
。要对单视图图像进行评估,使用eval_sv.py
和./config/eval/eval_sv.yaml
。
待办事项
- 发布真实世界数据。
致谢
本仓库是基于TripoSR开发的。
BibTex
@article{jiang2024real3d,
title={Real3D: Scaling Up Large Reconstruction Models with Real-World Images},
author={Jiang, Hanwen and Huang, Qixing and Pavlakos, Georgios},
booktitle={arXiv preprint arXiv:2406.08479},
year={2024},
}