หน้าโครงการ • ?Arxiv Paper • ?YouTube • ?HuggingFace Demo (WIP) • การอ้างอิง
LL3DA คือผู้ช่วย 3D ภาษาขนาดใหญ่ที่สามารถตอบสนองทั้งการโต้ตอบด้วยภาพและข้อความภายใน สภาพแวดล้อม 3D ที่ซับซ้อน
ความก้าวหน้าล่าสุดในโมเดลหลายรูปแบบขนาดใหญ่ (LMM) ทำให้สามารถใช้งานต่างๆ ในการโต้ตอบระหว่างมนุษย์กับเครื่องจักรได้ อย่างไรก็ตาม การพัฒนา LMM ที่สามารถเข้าใจ ใช้เหตุผล และวางแผนในสภาพแวดล้อม 3 มิติที่ซับซ้อนและหลากหลายยังคงเป็นหัวข้อที่ท้าทาย โดยเฉพาะอย่างยิ่งเมื่อพิจารณาถึงความต้องการในการทำความเข้าใจการแสดงภาพ 3 มิติบนพอยต์คลาวด์ 3 มิติที่ไม่แปรผันของการเรียงสับเปลี่ยนที่ไม่แปรเปลี่ยนของฉาก 3 มิติ ผลงานที่มีอยู่ขอความช่วยเหลือจากภาพหลายมุมมอง และฉายภาพ 2D ลงในพื้นที่ 3D เพื่อแสดงฉาก 3D อย่างไรก็ตาม สิ่งนี้นำไปสู่ค่าใช้จ่ายในการคำนวณมหาศาลและการเสื่อมประสิทธิภาพ ในบทความนี้ เรานำเสนอ LL3DA ซึ่งเป็นผู้ช่วย 3D ภาษาขนาดใหญ่ที่รับพอยต์คลาวด์เป็นอินพุตโดยตรงและตอบสนองต่อทั้งคำแนะนำที่เป็นข้อความและการแสดงภาพ สิ่งนี้ช่วยให้ LMM เข้าใจปฏิสัมพันธ์ของมนุษย์ได้ดีขึ้น และยังช่วยขจัดความคลุมเครือในฉาก 3 มิติที่รกอีกด้วย การทดลองแสดงให้เห็นว่า LL3DA บรรลุผลลัพธ์ที่น่าทึ่ง และเหนือกว่าโมเดลภาษาการมองเห็น 3 มิติต่างๆ ทั้งในด้าน 3D Dense Captioning และการตอบคำถาม 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 ดาวน์โหลดการฝังที่ได้รับการฝึกอบรมล่วงหน้า ดาวน์โหลดตุ้มน้ำหนักการฝัง BERT ที่ประมวลผลล่วงหน้าจาก Huggingface และจัดเก็บไว้ในโฟลเดอร์ . ./bert-base-embedding
น้ำหนักจะ เท่ากัน จากโมเดล BERT อย่างเป็นทางการ เราเพิ่งแก้ไขชื่อของพารามิเตอร์บางตัว
การซื้อคืนของเราต้องการข้อมูล 3 มิติจาก ScanNet คำอธิบายประกอบที่เป็นภาษาธรรมชาติ และน้ำหนัก LLM ที่ได้รับการฝึกอบรมล่วงหน้า
ขั้นตอนที่ 1 ดาวน์โหลดและเตรียมข้อมูล ScanNet 3D
อัปเดต 01-07-2024: คุณสามารถดาวน์โหลดข้อมูลที่ประมวลผลล่วงหน้าได้จากที่นี่
SCANNET_DIR
เป็นโฟลเดอร์สแกนใน data/scannet/batch_load_scannet_data.py
และรันคำสั่งต่อไปนี้ cd data/scannet/
python batch_load_scannet_data.py
ขั้นตอนที่ 2 เตรียมคำอธิบายประกอบภาษา
ในการฝึกโมเดล คุณจะต้องเตรียมคำอธิบายประกอบภาษาจาก ScanRefer
, Nr3D
, ScanQA
และส่วน ScanNet ของ 3D-LLM
ScanRefer
ปฏิบัติตามคำสั่งที่นี่เพื่อดาวน์โหลดชุดข้อมูล ScanRefer
Nr3D
. ทำตามคำสั่งที่นี่เพื่อดาวน์โหลดชุดข้อมูล Nr3D
และประมวลผลล่วงหน้าScanQA
ปฏิบัติตามคำสั่งที่นี่เพื่อดาวน์โหลดชุดข้อมูล ScanQA
3D-LLM
. ข้อมูลอยู่ที่นี่ นอกจากนี้เรายังได้แบ่งปันสคริปต์ก่อนการประมวลผลของเราที่นี่เราจะอัปเดตข้อมูลที่เผยแพร่ล่าสุด (V3) จาก 3D-LLM
สุดท้าย จัดระเบียบไฟล์ลงในโฟลเดอร์ต่อไปนี้:
./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 ที่ใช้ตัวถอดรหัสเท่านั้น) ที่ Huggingface และจัดเก็บไว้ในไดเร็กทอรี . ./facebook/opt-1.3b
ตรวจสอบให้แน่ใจว่าดาวน์โหลดไฟล์ที่จำเป็นแล้ว:
./facebook/opt-1.3b/
config.json
merges.txt
pytorch_model.bin
special_tokens_map.json
tokenizer_config.json
vocab.json
อัปเดต 01-07-2024: เวอร์ชันที่เผยแพร่จะแตกต่างจากการใช้งานกระดาษของเราเล็กน้อย ในเวอร์ชันที่เปิดตัว เราได้ กำหนดรูปแบบข้อมูลให้เป็นมาตรฐาน และ ลดคำอธิบายประกอบข้อความที่ซ้ำกัน หากต้องการทำซ้ำผลลัพธ์ที่เรารายงาน โปรดใช้สคริปต์ที่ให้ไว้ใน scripts-v0
เพื่อสร้างน้ำหนักทั่วไป
bash scripts-v0/opt-1.3b/train.generalist.sh
รหัสของเราควรรองรับ LLM ที่ใช้ตัวถอดรหัสเท่านั้น ( facebook/opt-1.3b
, gpt2-xl
, meta-llama/Llama-2-7b
หรือแม้แต่ LATEST Qwen/Qwen1.5-1.8B
และ Qwen/Qwen1.5-4B
). ตรวจสอบตารางต่อไปนี้สำหรับ LLM ที่แนะนำในระดับต่างๆ ตามค่าเริ่มต้น โมเดลต่างๆ จะได้รับการฝึกฝนด้วย 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 อื่นๆ
หากต้องการฝึกโมเดลให้เป็นนักทั่วไป 3 มิติ: (เราได้อัปโหลดตุ้มน้ำหนักที่ได้รับการฝึกไว้ล่วงหน้าไปยังหน้ากอดด้วย)
bash scripts/opt-1.3b/train.generalist.sh
หลังจากที่โมเดลได้รับการฝึกฝนแล้ว คุณสามารถปรับแต่งโมเดลบน ScanQA สำหรับการตอบคำถาม 3 มิติได้:
bash scripts/opt-1.3b/tuning.scanqa.sh
และบน ScanRefer / Nr3D สำหรับคำบรรยายภาพ 3D Dense:
bash scripts/opt-1.3b/tuning.scanrefer.sh
bash scripts/opt-1.3b/tuning.nr3d.sh
คุณยังสามารถปรับแต่งโมเดลเพื่อทำนายกรอบขอบเขตสำหรับการตรวจจับวัตถุคำศัพท์แบบเปิดได้!
bash scripts/opt-1.3b/tuning.ovdet.sh
ในการประเมินโมเดลในฐานะนักทั่วไปสามมิติ:
bash scripts/opt-1.3b/eval.generalist.sh
บน ScanQA สำหรับการตอบคำถาม 3 มิติ:
bash scripts/opt-1.3b/eval.scanqa.sh
และบน ScanRefer / Nr3D สำหรับคำบรรยายภาพ 3D Dense:
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 หากมีปัญหาใดๆ เกี่ยวกับเอกสารและรหัสของเรา โปรดเปิดประเด็นได้เลย!