プロジェクト ページ • ?Arxiv Paper • ?YouTube • ?HuggingFace デモ (WIP) • 引用
LL3DA は、複雑な 3D 環境内での視覚的対話とテキスト対話の両方に応答できる大規模言語 3D アシスタントです。
大規模マルチモーダル モデル (LMM) の最近の進歩により、人間とマシンの相互作用におけるさまざまなアプリケーションが可能になりました。しかし、複雑で多様な 3D 環境で理解、推論、計画できる LMM の開発は、特に 3D シーンの順列不変点群 3D 表現を理解する需要を考慮すると、依然として困難な課題です。既存の作品は、マルチビュー画像の助けを求め、2D フィーチャを 3D シーン表現として 3D 空間に投影します。ただし、これは膨大な計算オーバーヘッドとパフォーマンスの低下につながります。この論文では、点群を直接入力として受け取り、テキストによる指示と視覚的なプロンプトの両方に応答するラージ言語 3D アシスタントである LL3DA を紹介します。これは、LMM が人間のインタラクションをよりよく理解するのに役立ち、さらに、乱雑な 3D シーンのあいまいさを取り除くのに役立ちます。実験の結果、LL3DA は顕著な結果を達成し、3D 高密度キャプションと 3D 質問応答の両方でさまざまな 3D 視覚言語モデルを上回りました。
TODO :
ステップ 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. 事前トレーニングされた埋め込みをダウンロードします。前処理された BERT 埋め込み重みを Huggingface からダウンロードし、 ./bert-base-embedding
base-embedding フォルダーの下に保存します。重みは公式 BERT モデルと同じですが、特定のパラメーターの名前を変更しただけです。
私たちのリポジトリには、ScanNet からの 3D データ、自然言語の注釈、および事前トレーニングされた LLM 重みが必要です。
ステップ 1. ScanNet 3D データをダウンロードして準備します。
更新 2024 年 7 月 1 日:前処理されたデータはここからダウンロードできます。
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? からのウェイトの自動ダウンロードに問題がない場合は、この手順をスキップしても構いません。
ハグフェイスのopt-1.3b
チェックポイント (またはその他のデコーダ専用 LLM) からファイルをダウンロードし、 ./facebook/opt-1.3b
opt-1.3b ディレクトリに保存します。必要なファイルがダウンロードされていることを確認してください。
./facebook/opt-1.3b/
config.json
merges.txt
pytorch_model.bin
special_tokens_map.json
tokenizer_config.json
vocab.json
更新 2024 年 7 月 1 日:リリースされたバージョンは、紙面での実装とは若干異なります。リリースされたバージョンでは、データ形式を標準化し、重複したテキスト注釈を削除しました。報告された結果を再現するには、 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
さえも) をサポートする必要があります。 )。さまざまなスケールで推奨される LLM については、次の表を確認してください。デフォルトでは、モデルは 8 つの 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) | - |
さまざまな LLM バックエンドを備えたトレーニング スクリプトがscripts
フォルダーに提供されます。これらのコマンドのハイパーパラメータを自由に変更してください。
他の 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 LICENSE に基づいて配布されます。論文とコードに関して問題がある場合は、お気軽に問題を開いてください。