This repository hosts the code for the paper:
SQA3D: Situated Question Answering in 3D Scenes (ICLR 2023)
by Xiaojian Ma*, Silong Yong*, Zilong Zheng, Qing Li, Yitao Liang, Song-Chun Zhu and Siyuan Huang
🔥Submission guide and leaderboard! | arXiv | slides | Project page
utils
folder!We propose a new task to benchmark scene understanding of embodied agents: Situated Question Answering in 3D Scenes (SQA3D). Given a scene context(e.g., 3D scan), SQA3D requires the tested agent to first understand its situation(position, orientation, etc.) in the 3D scene as described by text, then reason about its surrounding environment and answer a question under that situation. Based upon 650 scenes from ScanNet, we provide a dataset centered around 6.8k unique situations, along with 20.4k descriptions and 33.4k diverse reasoning questions for these situations. These questions examine a wide spectrum of reasoning capabilities for an intelligent agent, ranging from spatial relation comprehension to commonsense understanding, navigation, and multi-hop reasoning. SQA3D imposes a significant challenge to current multi-modal especially 3D reasoning models. We evaluate various state-of-the-art approaches and find that the best one only achieves an overall score of 47.20%, while amateur human participants can reach 90.06%. We believe SQA3D could facilitate future embodied AI research with stronger situation understanding and reasoning capability.
Install PyTorch:
conda install pytorch=1.12.0 torchvision torchaudio cudatoolkit=11.3 -c pytorch
Install pointnet2, please follow the instruction there.
Install the necessary packages with requirements.txt
:
pip install -r requirements.txt
The code has been tested with Python 3.9, PyTorch 1.12.0 and CUDA 11.3 on Ubuntu 20.04
Please refer to data format. Note that we only provide the SQA3D annotations. To obtain the scene data (3D scans, egocentric videos or BEV pictures), please refer to Training. SQA3D data is hosted here.
For each model, please refer to ScanQA, MCAN, ClipBERT, Zero-shot (LLM) for details on how to prepare the scene data and run some experiments.
To visualize the data in SQA3D, run
python utils/visualize_data.py --scene_id <scene_id> --anno_path <anno_path> --ply_path <ply_path>