يوان تانغ شو هان شيانزي لي* تشياو يو ييشوي هاو لونغ هو مين تشين
جامعة هواتشونغ للعلوم والتكنولوجيا، جامعة جنوب الصين للتكنولوجيا
ايه سي ام مم 2024
ملاحظة: يتخذ MiniGPT-3D الخطوة الأولى في برنامج 3D-LLM الفعال ، ونأمل أن يتمكن MiniGPT-3D من تقديم رؤى جديدة لهذا المجتمع.
تشير النتائج إلى GreenPLM.
يرجى الرجوع إلى ورقتنا لمزيد من أمثلة الحوار.
نقوم باختبار أكوادنا في البيئة التالية:
للبدء:
استنساخ هذا المستودع.
git clone https://github.com/TangYuan96/MiniGPT-3D.git
cd MiniGPT-3D
تثبيت الحزم
بشكل افتراضي، قمت بتثبيت conda.
conda env create -f environment.yml
conda activate minigpt_3d
bash env_install.sh
8192_npy
يحتوي على 660 ألف نقطة من الملفات السحابية المسماة {Objaverse_ID}_8192.npy
. كل ملف عبارة عن مصفوفة numpy بأبعاد (8192، 6)، حيث تكون الأبعاد الثلاثة الأولى هي xyz
والأبعاد الثلاثة الأخيرة هي rgb
في النطاق [0، 1]. cat Objaverse_660K_8192_npy_split_a * > Objaverse_660K_8192_npy.tar.gz
tar -xvf Objaverse_660K_8192_npy.tar.gz
8192_npy
إلى المجلد ./data/objaverse_data
../data/anno_data
.modelnet40_test_8192pts_fps.dat
إلى المجلد ./data/modelnet40_data
.وأخيرًا، يجب أن يكون الهيكل العام لدليل البيانات كما يلي:
MiniGPT-3D/data
|-- anno_data
| |-- PointLLM_brief_description_660K.json
| |-- PointLLM_brief_description_660K_filtered.json
| |-- PointLLM_brief_description_val_200_GT.json
| |-- PointLLM_complex_instruction_70K.json
| |-- object_ids_660K.txt
| `-- val_object_ids_3000.txt
|-- modelnet40_data
| |-- modelnet40_test_8192pts_fps.dat
|-- objaverse_data
| |-- 00000054c36d44a2a483bdbff31d8edf_8192.npy
| |-- 00001ec0d78549e1b8c2083a06105c29_8192.npy
| .......
نقوم بفرز أوزان النماذج المطلوبة بواسطة MiniGPT-3D أثناء التدريب والاستدلال.
params_weight
إلى مجلد مشروع MiniGPT-3D
.وأخيرًا، يجب أن يكون الهيكل العام لدليل البيانات كما يلي:
MiniGPT-3D
|-- params_weight
| |-- MiniGPT_3D_stage_3 # Our MiniGPT-3D stage III weight, needed to verify the results of paper
| |-- MiniGPT_3D_stage_4 # Our MiniGPT-3D stage IV weight, Needed to verify the results of paper
| |-- Phi_2 # LLM weight
| |-- TinyGPT_V_stage_3 # 2D-LLM weights including loRA & Norm of LLM and projector
| |-- all-mpnet-base-v2 # Used in the caption traditional evaluation
| |-- bert-base-uncased # Used in initialize Q-former
| |-- pc_encoder # point cloud encoder
| `-- sup-simcse-roberta-large # Used in the caption traditional evaluation
|-- train_configs
| `-- MiniGPT_3D
| .......
يمكنك تشغيل الأمر التالي لبدء عرض توضيحي لمحادثة التدرج المحلي:
python UI_demo.py --cfg-path ./eval_configs/MiniGPT_3D_conv_UI_demo.yaml --gpu-id 0
بعد ذلك، انسخ الرابط http://127.0.0.1:7860/
إلى متصفحك، ويمكنك إدخال معرف كائن Objaverse المدعوم (660 ألف كائن) أو تحميل ملف كائن واحد (.ply أو .npy) للتحدث مع MiniGPT-3D الخاص بنا .
مثال: أدخل معرف الكائن:
مثال: تحميل ملف الكائن:
إذا كنت تريد استخدام مسار الإخراج الافتراضي لكل مرحلة، فيمكنك تجاهل الخطوات التالية.
CUDA_VISIBLE_DEVICES=0 python train.py --cfg-path ./train_configs/MiniGPT_3D/stage_1.yaml
CUDA_VISIBLE_DEVICES=0 python train.py --cfg-path ./train_configs/MiniGPT_3D/stage_2.yaml
CUDA_VISIBLE_DEVICES=0 python train.py --cfg-path ./train_configs/MiniGPT_3D/stage_3.yaml
CUDA_VISIBLE_DEVICES=0 python train.py --cfg-path ./train_configs/MiniGPT_3D/stage_4.yaml
إذا كنت تريد فقط التحقق من نتائج بحثنا، فيمكنك تجاهل الخطوات التالية:
قم بتعيين مسار الإخراج الخاص بالمرحلة الثالثة إلى هنا في السطر 8.
قم بتعيين مسار الإخراج الخاص بالمرحلة الرابعة إلى هنا في السطر 9.
إخراج نتيجة تصنيف المفردات المفتوحة على objaverse
# Prompt 0:
export PYTHONPATH= $PWD
CUDA_VISIBLE_DEVICES=0 python pointllm/eval/eval_objaverse.py --out_path ./output/test --task_type classification --cfg-path ./eval_configs/benchmark_evaluation_paper.yaml --prompt_index 0
# Prompt 1:
export PYTHONPATH= $PWD
CUDA_VISIBLE_DEVICES=0 python pointllm/eval/eval_objaverse.py --out_path ./output/test --task_type classification --cfg-path ./eval_configs/benchmark_evaluation_paper.yaml --prompt_index 1
قم بإخراج نتيجة تصنيف اللقطة الصفرية القريبة على ModelNet40
# Prompt 0:
export PYTHONPATH= $PWD
CUDA_VISIBLE_DEVICES=0 python pointllm/eval/eval_modelnet_cls.py --out_path ./output/test --cfg-path ./eval_configs/benchmark_evaluation_paper.yaml --prompt_index 0
# Prompt 1:
export PYTHONPATH= $PWD
CUDA_VISIBLE_DEVICES=0 python pointllm/eval/eval_modelnet_cls.py --out_path ./output/test --cfg-path ./eval_configs/benchmark_evaluation_paper.yaml --prompt_index 1
إخراج نتيجة التسمية التوضيحية للكائن على objaverse
export PYTHONPATH= $PWD
CUDA_VISIBLE_DEVICES=0 python pointllm/eval/eval_objaverse.py --out_path ./output/test --task_type captioning --cfg-path ./eval_configs/benchmark_evaluation_paper.yaml --prompt_index 2
في GreenPLM، لاحظنا أن LLMs GPT-3.5 وGPT-4 ذات المصدر القريب لهما عيبان رئيسيان: إصدارات API غير المتسقة وتكاليف التقييم المرتفعة (~ 35 يوان صيني أو 5 دولارات أمريكية لكل تقييم واحد) . على سبيل المثال، لم يعد يتم الاحتفاظ بالنموذج GPT-3.5-turbo-0613 المستخدم في PointLLM وMiniGPT-3D، مما يجعل من الصعب تكرار النتائج .
export PYTHONPATH= $PWD
export OPENAI_API_KEY=sk- ****
python pointllm/eval/evaluator.py --results_path /path/to/evaluation/PointLLM_brief_description_val_200_GT_Objaverse_classification_prompt0.json --model_type gpt-4-0613 --eval_type open-free-form-classification --parallel --num_workers 15
export PYTHONPATH= $PWD
export OPENAI_API_KEY=sk- ****
python pointllm/eval/evaluator.py --results_path /path/to/evaluation/PointLLM_brief_description_val_200_GT_Objaverse_classification_prompt1.json --model_type gpt-4-0613 --eval_type open-free-form-classification --parallel --num_workers 15
export PYTHONPATH= $PWD
export OPENAI_API_KEY=sk- ****
python pointllm/eval/evaluator.py --results_path /path/to/evaluation/ModelNet_classification_prompt0.json --model_type gpt-3.5-turbo-0613 --eval_type modelnet-close-set-classification --parallel --num_workers 15
export PYTHONPATH= $PWD
export OPENAI_API_KEY=sk- ****
python pointllm/eval/evaluator.py --results_path /path/to/evaluation/ModelNet_classification_prompt1.json --model_type gpt-3.5-turbo-0613 --eval_type modelnet-close-set-classification --parallel --num_workers 15
export PYTHONPATH= $PWD
export OPENAI_API_KEY=sk- ****
python pointllm/eval/evaluator.py --results_path /path/to/evaluation/PointLLM_brief_description_val_200_GT_Objaverse_captioning_prompt2.json --model_type gpt-4-0613 --eval_type object-captioning --parallel --num_workers 15
في GreenPLM، نقترح تصنيفًا جديدًا للكائنات ثلاثية الأبعاد ومعايير توضيحية باستخدام Qwen2-72B-Instruct مفتوح المصدر على مستوى GPT-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_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
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
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
قم بتعيين مسار الإخراج للمرحلة الثالثة هنا في السطر 8.
قم بتعيين مسار الإخراج للمرحلة الرابعة هنا في السطر 9.
يمكنك تشغيل الأمر التالي لبدء عرض توضيحي لمحادثة التدرج المحلي:
python UI_demo.py --cfg-path ./eval_configs/MiniGPT_3D_conv_UI_demo.yaml --gpu-id 0
إذا وجدت عملنا مفيدًا، فيرجى مراعاة الاستشهاد بما يلي:
@article { tang2024minigpt ,
title = { MiniGPT-3D: Efficiently Aligning 3D Point Clouds with Large Language Models using 2D Priors } ,
author = { Tang, Yuan and Han, Xu and Li, Xianzhi and Yu, Qiao and Hao, Yixue and Hu, Long and Chen, Min } ,
journal = { arXiv preprint arXiv:2405.01413 } ,
year = { 2024 }
}
هذا العمل خاضع للرخصة الدولية Creative Commons Attribution-NonCommercial-ShareAlike 4.0.
معًا، دعونا نجعل LLM للتقنية ثلاثية الأبعاد أمرًا رائعًا!
نود أن نشكر مؤلفي PointLLM وTinyGPT-V وMiniGPT-4 وOctavius على أعمالهم الرائعة ومستودعاتهم.