SpatialVID/SpatialVID
SpatialVID: A Large-Scale Video Dataset with Spatial Annotations Jiahao Wang1* Yufeng Yuan1* Rujie Zheng1* Youtian Lin1 Jian Gao1 Lin-Zhuo Chen1 Yajie Bao1 Yi Zhang1 Chang Zeng1 Yanxi Zhou1 Xiaoxiao Long1 Hao Zhu1 Zhaoxiang Zhang2 Xun Cao1 Yao Yao1† 1Nanjing University 2Institute of Automation, Chinese Academy of Science *Equal Contribution †Corresponding Author CVPR 2026… See the full description on the dataset page: https://huggingface.co/datasets/SpatialVID/SpatialVID.
Thành tựu nổi bật
Những danh hiệu mới nhất của dự án
#1 Repository Của Tháng
#1 Repository Của Tháng
#1 Repository Của Tháng
SpatialVID: A Large-Scale Video Dataset with Spatial Annotations
SpatialVID
Directory Structure
DATA_PATH/
├─ annotations/
│ ├─ group_0001/
│ │ ├─ 0a00f99d-9d9a-5265-9548-e97a34c1302c/
│ │ │ ├─ caption.json
│ │ │ ├─ dyn_masks.npz
│ │ │ ├─ indexes.txt
│ │ │ ├─ instructions.json
│ │ │ ├─ intrinsics.npy
│ │ │ └─ poses.npy
│ │ ├─ 0a7b25d8-41fd-563f-bec3-9fb2b675be3e/
│ │ │ ├─ caption.json
│ │ │ ├─ dyn_masks.npz
│ │ │ ├─ indexes.txt
│ │ │ ├─ instructions.json
│ │ │ ├─ intrinsics.npy
│ │ │ └─ poses.npy
│ │ └─ ...
│ ├─ group_0002/
│ └─ ...
├─ data/
│ ├─ train/
│ │ └─ SpatialVID_metadata.csv
├─ depths/
│ ├─ group_0001/
│ │ ├─ 0a00f99d-9d9a-5265-9548-e97a34c1302c.zip
│ │ ├─ 0a7b25d8-41fd-563f-bec3-9fb2b675be3e.zip
│ │ └─ ...
│ ├─ group_0002/
│ └─ ...
├─ videos/
│ ├─ group_0001/
│ │ ├─ 0a00f99d-9d9a-5265-9548-e97a34c1302c.mp4
│ │ ├─ 0a7b25d8-41fd-563f-bec3-9fb2b675be3e.mp4
│ │ └─ ...
│ ├─ group_0002/
│ └─ ...
└─ README.md
Dataset Download
You can download the entire SpatialVID dataset using the following command:
hf download SpatialVID/SpatialVID --repo-type dataset
The whole dataset is approximately 7.67TB in size. We have split the dataset into 545 groups for easier management. Each group contains approximately 14GB of video data and 1.5GB of annotation data, with naming conventions following the format group_0*** (e.g., group_0001, group_0002).
For downloading specific files (instead of the full dataset), please refer to the download_SpatialVID.py provided in our GitHub repository.
Usage Guide
1. Unzipping Group Files
After downloading the group files (in .tar.gz format), use the tar command to extract their contents. For example:
# Extract annotation groups
tar -xzvf annotations/group_0001.tar.gz
tar -xzvf annotations/group_0002.tar.gz
tar -xzvf annotations/group_0003.tar.gz
...
# Extract video groups (if downloaded separately)
tar -xzvf videos/group_0001.tar.gz
tar -xzvf videos/group_0002.tar.gz
...
2. Using the Metadata File
The SpatialVID_HQ_metadata.csv file contains comprehensive metadata for all video clips in the dataset. It can be loaded with pandas for easy filtering and analysis based on your research needs.
Metadata Fields Explained
| Field Name | Description |
|---|---|
id | Unique identifier for each video clip (matches the annotation folder name). |
group id | Identifier of the group the video clip belongs to (e.g., group_0001). |
video path | Relative path to the video file (e.g., videos/group_0001/xxx.mp4). |
annotation path | Relative path to the annotation folder (e.g., annotations/group_0001/xxx/). |
num frames | Total number of frames in the video clip. |
fps | Frames per second (FPS) of the video clip. |
resolution | Resolution of the video clip (e.g., 1920x1080). |
aesthetic score | Subjective score evaluating the video’s visual aesthetics (0–10). |
luminance score | Score measuring the video’s overall brightness. |
motion score | Score quantifying the intensity of motion in the video (0–20). |
ocr score | Score indicating the proportion of text occupying the screen (0–1). |
moveDist | Total distance of camera movement (in meters) during the clip. |
distLevel | Categorized camera movement level: 1(low) → 5(extreme). |
rotAngle | Total camera rotation angle (in degrees) during the clip. |
trajTurns | Number of direction changes in the camera’s movement trajectory. |
dynamicRatio | Proportion of dynamic content (e.g., moving objects) in the video (0–1). |
motionTags | Tags describing the type of motion (e.g., "up", "right"). |
sceneType | Scene category (e.g., interior, urban, natural). |
brightness | Brightness category (e.g., Dark, Dim, Bright). |
timeOfDay | Time of day when the video was recorded (e.g., Daytime, Night). |
weather | Weather conditions during recording (e.g., Sunny, Cloudy, Rainy). |
crowdDensity | Density of people in the scene (e.g., Sparse, Moderate, Dense). |
Example: Loading Metadata with Pandas
import pandas as pd
# Load the metadata file
metadata = pd.read_csv('data/train/SpatialVID_metadata.csv')
# Example: Filter videos with "urban" scene type and FPS ≥ 24
filtered_metadata = metadata[(metadata['sceneType'] == 'urban') & (metadata['fps'] >= 24)]
print(filtered_metadata.head())
3. Detailed Explanation of Annotation Files
Each video clip is paired with a dedicated annotation folder (named after the video’s id). The folder contains 5 key files, each serving a specific purpose:
1. caption.json
A structured JSON file with descriptive text for the video clip, covering scene details, camera motion, and dynamic elements. Its structure includes:
SceneSummary: A concise overview of the entire scene.SceneDescription: A detailed, granular description of the scene (e.g., objects, backgrounds, lighting).CameraMotion: A clear account of how the camera moves throughout the clip (e.g., "slow pan to the right").ShotImmersion: An immersive narrative that simulates the viewer’s experience of the shot.CategoryTags: A list of tags aligning with metadata fields (e.g.,sceneType,brightness,weather).
2. dyn_masks.npz
A compressed NumPy file storing dynamic masks for each annotated frame. These binary masks (0 = static, 1 = dynamic) highlight regions with moving objects (e.g., cars, pedestrians). To decompress and use these masks, refer to the utility script expand_npz.py in our GitHub repo.
3. intrinsics.npy
A NumPy file containing the camera’s intrinsic parameters (critical for 3D reconstruction). It stores a (n, 4) array, where n is the number of annotated frames. Each row [fx, fy, cx, cy] represents normalized intrinsics:
fx,fy: Normalized focal lengths (scaled by image width/height).cx,cy: Normalized coordinates of the principal point (scaled by image width/height).
To convert these to pixel-space intrinsics (for practical use), apply the following formulas:
# Assume image_width and image_height are from the video's resolution
fx_pixel = fx * image_width
fy_pixel = fy * image_height
cx_pixel = cx * image_width
cy_pixel = cy * image_height
4. poses.npy
A NumPy file recording the camera’s 3D pose for each annotated frame. It stores a (n, 7) array, where n is the number of annotated frames. Each row [tx, ty, tz, qx, qy, qz, qw] represents:
tx, ty, tz: Translation vector (world-to-camera coordinates in the OpenCV coordinate system, in meters).qx, qy, qz, qw: Unit quaternion (camera orientation following the right-hand rule, in the OpenCV coordinate system).
For coordinate transformation related to the pose data, please refer to the utility script quat_to_mat.py.
5. instructions.json
A JSON file with motion instructions for transitions between consecutive annotated frames. The file uses key-value pairs, where keys follow the format [frame1]->[frame2] (e.g., 0->6) and values are motion commands. Supported instructions include:
Dolly In/Out: Move the camera forward/backward along its viewing direction.Truck Left/Right: Move the camera left/right while maintaining orientation.Pedestal Up/Down: Move the camera up/down while maintaining orientation.Tilt Up/Down: Rotate the camera up/down around its horizontal axis.Pan Left/Right: Rotate the camera left/right around its vertical axis.Roll CW/CCW: Rotate the camera clockwise/counterclockwise around its viewing axis.Stay: Keep the camera stationary (no movement).
6. depths.zip (Optional)
A compressed file containing precomputed depth maps for each annotated frame. The depth maps are stored in inverse depth format. To decompress and use these depth maps, refer to the utility script read_depth.py in our GitHub repo.
Important Note on Annotated Frames
Annotations are generated for frames extracted at intervals of int(fps/5). For example:
- If a video has 30 FPS, frames are extracted at indices
0, 6, 12, 18, 24, .... - If a video has 25 FPS, frames are extracted at indices
0, 5, 10, 15, ....
And the current instuctions are generated by get_instructions.py in our GitHub repo, which you can modify the interval and threshold parameters to customize the frame selection process based on your experimental needs.
License
SpatialVID is released under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC-BY-NC-SA 4.0). By using this dataset, you agree to the following terms:
- Attribution: You must credit the original source of the dataset.
- Non-Commercial Use: The dataset may not be used for commercial purposes.
- ShareAlike: Any modified or derived works must be released under the same license.
For the full license text, visit: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.
If you are the copyright owner of any video in our dataset and you need it to be removed, please contact us, and we will remove the video samples from our dataset / Github / project webpage / technical presentation as soon as possible.
Citation
If you use SpatialVID in your research, please cite our work using the following format (citation will be updated upon paper publication):
@article{wang2025spatialvid,
title={Spatialvid: A large-scale video dataset with spatial annotations},
author={Wang, Jiahao and Yuan, Yufeng and Zheng, Rujie and Lin, Youtian and Gao, Jian and Chen, Lin-Zhuo and Bao, Yajie and Zhang, Yi and Zeng, Chang and Zhou, Yanxi and others},
journal={arXiv preprint arXiv:2509.09676},
year={2025}
}
Similar Projects
Discover other similar projects and AI models.
Dataset Card for GLUE Dataset Summary GLUE, the General Language Understanding Evaluation benchmark (https://gluebenchmark.com/) is a collection of resources for training, evaluating, and analyzing natural language understanding systems. Supported Tasks and Leaderboards The leaderboard for the GLUE benchmark can be found at this address. It comprises the following tasks: ax A manually-curated evaluation dataset for fine-grained… See the full description on the dataset page: https://huggingface.co/datasets/nyu-mll/glue.
a.k.a. Awesome ChatGPT Prompts This is a Dataset Repository mirror of prompts.chat — a social platform for AI prompts. 📢 Notice This Hugging Face dataset is a mirror. For the latest prompts, features, and community contributions, please visit: 🌐 Website: prompts.chat 📦 GitHub: github.com/f/awesome-chatgpt-prompts About prompts.chat is an open-source platform where users can share, discover, and collect AI prompts from the community. The project can… See the full description on the dataset page: https://huggingface.co/datasets/fka/prompts.chat.
OpenAssistant Conversations Dataset (OASST1) Dataset Summary In an effort to democratize research on large-scale alignment, we release OpenAssistant Conversations (OASST1), a human-generated, human-annotated assistant-style conversation corpus consisting of 161,443 messages in 35 different languages, annotated with 461,292 quality ratings, resulting in over 10,000 fully annotated conversation trees. The corpus is a product of a worldwide crowd-sourcing effort… See the full description on the dataset page: https://huggingface.co/datasets/OpenAssistant/oasst1.
Dataset Card for GSM8K Dataset Summary GSM8K (Grade School Math 8K) is a dataset of 8.5K high quality linguistically diverse grade school math word problems. The dataset was created to support the task of question answering on basic mathematical problems that require multi-step reasoning. These problems take between 2 and 8 steps to solve. Solutions primarily involve performing a sequence of elementary calculations using basic arithmetic operations (+ − ×÷) to… See the full description on the dataset page: https://huggingface.co/datasets/openai/gsm8k.
🐋 The OpenOrca Dataset! 🐋 We are thrilled to announce the release of the OpenOrca dataset! This rich collection of augmented FLAN data aligns, as best as possible, with the distributions outlined in the Orca paper. It has been instrumental in generating high-performing model checkpoints and serves as a valuable resource for all NLP researchers and developers! Official Models Mistral-7B-OpenOrca Our latest model, the first 7B to score better overall than all… See the full description on the dataset page: https://huggingface.co/datasets/Open-Orca/OpenOrca.
📚 FineWeb-Edu 1.3 trillion tokens of the finest educational data the 🌐 web has to offer Paper: https://arxiv.org/abs/2406.17557 What is it? 📚 FineWeb-Edu dataset consists of 1.3T tokens and 5.4T tokens (FineWeb-Edu-score-2) of educational web pages filtered from 🍷 FineWeb dataset. This is the 1.3 trillion version. To enhance FineWeb's quality, we developed an educational quality classifier using annotations generated by LLama3-70B-Instruct. We… See the full description on the dataset page: https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu.
Dataset Card for Alpaca Dataset Summary Alpaca is a dataset of 52,000 instructions and demonstrations generated by OpenAI's text-davinci-003 engine. This instruction data can be used to conduct instruction-tuning for language models and make the language model follow instruction better. The authors built on the data generation pipeline from Self-Instruct framework and made the following modifications: The text-davinci-003 engine to generate the instruction data… See the full description on the dataset page: https://huggingface.co/datasets/tatsu-lab/alpaca.
Summary databricks-dolly-15k is an open source dataset of instruction-following records generated by thousands of Databricks employees in several of the behavioral categories outlined in the InstructGPT paper, including brainstorming, classification, closed QA, generation, information extraction, open QA, and summarization. This dataset can be used for any purpose, whether academic or commercial, under the terms of the Creative Commons Attribution-ShareAlike 3.0 Unported… See the full description on the dataset page: https://huggingface.co/datasets/databricks/databricks-dolly-15k.
Dataset containing synthetically generated (by GPT-3.5 and GPT-4) short stories that only use a small vocabulary. Described in the following paper: https://arxiv.org/abs/2305.07759. The models referred to in the paper were trained on TinyStories-train.txt (the file tinystories-valid.txt can be used for validation loss). These models can be found on Huggingface, at roneneldan/TinyStories-1M/3M/8M/28M/33M/1Layer-21M. Additional resources: tinystories_all_data.tar.gz - contains a superset of… See the full description on the dataset page: https://huggingface.co/datasets/roneneldan/TinyStories.