3D-VisTA:3D视觉和文本对齐的预训练Transformer
朱子昱、 马晓健、 陈一新、 邓志东📧、 黄思源📧、 李青📧
本仓库是ICCV 2023论文"3D-VisTA:3D视觉和文本对齐的预训练Transformer"的官方实现。
论文 | arXiv | 项目 | HuggingFace演示 | 检查点
摘要
3D视觉语言接地(3D-VL)是一个新兴领域,旨在将3D物理世界与自然语言连接起来,这对于实现具身智能至关重要。目前的3D-VL模型严重依赖复杂的模块、辅助损失和优化技巧,这呼吁一个简单统一的模型。在本文中,我们提出了3D-VisTA,一个用于3D视觉和文本对齐的预训练Transformer,可以轻松适应各种下游任务。3D-VisTA仅使用自注意力层进行单模态建模和多模态融合,没有任何复杂的任务特定设计。为了进一步提高其在3D-VL任务上的性能,我们构建了ScanScribe,这是首个用于3D-VL预训练的大规模3D场景-文本对数据集。ScanScribe包含2,995个RGB-D扫描,涵盖1,185个独特的室内场景,源自ScanNet和3R-Scan数据集,并配有278K个场景描述,这些描述是从现有的3D-VL任务、模板和GPT-3生成的。3D-VisTA通过掩码语言/对象建模和场景-文本匹配在ScanScribe上进行预训练。它在各种3D-VL任务上取得了最先进的结果,包括视觉定位、密集描述、问答和情境推理。此外,3D-VisTA展示了卓越的数据效率,即使在下游任务微调时使用有限的标注也能获得强大的性能。
安装
- 安装conda包
conda env create --name 3dvista --file=environments.yml
- 安装pointnet2
cd vision/pointnet2
python3 setup.py install
准备数据集
- 按照Vil3dref的说明,在
data/scanfamily/scan_data
下下载scannet数据,该文件夹应如下所示:
./data/scanfamily/scan_data/
├── instance_id_to_gmm_color
├── instance_id_to_loc
├── instance_id_to_name
└── pcd_with_global_alignment
- 下载scanrefer+referit3d、scanqa和sqa3d,并将它们放在
/data/scanfamily/annotations
下
data/scanfamily/annotations/
├── meta_data
│ ├── cat2glove42b.json
│ ├── scannetv2-labels.combined.tsv
│ ├── scannetv2_raw_categories.json
│ ├── scanrefer_corpus.pth
│ └── scanrefer_vocab.pth
├── qa
│ ├── ScanQA_v1.0_test_w_obj.json
│ ├── ScanQA_v1.0_test_wo_obj.json
│ ├── ScanQA_v1.0_train.json
│ └── ScanQA_v1.0_val.json
├── refer
│ ├── nr3d.jsonl
│ ├── scanrefer.jsonl
│ ├── sr3d+.jsonl
│ └── sr3d.jsonl
├── splits
│ ├── scannetv2_test.txt
│ ├── scannetv2_train.txt
│ └── scannetv2_val.txt
└── sqa_task
├── answer_dict.json
└── balanced
├── v1_balanced_questions_test_scannetv2.json
├── v1_balanced_questions_train_scannetv2.json
├── v1_balanced_questions_val_scannetv2.json
├── v1_balanced_sqa_annotations_test_scannetv2.json
├── v1_balanced_sqa_annotations_train_scannetv2.json
└── v1_balanced_sqa_annotations_val_scannetv2.json
- 下载所有检查点并将它们放在
project/pretrain_weights
下
检查点 | 链接 | 说明 |
---|---|---|
预训练 | 链接 | 3D-VisTA 预训练检查点。 |
ScanRefer | 链接 | 从预训练检查点微调的 ScanRefer。 |
ScanQA | 链接 | 从预训练检查点微调的 ScanQA。 |
Sr3D | 链接 | 从预训练检查点微调的 Sr3D。 |
Nr3D | 链接 | 从预训练检查点微调的 Nr3D。 |
SQA | 链接 | 从预训练检查点微调的 SQA。 |
Scan2Cap | 链接 | 从预训练检查点微调的 Scan2Cap。 |
运行 3D-VisTA
要运行 3D-VisTA,请使用以下命令,任务包括 scanrefer、scanqa、sr3d、nr3d、sqa 和 scan2cap。
python3 run.py --config project/vista/{task}_config.yml
致谢
我们要感谢 Vil3dref 的作者开源发布。
新闻
- [ 2023.08 ] 首个版本发布!
- [ 2023.09 ] 我们发布了所有下游任务的代码。
引用:
@article{zhu2023vista,
title={3D-VisTA: Pre-trained Transformer for 3D Vision and Text Alignment},
author={Zhu, Ziyu and Ma, Xiaojian and Chen, Yixin and Deng, Zhidong and Huang, Siyuan and Li, Qing},
journal={ICCV},
year={2023}
}