CoolFace
Datasetpublic

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.

sourceHugging Facecc-by-4.0updated 9d agoView on Hugging Face
1likes18kdownloads
Dataset Card

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.
PartitionScene typeVideosFramesPer-frame contents
`indoors/`Indoor515123,600RGB, intrinsics, pose, and camera metadata
`nature/`Nature508121,920RGB, intrinsics, pose, and camera metadata
`indoors_full/`Indoor525126,000Above, plus depth and surface normals
`nature_full/`Nature29370,320Above, plus depth and surface normals
Combined—1,841441,840—

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:

PartitionScene identifier range
indoors/indoors_000000–indoors_000514
indoors_full/indoors_000515–indoors_001039
nature/nature_000000–nature_000507
nature_full/nature_000508–nature_000800

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:

text
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.gz
PathDescription
Image.tar.gzCompressed archive containing RGB frames
camview.tar.gzCompressed archive containing per-frame camera intrinsics, pose, and lens metadata files
Depth.tar.gzCompressed archive containing defocus-blurred numerical depth maps and colorized previews
DepthSharp.tar.gzCompressed archive containing sharp numerical depth maps and colorized previews
SurfaceNormal/SurfaceNormal_1_0.mkvMKV container containing compressed numerical surface normal data
SurfaceNormal/SurfaceNormal_1_0_visual_maps.tar.gzCompressed archive containing PNG visualizations of the defocus-blurred surface normal maps
SurfaceNormalSharp/SurfaceNormalSharp_1_0.mkvMKV container containing compressed numerical sharp surface normal data
SurfaceNormalSharp/SurfaceNormalSharp_1_0_visual_maps.tar.gzCompressed archive containing PNG visualizations of the sharp surface normal maps

When all available modalities are selected and extracted, a _full scene has the following file structure:

text
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 previews

Only 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.gz archives
  • —Decoding surface normal .mkv files into per-frame .npy arrays
  • —Preserving the dataset's partition, scene, and modality structure

Approximate storage requirements are shown below:

Data groupAs distributedAfter extraction and decoding
Images, camera intrinsics, and camera poses573 GiB573 GiB
Depth + DepthSharp1.14 TiB1.41 TiB
SurfaceNormal + SurfaceNormalSharp1.38 TiB4.20 TiB
Complete release3.08 TiB6.16 TiB

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:

text
Image/
├── ...
└── *.png

Each RGB image has shape:

text
(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:

TermDefinition
Camera Focal Length (CFL)Distance from the camera's optical center to its imaging plane along the optical axis. CFL is used to construct the camera intrinsics matrix.
Lens Focal Length (LFL)The CFL of a camera when the lens is focused at infinity. This corresponds to the focal length typically marked on a real lens's zoom barrel.
Lens to Object Distance (LTO)Distance from the lens's optical center to the object or plane in focus, measured along the optical axis.
Focus Distance (FD)Distance from the camera sensor plane to the object or plane in focus. Under these definitions, FD is equal to CFL + LTO.

LFL and CFL are reported in millimeters. LTO is reported in meters.

Cross-dataset note: In InFlux++ Synth, the focus_distance field represents LTO. In InFlux-Real, focus_distance_m represents 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:

text
camview/
├── ...
└── *.npz

Each .npz file contains the following fields:

KeyShape or unitDescription
K(3, 3)Camera intrinsics matrix
T(4, 4)Homogeneous camera-to-world transformation matrix; the translation component is expressed in meters
HW(2,)Image resolution in [H, W] order
focus_distancemetersLens to object distance (LTO)
focal_lengthmillimetersLens focal length (LFL); numerically identical to LFL
LFLmillimetersLens focal length; numerically identical to focal_length
CFLmillimetersCamera focal length used to construct K

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_length and LFL contain numerically identical LFL values.
  • —CFL contains the corresponding camera focal length.
  • —K is 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:

text
(W / 2, H / 2)

For the released 1280 × 720 images, the image center is therefore:

text
(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 .npy arrays
  • —240 corresponding colorized .png previews

The numerical depth arrays have shape:

text
(720, 1280)

Each numerical value represents camera-space Z depth in meters.

The colorized PNG previews have shape:

text
(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:

text
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:

text
(720, 1280, 3)

Each pixel stores a unit surface normal vector in camera space.

The PNG previews also have shape:

text
(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

arXiv

bibtex
@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}
}