Yuan Tang Xu Han Xianzhi Li* Qiao Yu Yixue Hao Long Hu Min Chen
Universitas Sains dan Teknologi Huazhong Universitas Teknologi Cina Selatan
ACM MM 2024
Catatan: MiniGPT-3D mengambil langkah pertama dalam 3D-LLM yang efisien , kami berharap MiniGPT-3D dapat memberikan wawasan baru bagi komunitas ini.
Hasilnya merujuk dari GreenPLM.
Silakan merujuk ke makalah kami untuk contoh dialog lainnya.
Kami menguji kode kami dalam lingkungan berikut:
Untuk memulai:
Kloning repositori ini.
git clone https://github.com/TangYuan96/MiniGPT-3D.git
cd MiniGPT-3D
Instal paket
Secara default, Anda telah menginstal conda.
conda env create -f environment.yml
conda activate minigpt_3d
bash env_install.sh
8192_npy
yang berisi 660 ribu titik file cloud bernama {Objaverse_ID}_8192.npy
. Setiap file adalah array numpy dengan dimensi (8192, 6), dengan tiga dimensi pertama adalah xyz
dan tiga dimensi terakhir adalah rgb
dalam rentang [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
ke folder ./data/objaverse_data
../data/anno_data
.modelnet40_test_8192pts_fps.dat
ke folder ./data/modelnet40_data
.Terakhir, struktur direktori data secara keseluruhan harus:
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
| .......
Kami memilah bobot model yang dibutuhkan oleh MiniGPT-3D selama pelatihan dan inferensi.
params_weight
ke folder proyek MiniGPT-3D
.Terakhir, struktur direktori data secara keseluruhan harus:
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
| .......
Anda dapat menjalankan perintah berikut untuk memulai demo percakapan gradio lokal:
python UI_demo.py --cfg-path ./eval_configs/MiniGPT_3D_conv_UI_demo.yaml --gpu-id 0
Kemudian, salin tautan http://127.0.0.1:7860/
ke browser Anda, Anda dapat memasukkan id objek Objaverse yang didukung (660 ribu objek) atau mengunggah satu file objek (.ply atau .npy) untuk berbicara dengan MiniGPT-3D kami .
Contoh: Masukkan ID objek:
Contoh: Unggah file objek:
Jika Anda ingin menggunakan jalur keluaran default setiap Tahapan, Anda dapat mengabaikan langkah-langkah berikut.
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
Jika Anda hanya ingin memverifikasi hasil makalah kami, Anda dapat mengabaikan langkah-langkah berikut:
Atur jalur keluaran Tahap III Anda ke sini di Jalur 8.
Atur jalur keluaran Tahap IV Anda ke sini di Jalur 9.
Keluarkan hasil klasifikasi kosakata terbuka pada 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
Keluarkan hasil klasifikasi zero-shot close-set pada 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
Keluarkan hasil captioning objek pada 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
Di GreenPLM, kami memperhatikan bahwa LLM sumber dekat GPT-3.5 dan GPT-4 memiliki dua kelemahan utama: versi API yang tidak konsisten dan biaya evaluasi yang tinggi (~35 CNY atau 5 USD per satu evaluasi) . Misalnya, model GPT-3.5-turbo-0613 yang digunakan di PointLLM dan MiniGPT-3D kami tidak lagi dipertahankan, sehingga sulit untuk mereplikasi hasilnya .
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
Di GreenPLM, kami mengusulkan tolok ukur klasifikasi dan teks objek 3D baru menggunakan sumber terbuka tingkat GPT-4 Qwen2-72B-Instruct untuk membuat evaluasi hemat biaya dan hasilnya dapat direproduksi secara konsisten .
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
Untuk tugas pemberian teks objek, jalankan perintah berikut untuk mengevaluasi output model dengan metrik tradisional Sentence-BERT dan 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
Tetapkan jalur keluaran Tahap III Anda di sini di Jalur 8.
Tetapkan jalur keluaran Tahap IV Anda di sini di Jalur 9.
Anda dapat menjalankan perintah berikut untuk memulai demo percakapan gradio lokal:
python UI_demo.py --cfg-path ./eval_configs/MiniGPT_3D_conv_UI_demo.yaml --gpu-id 0
Jika menurut Anda pekerjaan kami bermanfaat, silakan pertimbangkan untuk mengutip:
@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 }
}
Karya ini berada di bawah Lisensi Internasional Creative Commons Attribution-NonCommercial-ShareAlike 4.0.
Bersama-sama, Mari kita jadikan LLM untuk 3D hebat!
Kami ingin mengucapkan terima kasih kepada penulis PointLLM, TinyGPT-V, MiniGPT-4, dan Octavius atas karya dan repo mereka yang luar biasa.