專題頁面 • ?Arxiv 論文 • ?YouTube • ?HuggingFace 演示 (WIP) • 引文
LL3DA 是一種大型語言 3D 助手,可回應複雜 3D 環境中的視覺和文字互動。
大型多模態模型(LMM)的最新進展使得人機互動中的各種應用成為可能。然而,開發能夠在複雜多樣的 3D 環境中理解、推理和規劃的 LMM 仍然是一個具有挑戰性的話題,特別是考慮到理解 3D 場景的排列不變點雲 3D 表示的需求。現有的作品尋求多視圖影像的幫助,並將 2D 特徵投影到 3D 空間作為 3D 場景表示。然而,這會導致巨大的計算開銷和效能下降。在本文中,我們介紹了 LL3DA,一種大型語言 3D 助手,它採用點雲作為直接輸入,並對文字指令和視覺提示做出回應。這有助於 LMM 更好地理解人類交互,並進一步幫助消除雜亂的 3D 場景中的歧義。實驗表明,LL3DA取得了顯著的效果,在3D密集字幕和3D問答方面均超越了各種3D視覺語言模型。
待辦事項:
步驟 1. 建構依賴關係。我們的程式碼使用 CUDA 11.6 和 Python 3.8.16 進行了測試。要運行程式碼,您應該先安裝以下軟體包:
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'
之後,從原始碼建構pointnet2
和加速giou
:
cd third_party/pointnet2
python setup.py install
cd utils
python cython_compile.py build_ext --inplace
步驟 2. 下載預先訓練的嵌入。從 Huggingface 下載預處理後的 BERT 嵌入權重並將其儲存在./bert-base-embedding
資料夾下。權重與官方 BERT 模型相同,我們只是修改了某些參數的名稱。
我們的儲存庫需要來自 ScanNet 的 3D 資料、自然語言註釋和預先訓練的 LLM 權重。
步驟 1. 下載並準備 ScanNet 3D 資料。
2024-07-01 更新:您可以從此處下載預處理的資料。
SCANNET_DIR
更改為data/scannet/batch_load_scannet_data.py
中的 scans 資料夾,然後執行以下命令。 cd data/scannet/
python batch_load_scannet_data.py
步驟 2. 準備語言註釋
要訓練模型,您需要準備來自ScanRefer
、 Nr3D
、 ScanQA
和3D-LLM
的 ScanNet 部分的語言註釋。
ScanRefer
。請依照此處的命令下載ScanRefer
資料集。Nr3D
。按照此處的命令下載Nr3D
資料集並對其進行預處理。ScanQA
。請依照此處的命令下載ScanQA
資料集。3D-LLM
。數據位於此處。我們也在這裡分享了我們的預處理腳本。我們將更新3D-LLM最新發布的數據(V3)。
最後,將文件組織到以下資料夾:
./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
步驟 3. [選用] 下載預訓練的 LLM 權重。如果您的伺服器從 Huggingface 自動下載權重沒有問題,請隨意跳過此步驟。
從 Huggingface 的opt-1.3b
檢查點(或任何其他僅解碼器的 LLM)下載文件,並將它們儲存在./facebook/opt-1.3b
目錄下。確保下載了所需的文件:
./facebook/opt-1.3b/
config.json
merges.txt
pytorch_model.bin
special_tokens_map.json
tokenizer_config.json
vocab.json
2024-07-01 更新:發布的版本與我們的論文實作略有不同。在我們發布的版本中,我們標準化了資料格式並刪除了重複的文字註釋。若要重現我們報告的結果,請使用scripts-v0
中提供的腳本來產生通才權重。
bash scripts-v0/opt-1.3b/train.generalist.sh
我們的程式碼應該支援任何僅解碼器的LLM ( facebook/opt-1.3b
、 gpt2-xl
、 meta-llama/Llama-2-7b
甚至最新的Qwen/Qwen1.5-1.8B
和Qwen/Qwen1.5-4B
)。請查看下表,了解推薦的不同規模的法學碩士!預設情況下,模型使用八個 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) | - |
我們在scripts
夾中提供具有不同 LLM 後端的訓練腳本。請隨意修改這些指令中的超級參數。
對於其他 LLM 後端,請透過將--vocab
變更為其他 LLM 來手動修改指令。
將模型訓練為 3D 通才:(我們也將預先訓練的權重上傳到 Huggingface。)
bash scripts/opt-1.3b/train.generalist.sh
模型訓練完成後,您可以在 ScanQA 上調整模型以進行 3D 問答:
bash scripts/opt-1.3b/tuning.scanqa.sh
並且,在用於 3D 密集字幕的 ScanRefer / Nr3D 上:
bash scripts/opt-1.3b/tuning.scanrefer.sh
bash scripts/opt-1.3b/tuning.nr3d.sh
您也可以調整模型來預測開放詞彙物件偵測的邊界框!
bash scripts/opt-1.3b/tuning.ovdet.sh
將模型評估為 3D 通才:
bash scripts/opt-1.3b/eval.generalist.sh
關於 ScanQA 3D 問:
bash scripts/opt-1.3b/eval.scanqa.sh
並且,在用於 3D 密集字幕的 ScanRefer / Nr3D 上:
bash scripts/opt-1.3b/eval.scanrefer.sh
bash scripts/opt-1.3b/eval.nr3d.sh
如果您發現我們的程式碼或論文有幫助,請考慮為我們加註星標並引用:
@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}
}
感謝 Vote2Cap-DETR、3D-LLM、Scan2Cap 和 3DETR。我們借用了他們的一些程式碼和數據。
該代碼是根據 MIT 許可證分發的。如果我們的論文和程式碼有任何問題,請隨時提出問題!