ShapeLLM:用于具身交互的通用3D物体理解
我们提出ShapeLLM,这是第一个为具身交互设计的3D多模态大语言模型,探索了基于3D点云和语言的通用3D物体理解。
Zekun Qi, Runpei Dong, Shaochen Zhang, Haoran Geng, Chunrui Han, Zheng Ge, Li Yi 和 Kaisheng Ma
1. ShapeLLM是第一个为具身交互
设计的3D多模态大语言模型。
2. ShapeLLM支持单视角彩色点云输入
,可以轻松从RGBD相机获得。
3. 我们引入了一个强大的3D问答基准测试3D MM-Vet
,包含各种变体,如单视角、噪声抖动等。
4. 我们扩展了强大的点编码器架构ReCon++
,在一系列表示学习任务中实现了最先进的性能。
目录
安装
- 克隆此仓库并进入ShapeLLM文件夹
git clone https://github.com/qizekun/ShapeLLM.git
cd ShapeLLM
- 安装包
conda create -n shapellm python=3.10 -y
conda activate shapellm
pip install --upgrade pip # 启用PEP 660支持
pip install -e .
- 安装训练所需的额外包
pip install -e ".[train]"
pip install flash-attn --no-build-isolation
- 安装PointNet++
pip install "git+https://github.com/erikwijmans/Pointnet2_PyTorch.git#egg=pointnet2_ops&subdirectory=pointnet2_ops_lib"
ShapeLLM
模型权重
请查看我们的模型库以获取所有公开的ShapeLLM检查点。
演示
命令行推理
使用命令行界面与点云进行交互。它还支持多个GPU、4位和8位量化推理。
python -m llava.serve.cli \
--model-path qizekun/ShapeLLM_13B_general_v1.0 \
--pts-file assets/instrument.npy
训练
与LLaVA一致,我们采用两阶段训练方法。在第一阶段,我们仅微调投影器以实现语义对齐。在第二阶段,我们使用指令跟随数据进行全面微调。
按照数据下载数据,将数据组织如下在./playground/data/shapellm/
中,
│playground/data/shapellm/
├── cap3d_objaverse_785k.json
├── cap3d_objaverse_sft_45k.json
├── gapartnet_sft_27k_openai.json
├── gapartnet_pcs
│ ├── Box_100129_0_0.npy
│ └── ...
└── cap3d_pcs
├── 00000054c36d44a2a483bdbff31d8edf.pt
└── ...
此外,ShapeLLM使用ReCon++的Large版本作为点编码器。
您需要下载ReCon++权重并将其保存到./checkpoints/recon/large.pth
。
│checkpoints/recon/
└── large.pth
1. 特征对齐阶段
sh scripts/pretrain.sh
2. 视觉指令微调阶段
sh scripts/finetune.sh
ShapeLLM-13B在8个A100(80G)上训练大约需要14小时。ShapeLLM-7B大约需要7小时。
3D MM-Vet零样本理解
评估3D MLLMs的综合能力和体化交互能力,运行脚本:
sh scripts/eval/mmvet.sh
使用GPT-4计算3D MM-Vet分数:
sh scripts/eval/eval_mmvet.sh
GApartNet视觉定位
评估ShapeLLM在GApartNet数据集上的性能,运行脚本:
sh scripts/eval/gapartnet_ref.sh
计算生成式3D视觉定位准确率:
sh scripts/eval/eval_gapartnet.sh
ReCon++
ReCon++模型权重
请查看我们的模型库以获取所有公开的ReCon++检查点。
预训练
按照数据下载并组织数据。
如果您在访问Huggingface时遇到问题,请使用export HF_ENDPOINT=https://hf-mirror.com
。
ReCon++采用两阶段预训练方法,首先以随机或因果形式进行生成式预训练,然后进行跨模态对比学习。值得注意的是,我们对迁移学习任务采用梯度停止策略,而对零样本任务不使用梯度停止。
sh ReConV2/scripts/pretrain_reconstruch.sh <exp_name>
sh ReConV2/scripts/pretrain_contrast.sh <exp_name> <path/to/stage1-pre-trained/model>
分类
模型 | 版本 | OBJ_BG | OBJ_ONLY | PB_T50_RS | MN-40 1k | MN-40 8k |
---|---|---|---|---|---|---|
ACT | Small | 93.29% | 91.91% | 88.21% | 93.7% | 94.0% |
ReCon | Small | 95.35% | 93.80% | 91.26% | 94.5% | 94.7% |
PointGPT | Base | 95.8% | 95.2% | 91.9% | 94.4% | 94.6% |
ReCon++ | Base | 98.62% | 96.21% | 93.34% | 94.6% | 94.8% |
ReCon++ | Large | 98.80% | 97.59% | 95.25% | 94.8% | 95.0% |
使用默认配置进行微调,运行脚本:
bash ReConV2/scripts/cls.sh <GPU> <exp_name> <path/to/pre-trained/model>
使用默认配置进行测试和投票,运行脚本:
bash ReConV2/scripts/test.sh <GPU> <exp_name> <path/to/best/fine-tuned/model>
小样本学习
模型 | 版本 | 5类10样本 (%) | 5类20样本 (%) | 10类10样本 (%) | 10类20样本 (%) |
---|---|---|---|---|---|
ACT | 小型 | 96.8 ± 2.3 | 98.0 ± 1.4 | 93.3 ± 4.0 | 95.6 ± 2.8 |
ReCon | 小型 | 97.3 ± 1.9 | 98.9 ± 1.2 | 93.3 ± 3.9 | 95.8 ± 3.0 |
PointGPT | 大型 | 98.0 ± 1.9 | 99.0 ± 1.0 | 94.1 ± 3.3 | 96.1 ± 2.8 |
ReCon++ | 大型 | 98.0 ± 2.3 | 99.5 ± 0.8 | 94.5 ± 4.1 | 96.5 ± 3.0 |
使用默认配置进行小样本学习,运行以下脚本:
sh ReConV2/scripts/fewshot.sh <GPU> <实验名称> <预训练模型路径> <类别数> <样本数> <折数>
零样本学习
模型 | 版本 | Objaverse-LVIS | ModelNet40 | ScanObjectNN |
---|---|---|---|---|
OpenShape | 基础版 | 46.8% | 84.4% | 52.2% |
Uni3D | 基础版 | 51.7% | 86.3% | 63.8% |
Uni3D | 大型版 | 53.1% | 86.3% | 58.2% |
ReCon++ | 基础版 | 53.2% | 86.5% | 63.6% |
ReCon++ | 大型版 | 53.7% | 87.3% | 65.4% |
在预训练过程中,默认启用零样本评估。 使用默认配置进行零样本学习,运行以下脚本:
bash ReConV2/scripts/zeroshot.sh <GPU> <实验名称> <预训练模型路径>
3D MM-Vet
3D MM-Vet是一个精心制作的多层次3D问答基准,包含59个独特的3D模型和232个人工编写的问题和答案,内容丰富。
测试数据和脚本已上传至Hugging Face。您也可以在ShapeLLM的代码库中找到评估脚本。
此外,我们提出了3D MM-Vet-C,它包含三个变体:单视图、抖动和旋转。它们分别代表提取前视场视野的部分点云、对点云xyz添加高斯噪声,以及在x、y、z轴上进行随机旋转。
以下是每个变体的详细解释:
- 单视图:此变体侧重于模型从单一视角理解3D对象的能力。为创建单视图变体,我们提取每个模型的前视点云。
- 抖动:此变体测试模型对噪声的鲁棒性。为创建抖动变体,我们向点云xyz添加均值为零、方差为0.01的高斯噪声。
- 旋转:此变体检验模型从不同视角理解3D场景的能力。为创建旋转变体,我们在x、y、z轴上随机应用30度的旋转。
我们相信3D MM-Vet和3D MM-Vet-C对3D问答社区来说是宝贵的资源。它们可用于评估现有模型的性能,并开发更擅长理解和推理3D对象的新模型。
可视化
我们使用PointVisualizaiton仓库来渲染精美的点云图像,包括指定颜色渲染和注意力分布渲染。
引用
如果您发现ShapeLLM或ReCon++对您的研究和应用有用,请使用以下BibTeX进行引用:
@article{qi2024shapellm,
author = {Qi, Zekun and Dong, Runpei and Zhang, Shaochen and Geng, Haoran and Han, Chunrui and Ge, Zheng and Yi, Li and Ma, Kaisheng},
title = {ShapeLLM: Universal 3D Object Understanding for Embodied Interaction},
journal = {arXiv preprint arXiv:2402.17766},
year = {2024}
}
@inproceedings{qi2023recon,
title={Contrast with Reconstruct: Contrastive 3D Representation Learning Guided by Generative Pretraining},
author={Qi, Zekun and Dong, Runpei and Fan, Guofan and Ge, Zheng and Zhang, Xiangyu and Ma, Kaisheng and Yi, Li},
booktitle={International Conference on Machine Learning (ICML) },
url={https://openreview.net/forum?id=80IfYewOh1},
year={2023}
}
@inproceedings{dong2023act,
title={Autoencoders as Cross-Modal Teachers: Can Pretrained 2D Image Transformers Help 3D Representation Learning?},
author={Runpei Dong and Zekun Qi and Linfeng Zhang and Junbo Zhang and Jianjian Sun and Zheng Ge and Li Yi and Kaisheng Ma},
booktitle={The Eleventh International Conference on Learning Representations (ICLR) },
url={https://openreview.net/forum?id=8Oun8ZUVe8N},
year={2023}
}
致谢
本代码库基于LLaVA、OpenShape、ReCon和PointGPT构建。