princeton-vl/InFlux-Synth
InFlux++ Synth InFlux++ Synth is a large-scale synthetic training dataset for the InFlux project, providing per-frame ground truth camera intrinsics and camera pose for videos with dynamic intrinsics. The dataset contains 441,840 annotated frames from 1,841 procedurally generated high-resolution videos. Every video contains 240 frames at a resolution of 1280 × 720. The dataset spans indoor and nature scenes and features changing zoom and focus, dynamic objects, and realistic… See the full description on the dataset page: https://huggingface.co/datasets/princeton-vl/InFlux-Synth.
InFlux++ Synth
InFlux++ Synth is a large-scale synthetic training dataset for the InFlux project, providing per-frame ground truth camera intrinsics and camera pose for videos with dynamic intrinsics.
The dataset contains 441,840 annotated frames from 1,841 procedurally generated high-resolution videos. Every video contains 240 frames at a resolution of 1280 × 720. The dataset spans indoor and nature scenes and features changing zoom and focus, dynamic objects, and realistic defocus blur. A subset of the videos additionally includes per-frame depth and surface normals.
The released RGB images are undistorted. Our official data loader supports applying lens distortion during training as data augmentation.
Project Website · Download and Extraction Guide · Data Loader · InFlux++ Paper · Real-World Benchmark
Dataset Partitions
InFlux++ Synth is organized into four top-level partitions:
- `indoors/` and `nature/` contain RGB frames, camera intrinsics, camera pose, and additional camera metadata.
- `indoors_full/` and `nature_full/` additionally contain depth and surface normal annotations.
All videos contain 240 frames.
The _full partitions contain distinct videos rather than duplicate copies of videos in the corresponding base partitions. The suffix indicates that these partitions include additional annotation modalities.
Scene Identifiers
Scene identifiers are contiguous within each scene type:
Across both indoor partitions, the dataset contains 1,040 indoor videos. Across both nature partitions, it contains 801 nature videos.
File Structure
The dataset is distributed using compressed archives and video containers organized by scene:
InFlux-Synth/
├── indoors/
│ └── indoors_000000/
│ ├── Image.tar.gz
│ └── camview.tar.gz
├── nature/
│ └── nature_000000/
│ ├── Image.tar.gz
│ └── camview.tar.gz
├── indoors_full/
│ └── indoors_000515/
│ ├── Image.tar.gz
│ ├── camview.tar.gz
│ ├── Depth.tar.gz
│ ├── DepthSharp.tar.gz
│ ├── SurfaceNormal/
│ │ ├── SurfaceNormal_1_0.mkv
│ │ └── SurfaceNormal_1_0_visual_maps.tar.gz
│ └── SurfaceNormalSharp/
│ ├── SurfaceNormalSharp_1_0.mkv
│ └── SurfaceNormalSharp_1_0_visual_maps.tar.gz
└── nature_full/
└── nature_000508/
├── Image.tar.gz
├── camview.tar.gz
├── Depth.tar.gz
├── DepthSharp.tar.gz
├── SurfaceNormal/
│ ├── SurfaceNormal_1_0.mkv
│ └── SurfaceNormal_1_0_visual_maps.tar.gz
└── SurfaceNormalSharp/
├── SurfaceNormalSharp_1_0.mkv
└── SurfaceNormalSharp_1_0_visual_maps.tar.gzWhen all available modalities are selected and extracted, a _full scene has the following file structure:
nature_full/
└── nature_000508/
├── Image/ # 240 RGB .png files
├── camview/ # 240 camera metadata .npz files
├── Depth/ # 240 .npy files and 240 .png previews
├── DepthSharp/ # 240 .npy files and 240 .png previews
├── SurfaceNormal/ # 240 .npy files and 240 .png previews
└── SurfaceNormalSharp/ # 240 .npy files and 240 .png previewsOnly modalities selected for download are present in an extracted scene. For depth and surface normals, the .npy arrays should be used when precise numerical values are required. The corresponding PNG files are intended only for visualization.
Successfully processed compressed files are removed after extraction.
Downloading and Extracting the Dataset
Because InFlux++ Synth is a multi-terabyte dataset, we provide utilities in the official InFlux repository for downloading and extracting the release.
The utilities support:
- Downloading selected dataset partitions
- Downloading only the modalities required for an experiment
- Extracting
.tar.gzarchives - Decoding surface normal
.mkvfiles into per-frame.npyarrays - Preserving the dataset's partition, scene, and modality structure
Approximate storage requirements are shown below:
Storage requirements may vary slightly depending on filesystem overhead and extraction settings. Users who do not require depth or surface normals can download only the Image and camview modalities for their desired partitions. Users of the _full partitions may also download only the subset of modalities needed for their experiments.
See the official download and extraction guide for the latest commands, modality selection, sample downloads, custom output-directory usage, and extraction details.
After extracting the complete release, influx-verify-synth can generate a count-based completeness report. The current verifier expects all modalities in the _full partitions, so sampled or intentionally partial downloads are reported as incomplete.
RGB Frames
Image.tar.gz
Each Image.tar.gz archive extracts into a directory containing 240 RGB frames:
Image/
├── ...
└── *.pngEach RGB image has shape:
(720, 1280, 3)The RGB renders include depth-of-field effects produced using Blender's thin-lens camera model.
All released RGB images are undistorted. Lens distortion may be applied at load time using the official data loader described in Data Loader and Lens Distortion.
Camera Intrinsics, Pose, and Metadata
InFlux++ Synth distinguishes between camera focal length, lens focal length, lens to object distance, and focus distance:
LFL and CFL are reported in millimeters. LTO is reported in meters.
Cross-dataset note: In InFlux++ Synth, thefocus_distancefield represents LTO. In InFlux-Real,focus_distance_mrepresents FD. These fields therefore should not be interpreted as the same physical measurement.
camview.tar.gz
Each camview.tar.gz archive extracts into a directory containing 240 .npz files paired one-to-one with the RGB frames:
camview/
├── ...
└── *.npzEach .npz file contains the following fields:
All four dataset partitions include K, T, and the additional camera metadata listed above.
Focal Length and Lens Breathing
The generation pipeline varies lens focal length and lens to object distance over time. Lens breathing is enabled for every released video, so CFL is computed from LFL and LTO using the thin-lens model.
In particular:
focal_lengthandLFLcontain numerically identical LFL values.CFLcontains the corresponding camera focal length.Kis constructed using CFL.
Therefore, the fx and fy entries in K correspond to CFL expressed in pixel units.
Camera Pose Convention
InFlux++ Synth follows the camera-coordinate convention used by Infinigen.
T is a camera-to-world transformation matrix. Its translation component is expressed in meters.
The camera coordinate system uses:
- +X: right
- +Y: down
- +Z: forward
Pixel Coordinate Convention
Pixel coordinates use center-at-half-integer indexing. For an image with width \(W\) and height \(H\), the image center is:
(W / 2, H / 2)For the released 1280 × 720 images, the image center is therefore:
(640, 360)Depth Maps
Depth annotations are provided only in the indoors_full/ and nature_full/ partitions.
Depth.tar.gz
Contains depth rendered with depth of field using Blender's thin-lens camera model. Each pixel may aggregate information from multiple sampled aperture rays contributing to that pixel. Consequently, depth values can blend near object boundaries.
DepthSharp.tar.gz
Contains depth rendered without depth of field. This version corresponds to an ideal pinhole-camera model and preserves sharp object boundaries.
Extracted Depth Format
Each depth archive extracts into exactly:
- 240 numerical
.npyarrays - 240 corresponding colorized
.pngpreviews
The numerical depth arrays have shape:
(720, 1280)Each numerical value represents camera-space Z depth in meters.
The colorized PNG previews have shape:
(720, 1280, 3)The PNG files are intended for visualization and should not be used as numerical depth values.
Surface Normals
Surface normal annotations are provided only in the indoors_full/ and nature_full/ partitions.
Each _full scene contains two surface normal directories:
SurfaceNormal/
SurfaceNormalSharp/SurfaceNormal
The SurfaceNormal_1_0.mkv container stores numerical surface normals rendered with depth of field. Values may blend near object boundaries because each pixel aggregates information over sampled aperture rays.
The corresponding SurfaceNormal_1_0_visual_maps.tar.gz archive contains PNG visualizations of these surface normal maps.
SurfaceNormalSharp
The SurfaceNormalSharp_1_0.mkv container stores numerical surface normals rendered without depth of field. This version corresponds to an ideal pinhole-camera model and preserves sharp boundaries between surfaces.
The corresponding SurfaceNormalSharp_1_0_visual_maps.tar.gz archive contains PNG visualizations of these sharp surface normal maps.
Extracted Surface Normal Format
Decoding each .mkv container produces exactly 240 numerical .npy arrays. Extracting the corresponding visual-map archive produces exactly 240 .png previews.
The numerical surface normal arrays have shape:
(720, 1280, 3)Each pixel stores a unit surface normal vector in camera space.
The PNG previews also have shape:
(720, 1280, 3)For training, evaluation, or other numerical analysis, use the .npy arrays decoded from the .mkv files. The PNG files are intended only for visualization.
Surface Normal Coordinate Convention
Surface normals use the Infinigen surface normal convention. They are expressed in camera space using:
- +X: right
- +Y: up
- +Z: backward
This differs from the camera pose convention: the Y and Z axes have opposite signs.
Data Loader and Lens Distortion
All RGB images in Image/ are stored without lens distortion, and no distortion coefficients are included in the released camera metadata.
We provide an official data loader in the main InFlux repository. The data loader demonstrates how to load the RGB frames and corresponding camera metadata and how to apply lens distortion to the images as a data augmentation step during training.
Because distortion is applied at load time rather than baked into the released images, users can configure or disable the augmentation according to their experimental setup. See the data loader implementation for the exact distortion model, parameters, and usage instructions.
Recommended Use and Evaluation
InFlux++ Synth is intended for training and finetuning dynamic camera intrinsics prediction models. Its controlled camera and rendering variations, optional lens distortion augmentation, and auxiliary pose, depth, and surface normal annotations also support robustness and multimodal-supervision experiments.
The dataset does not define an official training/validation split.
For real-world validation and benchmarking, use InFlux-Real. Follow the official submission instructions to evaluate predictions on the InFlux and InFlux++ Real test splits. Results are private by default; after evaluation, the submitter can publish a result to the live InFlux leaderboard.
Citation
If you use InFlux++ Synth, please cite the InFlux++ paper.
If you additionally evaluate on InFlux-Real, please follow the citation guidance in the InFlux-Real dataset card.
InFlux++
InFlux++: Real and Synthetic Data for Estimating Dynamic Camera Intrinsics European Conference on Computer Vision, 2026
@inproceedings{liang2026influxpp,
author={Liang, Erich and Kha-Uong, Caleb and Saran, Chinmaya and Dey, Sreemanti and Liu, David W. and Ouyang, Junhan and Zhou, Benjamin and Deng, Jia},
editor={Favaro, Paolo and Kukelova, Zuzana and Maki, Atsuto and Rohrbach, Anna and Schindler, Konrad and Tombari, Federico},
title={{InFlux++}: Real and Synthetic Data for Estimating Dynamic Camera Intrinsics},
booktitle={Computer Vision -- ECCV 2026},
year={2026},
publisher={Springer Nature Switzerland},
address={Cham},
pages={443--460},
isbn={978-3-032-37235-2}
}