Halaman Proyek • ?Arxiv Paper • ?YouTube • ?HuggingFace Demo (WIP) • Kutipan
LL3DA adalah Asisten 3D Bahasa Besar yang dapat merespons interaksi visual dan tekstual dalam lingkungan 3D yang kompleks .
Kemajuan terkini dalam Model Multimodal Besar (LMM) telah memungkinkan berbagai aplikasi dalam interaksi manusia-mesin. Namun, mengembangkan LMM yang dapat memahami, menalar, dan merencanakan dalam lingkungan 3D yang kompleks dan beragam tetap menjadi topik yang menantang, terutama mengingat permintaan untuk memahami representasi 3D point cloud permutasi-invarian dari adegan 3D. Karya yang ada mencari bantuan dari gambar multi-tampilan, dan memproyeksikan fitur 2D ke ruang 3D sebagai representasi pemandangan 3D. Namun, hal ini menyebabkan overhead komputasi yang besar dan penurunan kinerja. Dalam makalah ini, kami menyajikan LL3DA, Asisten 3D Bahasa Besar yang menggunakan point cloud sebagai masukan langsung dan merespons instruksi tekstual dan perintah visual. Hal ini membantu LMM memahami interaksi manusia dengan lebih baik dan membantu menghilangkan ambiguitas dalam adegan 3D yang berantakan. Eksperimen menunjukkan bahwa LL3DA mencapai hasil yang luar biasa, dan melampaui berbagai model bahasa visi 3D pada Teks Padat 3D dan Jawaban Pertanyaan 3D.
YANG HARUS DILAKUKAN :
Langkah 1. Bangun Ketergantungan. Kode kami diuji dengan CUDA 11.6 dan Python 3.8.16. Untuk menjalankan kodenya, Anda harus menginstal paket berikut terlebih dahulu:
h5py
scipy
cython
plyfile
'trimesh>=2.35.39,<2.35.40'
'networkx>=2.2,<2.3'
'torch=1.13.1+cu116'
'transformers>=4.37.0'
Setelah itu, buat pointnet2
dan akselerasi giou
dari sumber:
cd third_party/pointnet2
python setup.py install
cd utils
python cython_compile.py build_ext --inplace
Langkah 2. Unduh embeddings terlatih. Unduh bobot penyematan BERT yang telah diproses sebelumnya dari huggingface dan simpan di bawah folder ./bert-base-embedding
. Bobotnya sama dengan model BERT resmi, kami hanya memodifikasi nama parameter tertentu.
Repo kami memerlukan data 3D dari ScanNet, anotasi bahasa alami, dan bobot LLM yang telah dilatih sebelumnya.
Langkah 1. Unduh dan Siapkan Data 3D ScanNet.
Pembaruan 01-07-2024: Anda dapat mengunduh data yang telah diproses sebelumnya dari sini.
SCANNET_DIR
ke folder scans di data/scannet/batch_load_scannet_data.py
, dan jalankan perintah berikut. cd data/scannet/
python batch_load_scannet_data.py
Langkah 2. Siapkan Anotasi Bahasa
Untuk melatih model, Anda diharuskan menyiapkan anotasi bahasa dari ScanRefer
, Nr3D
, ScanQA
, dan bagian ScanNet dari 3D-LLM
.
ScanRefer
. Ikuti perintah di sini untuk mengunduh kumpulan data ScanRefer
.Nr3D
. Ikuti perintah di sini untuk mengunduh kumpulan data Nr3D
, dan melakukan pra-proses.ScanQA
. Ikuti perintah di sini untuk mengunduh kumpulan data ScanQA
.3D-LLM
. Datanya ada di sini. Kami juga telah membagikan skrip pra-pemrosesan kami di sini.Kami akan memperbarui data rilis terbaru (V3) dari 3D-LLM.
Terakhir, atur file ke dalam folder berikut:
./data/
ScanRefer/
ScanRefer_filtered_train.json
ScanRefer_filtered_train.txt
ScanRefer_filtered_val.json
ScanRefer_filtered_val.txt
Nr3D/
nr3d_train.json
nr3d_train.txt
nr3d_val.json
nr3d_val.txt
ScanQA/
ScanQA_v1.0_test_w_obj.json
ScanQA_v1.0_test_wo_obj.json
ScanQA_v1.0_train.json
ScanQA_v1.0_val.json
3D_LLM/
3d_llm_embodied_dialogue_filtered_train.json
3d_llm_embodied_dialogue_filtered_val.json
3d_llm_embodied_planning_filtered_train.json
3d_llm_embodied_planning_filtered_val.json
3d_llm_scene_description_train.json
3d_llm_scene_description_val.json
Langkah 3. [Opsional] Unduh beban LLM yang telah dilatih sebelumnya. Jika server Anda tidak mengalami masalah saat mengunduh bobot secara otomatis dari huggingface?, silakan lewati langkah ini.
Unduh file dari pos pemeriksaan opt-1.3b
(atau LLM khusus decoder lainnya) di huggingface, dan simpan di bawah direktori ./facebook/opt-1.3b
. Pastikan file yang diperlukan telah diunduh:
./facebook/opt-1.3b/
config.json
merges.txt
pytorch_model.bin
special_tokens_map.json
tokenizer_config.json
vocab.json
Pembaruan 01-07-2024: Versi yang dirilis sedikit berbeda dari implementasi kertas kami. Dalam versi rilis kami, kami membakukan format data dan menghilangkan anotasi teks duplikat . Untuk mereproduksi hasil yang kami laporkan, silakan gunakan skrip yang disediakan di scripts-v0
untuk menghasilkan bobot generalis.
bash scripts-v0/opt-1.3b/train.generalist.sh
Kode kita harus mendukung LLM khusus dekoder ( facebook/opt-1.3b
, gpt2-xl
, meta-llama/Llama-2-7b
atau bahkan Qwen/Qwen1.5-1.8B
dan Qwen/Qwen1.5-4B
TERBARU ). Lihat tabel berikut untuk LLM yang direkomendasikan dalam skala berbeda! Secara default, model dilatih dengan delapan GPU.
<1B | 1B-4B | ~7B |
---|---|---|
gpt2 (124m) | TinyLlama-1.1B (1.1b) | facebook/opt-6.7b (6.7b) |
facebook/opt-125m (125m) | facebook/opt-1.3b (1.3b) | meta-llama/Llama-2-7b-hf (6.7b) |
gpt2-medium (355m) | gpt2-xl (1.6b) | Qwen/Qwen1.5-7B (7.7b) |
Qwen/Qwen1.5-0.5B (620m) | Qwen/Qwen1.5-1.8B (1.8b) | - |
gpt2-large (774m) | facebook/opt-2.7b (2.7b) | - |
- | microsoft/phi-2 (2.8b) | - |
- | Qwen/Qwen1.5-4B (3.9b) | - |
Kami menyediakan skrip pelatihan di folder scripts
dengan backend LLM yang berbeda. Jangan ragu untuk mengubah parameter hiper dalam perintah tersebut.
Untuk backend LLM lainnya, harap ubah perintah secara manual dengan mengubah --vocab
ke LLM lain.
Untuk melatih model sebagai generalis 3D: (Kami juga telah mengunggah beban yang telah dilatih sebelumnya ke pelukan.)
bash scripts/opt-1.3b/train.generalist.sh
Setelah model dilatih, Anda dapat menyetel model di ScanQA untuk Menjawab Pertanyaan 3D:
bash scripts/opt-1.3b/tuning.scanqa.sh
Dan, pada ScanRefer / Nr3D untuk Teks Padat 3D:
bash scripts/opt-1.3b/tuning.scanrefer.sh
bash scripts/opt-1.3b/tuning.nr3d.sh
Anda juga dapat menyesuaikan model untuk memprediksi kotak pembatas untuk deteksi objek kosakata terbuka!
bash scripts/opt-1.3b/tuning.ovdet.sh
Untuk mengevaluasi model sebagai generalis 3D:
bash scripts/opt-1.3b/eval.generalist.sh
Di ScanQA untuk Menjawab Pertanyaan 3D:
bash scripts/opt-1.3b/eval.scanqa.sh
Dan, pada ScanRefer / Nr3D untuk Teks Padat 3D:
bash scripts/opt-1.3b/eval.scanrefer.sh
bash scripts/opt-1.3b/eval.nr3d.sh
Jika Anda merasa kode atau makalah kami bermanfaat, mohon pertimbangkan untuk memberi bintang pada kami dan mengutip:
@misc{chen2023ll3da,
title={LL3DA: Visual Interactive Instruction Tuning for Omni-3D Understanding, Reasoning, and Planning},
author={Sijin Chen and Xin Chen and Chi Zhang and Mingsheng Li and Gang Yu and Hao Fei and Hongyuan Zhu and Jiayuan Fan and Tao Chen},
year={2023},
eprint={2311.18651},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
Terima kasih kepada Vote2Cap-DETR, 3D-LLM, Scan2Cap, dan 3DETR. Kami meminjam beberapa kode dan data mereka.
Kode ini didistribusikan di bawah LISENSI MIT. Jika ada masalah mengenai kertas dan kode kami, silakan buka masalah!