프로젝트 페이지 • ?Arxiv 논문 • ?YouTube • ?HuggingFace 데모(WIP) • 인용
LL3DA는 복잡한 3D 환경 내에서 시각적 및 텍스트 상호 작용에 모두 응답할 수 있는 대형 언어 3D 도우미입니다.
최근 LMM(Large Multimodal Model)의 발전으로 인간-기계 상호 작용의 다양한 응용이 가능해졌습니다. 그러나 복잡하고 다양한 3D 환경에서 이해하고, 추론하고, 계획할 수 있는 LMM을 개발하는 것은 여전히 어려운 주제로 남아 있으며, 특히 3D 장면의 순열 불변 포인트 클라우드 3D 표현을 이해해야 하는 요구를 고려할 때 더욱 그렇습니다. 기존 작품은 다시점 이미지에서 도움을 구하고, 2D 기능을 3D 장면 표현으로 3D 공간에 투영합니다. 그러나 이로 인해 엄청난 계산 오버헤드와 성능 저하가 발생합니다. 본 논문에서는 포인트 클라우드를 직접 입력으로 사용하고 텍스트 지침과 시각적 프롬프트에 모두 응답하는 대형 언어 3D 도우미인 LL3DA를 소개합니다. 이는 LMM이 인간 상호 작용을 더 잘 이해하고 복잡한 3D 장면에서 모호성을 제거하는 데 도움이 됩니다. 실험에 따르면 LL3DA는 놀라운 결과를 달성하고 3D Dense Captioning 및 3D Question Answering 모두에서 다양한 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
을 지원해야 합니다. ). 다양한 규모의 추천 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
모델이 훈련된 후 3D 질문 답변을 위해 ScanQA에서 모델을 조정할 수 있습니다.
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
3D 질문 답변을 위한 ScanQA:
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 라이센스에 따라 배포됩니다. 우리 논문과 코드에 문제가 있으면 언제든지 이슈를 열어주세요!