Страница проекта • ?Arxiv Paper • ?YouTube • ?HuggingFace Demo (WIP) • Цитирование
LL3DA — это 3D-помощник на большом языке, который может реагировать как на визуальные, так и на текстовые взаимодействия в сложных 3D-средах .
Недавние достижения в области больших мультимодальных моделей (LMM) сделали возможным использование различных приложений во взаимодействии человека и машины. Однако разработка LMM, которые могут понимать, рассуждать и планировать в сложных и разнообразных трехмерных средах, остается сложной темой, особенно с учетом потребности в понимании трехмерных представлений трехмерной сцены в виде облака точек, инвариантных к перестановкам. Существующие работы обращаются за помощью к изображениям с несколькими изображениями и проецируют 2D-функции в трехмерное пространство в виде трехмерных представлений сцен. Однако это приводит к огромным вычислительным затратам и снижению производительности. В этой статье мы представляем 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. Загрузите предварительно обученные внедрения. Загрузите предварительно обработанные веса внедрения BERT с сайтаhuggingface и сохраните их в папке ./bert-base-embedding
. Веса такие же, как и в официальной модели BERT, мы просто изменили названия некоторых параметров.
Для нашего репозитория требуются 3D-данные из ScanNet, аннотации на естественном языке и предварительно обученные веса LLM.
Шаг 1. Загрузите и подготовьте данные ScanNet 3D.
Обновления от 01 июля 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 июля 2024 г. Выпущенная версия немного отличается от нашей бумажной реализации. В нашей выпущенной версии мы стандартизировали формат данных и удалили повторяющиеся текстовые аннотации . Чтобы воспроизвести результаты, о которых мы сообщаем, используйте сценарии, представленные в 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 в разных масштабах! По умолчанию модели обучаются на восьми графических процессорах.
<1Б | 1Б-4Б | ~7Б |
---|---|---|
gpt2 (124 м) | TinyLlama-1.1B (1.1б) | facebook/opt-6.7b (6.7b) |
facebook/opt-125m (125м) | facebook/opt-1.3b (1.3b) | meta-llama/Llama-2-7b-hf (6.7b) |
gpt2-medium (355 м) | gpt2-xl (1.6b) | Qwen/Qwen1.5-7B (7.7б) |
Qwen/Qwen1.5-0.5B (620м) | Qwen/Qwen1.5-1.8B (1,8б) | - |
gpt2-large (774 м) | facebook/opt-2.7b (2.7b) | - |
- | microsoft/phi-2 (2.8b) | - |
- | Qwen/Qwen1.5-4B (3.9б) | - |
Мы предоставляем сценарии обучения в папке 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
И на ScanRefer/Nr3D для плотных 3D-титров:
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
И на ScanRefer/Nr3D для плотных 3D-титров:
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. Если есть какие-либо проблемы с нашей бумагой и кодом, смело открывайте проблему!