说明文档
<h1 align="center"><strong>更多文本,更少点云:面向3D数据高效的点云-语言理解</strong></h1> <p align="center"> Yuan Tang* Xu Han* Xianzhi Li<sup>✝</sup> Qiao Yu Jinfeng Xu Yixue Hao Long Hu Min Chen <br> 华中科技大学 华南理工大学 </p> </p>
<p align="center"> <a><strong>AAAI 2025 </strong></a> <a href='https://arxiv.org/pdf/2408.15966'><img src='https://img.shields.io/badge/Paper-Arxiv-red'></a> <a href='https://huggingface.co/YuanTang96/GreenPLM'><img src='https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Model-blue'></a> </p>
<!-- contents with emoji -->
📋 目录
🔍 概述


- 我们提出了一项新任务——3D数据高效的点云-语言理解,旨在让大语言模型(LLM)仅需极少的3D数据即可实现鲁棒的3D理解能力。
- 我们提出了GreenPLM,从全新视角解决这一3D数据受限的任务,通过更多免费文本数据来增强点云-LLM的对齐。
- 我们引入了600万条T3D数据集,设计了三阶段训练策略,并提出了0M-Pooling模块用于token池化。
- 我们引入了准确率与3D数据比率(A3DR)来衡量3D数据使用效率,并基于开源LLM建立了评估基准。
- GreenPLM仅使用12%的3D数据就超越了之前的模型,甚至仅使用文本数据就超越了GPT4Point(使用66万条3D数据),展示了卓越的3D数据效率。
📦 训练与评估
下载项目
本项目的代码、权重和数据集已上传至 Hugging Face。只需下载即可开始使用本项目。
安装环境
进入项目目录并执行以下命令:
conda create -n greenplm python=3.10 -y
conda activate greenplm
bash envInstall.sh
项目目录介绍
./greenplm/release包含论文的权重、训练脚本和测试脚本。./pretrained_weight存放项目训练和测试阶段所需的预训练权重。./lava-vicuna_2024_4_Phi-3-mini-4k-instruct是Phi-3的权重目录。./dataset/T3D是本项目提出的600万条数据集。./dataset/T3D/stage_1/brief_1M_caption.json是第一阶段的数据集。./dataset/T3D/stage_2/stage_2_data_210k.json是第二阶段的数据集。
数据集准备
./dataset/Objaverse/8192_npy.zip 包含本项目所需的Objaverse点云数据。解压数据集:
unzip ./dataset/Objaverse/8192_npy.zip -d ./dataset/Objaverse/
推理
论文权重
GreenPLM-0
仅使用文本数据训练的模型,即(第一阶段 & 第二阶段)。
bash ./release/paper/scripts/test/release_stage_2.sh
输出的JSON结果保存在 ./release/paper/result_json/stage_2。
GreenPLM
使用少量3D数据训练的模型,即(第一阶段 & 第二阶段 & 第三阶段)。
bash ./release/paper/scripts/test/release_stage_3.sh
输出的JSON结果保存在 ./release/paper/result_json/stage_3。
使用完整T3D数据集的权重
<details> <summary>我们还提供了使用完整T3D数据集训练的权重,即在第二阶段使用T3D的500万条数据,而非论文中的21万条。(点击展开)</summary>
GreenPLM-0
仅使用文本数据训练的模型,即(第一阶段 & 第二阶段)。
bash ./release/5M_data_seting/scripts/test/release_5M_stage_2.sh
输出的JSON结果保存在 ./release/5M_data_seting/result_json/stage_2。
GreenPLM
使用少量3D数据训练的模型,即(第一阶段 & 第二阶段 & 第三阶段)。
bash ./release/5M_data_seting/scripts/test/release_5M_stage_3.sh
输出的JSON结果保存在 ./release/5M_data_seting/result_json/stage_3。
</details>
评估
使用LLM
- 您可以从 阿里云 获取 DASHSCOPE_API_KEY。评估可能需要约9元人民币(约1.3美元)。
- 如果您有足够的GPU资源,也可以按照 Qwen2 搭建自己的Qwen2-72B-Instruct服务,然后免费评估结果!
- 在Objaverse上评估开放词汇分类
export PYTHONPATH=$PWD
export DASHSCOPE_API_KEY=sk-xxx
python ./pointllm/eval/evaluator_opensource_llm_QwenAPI.py \
--results_path /path/to/evaluation/PointLLM_brief_description_val_200_GT_Objaverse_classification_prompt0.json \
--eval_type open-free-form-classification \
--model_type qwen2-72b-instruct \
--parallel --num_workers 4
export PYTHONPATH=$PWD
export DASHSCOPE_API_KEY=sk-xxx
python ./pointllm/eval/evaluator_opensource_llm_QwenAPI.py \
--results_path /path/to/evaluation/PointLLM_brief_description_val_200_GT_Objaverse_classification_prompt1.json \
--eval_type open-free-form-classification \
--model_type qwen2-72b-instruct \
--parallel --num_workers 4
- 在ModelNet40上评估闭集零样本分类
export PYTHONPATH=$PWD
export DASHSCOPE_API_KEY=sk-xxx
python ./pointllm/eval/evaluator_opensource_llm_QwenAPI.py \
--results_path /path/to/evaluation/ModelNet_classification_prompt0.json \
--eval_type modelnet-close-set-classification \
--model_type qwen2-72b-instruct \
--parallel --num_workers 4
export PYTHONPATH=$PWD
export DASHSCOPE_API_KEY=sk-xxx
python ./pointllm/eval/evaluator_opensource_llm_QwenAPI.py \
--results_path /path/to/evaluation/ModelNet_classification_prompt1.json \
--eval_type modelnet-close-set-classification \
--model_type qwen2-72b-instruct \
--parallel --num_workers 4
- 在Objaverse上评估物体描述生成
export PYTHONPATH=$PWD
export DASHSCOPE_API_KEY=sk-xxx
python ./pointllm/eval/evaluator_opensource_llm_QwenAPI.py \
--results_path /path/to/evaluation/PointLLM_brief_description_val_200_GT_Objaverse_captioning_prompt2.json \
--eval_type object-captioning \
--model_type qwen2-72b-instruct \
--parallel --num_workers 4
传统指标评估
对于物体描述生成任务,运行以下命令使用传统指标Sentence-BERT和SimCSE评估模型输出。
CUDA_VISIBLE_DEVICES=0 python pointllm/eval/traditional_evaluator.py --results_path /path/to/evaluation/PointLLM_brief_description_val_200_GT_Objaverse_captioning_prompt2.json
训练
第一阶段
bash ./release/paper/scripts/train/1.sh
第二阶段:GreenPLM-0
bash ./release/paper/scripts/train/2.sh
第三阶段:GreenPLM
bash ./release/paper/scripts/train/3.sh
<details> <summary>我们还提供了使用完整T3D数据集的训练脚本,即在第二阶段使用T3D的500万条数据,而非论文中的21万条。(点击展开)</summary>
第二阶段:GreenPLM-0
bash ./release/5M_data_seting/scripts/train/2.sh
第三阶段:GreenPLM
bash ./release/5M_data_seting/scripts/train/3.sh
</details>
注意:您可以修改脚本中的 --output_dir 参数来设置训练权重的输出目录。
🔗 引用
如果您觉得我们的工作有帮助,请考虑引用:
@inproceedings{tang2025more,
title={More text, less point: Towards 3d data-efficient point-language understanding},
author={Tang, Yuan and Han, Xu and Li, Xianzhi and Yu, Qiao and Xu, Jinfeng and Hao, Yixue and Hu, Long and Chen, Min},
booktitle={Proceedings of the AAAI Conference on Artificial Intelligence},
volume={39},
number={7},
pages={7284--7292},
year={2025}
}
📄 许可证
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png" /></a> <br /> 本作品采用 <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>。
📚 相关工作
让我们一起推动3D大语言模型的发展!
- Point-Bind & Point-LLM:将点云与Image-Bind对齐,无需3D指令数据训练即可推理多模态输入。
- 3D-LLM:使用2D基础模型编码3D点云的多视图图像。
- PointLLM:将3D点云与LLaVA结合。
- ShapeLLM:将强大的点云编码器与LLM结合用于具身场景。
- MiniGPT-3D :迈出了高效3D-LLM的第一步,仅需单张RTX 3090 GPU和一天的训练时间。
👏 致谢
YuanTang96/GreenPLM
作者 YuanTang96
创建时间: 2025-05-23 06:28:35+00:00
更新时间: 2025-05-27 11:58:12+00:00
在 Hugging Face 上查看