Multiview Data Directory Structureο
The detailed documentation for a multiview project data directory.
1. Base Structure (Required)
/path/to/project/
βββ project.yaml ......................................[1]
βββ labeled-data/ .....................................[2]
β βββ session0_view0/
β β βββ frame000001.png
β βββ session0_view1/
β βββ frame000001.png
βββ videos/ ...........................................[3]
β βββ session0_view0.mp4
β βββ session0_view1.mp4
βββ CollectedData_view0.csv ...........................[4]
βββ CollectedData_view1.csv
βββ CollectedData_view0.unlabeled.jsonl ...............[5]
βββ CollectedData_view1.unlabeled.jsonl
2. Camera Calibrations (Optional)
/path/to/project/
βββ calibration.toml ...................................[6]
βββ calibrations/ ......................................[7]
βββ session0.toml
βββ session1.toml
βββ ...
3. Bounding Boxes (Optional)
/path/to/project/ ........................................[8]
βββ bboxes_view0.csv
βββ bboxes_view1.csv
Detailed Requirementsο
project.yaml file [1]ο
Required for App use. Storage of App project settings. See Project Yaml File Format
Labeled Data folder [2]ο
This folder contains extracted frames for labeling and training. Session and View information embedded in the paths is used to power multiview features.
In addition to the primary frame being extracted, the 2 frames to the left and right of are also extracted. These are used when training context models and for future labeler features that use context information.
Frame indices are zero-padded to have a total of 8 digits.
Video Files [3]ο
Storage for imported video files, stored as <SessionKey>_<View>.mp4.
Video files are transcoded using libx264 yuv420p. For the App viewer
to be frame-accurate, they are also encoded using an Intra frame for every frame
(Group of Pictures size 1).
Used as the default source of videos for unsupervised training, and the source of videos in the App viewer.
Label CSV Files [4]ο
A single multiview label file in the app is represented by multiple singleview label files on disk. The files are aligned across views: the Nth row in each file is for the same frame across cameras.
The naming convention is <LabelFileKey>_<View>.csv where a LabelFileKey of βCollectedDataβ
signifies that the default label file for training.
Unlabeled Sidecar Files [5]ο
These files contain the unlabeled frame queue for the App. The files are aligned across views: the Nth row in each file is for the same frame across cameras. They are newline-separated JSONs.
For example, CollectedData_view0.unlabeled.jsonl contains:
{"frame_path": "labeled-data/session0_view0/frame00000001.png", predictions: null}
{"frame_path": "labeled-data/session0_view0/frame00000123.png, predictions: null}
...
The predictions field contains initial predictions for the unlabeled frame. This field is only populated when extracting a frame from the Viewer. Example:
{"frame_path":"labeled-data/session0_view0/frame00000001.png","predictions":{"model_name":"50_epoch","date_time":1770480952922,"predictions":[{"keypoint_name":"head","x":156.1,"y":105.3},{"keypoint_name":"tail","x":313.8,"y":255.4}]}}
Project-level Camera Calibration File [6]ο
Used as a fallback when the session-level calibration file is not found.
Session-level Camera Calibration Files [7]ο
Used for App Labeler Multiview features: triangulation/reprojection and bundle adjustment
Used for CLI 3d losses and augmentation features
For the CLI, calibration is discovered automatically from image paths. Frames must follow
the path structure labeled-data/<session>_<view>/<filename>.ext; the session is
extracted by stripping the last _<view> suffix from the subfolder name (e.g.,
labeled-data/session0_view0/frame00001.png β session session0). The CLI then
looks for calibrations/<session>.toml first, then falls back to calibration.toml
at the project root. The config field camera_params_file can be set to a
calibrations.csv to override auto-discovery with explicit per-frame calibration
control.
The App does not use this, instead it maps from Session to Calibration using the directory structure.
Bounding Boxes [7]ο
The bounding box coordinates for each labeled frame to properly apply 3D augmentations and loss functions.