Skip to main content
KAPTURE
Continuous Integration Status

Overview

Kapture is a pivot file format, based on text and binary files, used to describe SfM (Structure From Motion) and more generally sensor-acquired data.

It can be used to store sensor parameters and raw sensor data:

  • cameras

  • images

  • lidar and other sensor data

As well as computed data:

  • 2d features

  • 3d reconstruction

Finally, many popular datasets can directly be downloaded using the convenient downloader!

Specifications

The format specification is detailed in the kapture format specifications document.

Example File Structure

This is an example file structure of a dataset in the kapture format.

my_dataset                 # Dataset root path
├─ sensors/                # Sensor data root path
│  ├─ sensors.txt          # list of all sensors with their specifications (e.g. camera intrinsics)
│  ├─ rigs.txt             # geometric relationship between sensors (optional)
│  ├─ trajectories.txt     # extrinsics (timestamp, sensor, pose)
│  ├─ records_camera.txt   # all records of type 'camera' (timestamp, sensor and path to image)
│  ├─ records_SENSOR_TYPE.txt # all records of type SENSOR_TYPE (other sensors, eg: 'magnetic', 'pressure'...)
│  └─ records_data/            # image and lidar data path
│     ├─ map/cam_01/00001.jpg  # image path used in records_camera.txt (example)
│     ├─ map/cam_01/00002.jpg
│     ├─ map/lidar_01/0001.pcd # lidar data path used in records_lidar.txt
│     ├─ query/query001.jpg    # image path used in records_camera.txt
│     ├─ ...
└─ reconstruction/
   ├─ keypoints/                       # 2D keypoints files
   │  ├─ r2d2_WASF-N8_20k              # identify the type of keypoints
   │  │  ├─ keypoints.txt              # type of keypoint (shape and dtype)
   │  │  ├─ map/cam_01/00001.jpg.kpt   # keypoints for corresponding image (example)
   │  │  ├─ query/query001.jpg.kpt     # keypoints for corresponding image (example)
   │  │  ├─ ...
   │  ├─ d2_tf                         # identify the type of keypoints
   │  │  ├─ keypoints.txt              # type of keypoint (shape and dtype)
   │  │  ├─ keypoints.tar              # instead of regular files, you can use an archive
   │  │  │  ├─ map/cam_01/00001.jpg.kpt   # keypoints for corresponding image (example)
   │  │  │  ├─ query/query001.jpg.kpt     # keypoints for corresponding image (example)
   │  │  │  ├─ ...
   │  ├─ ...
   ├─ descriptors/                     # keypoint descriptors files
   │  ├─ r2d2_WASF-N8_20k              # identify the type of descriptors
   │  │  ├─ descriptors.txt            # type of descriptor (keypoints type, shape and dtype)
   │  │  ├─ map/cam_01/00001.jpg.desc  # descriptors for corresponding image (example)
   │  │  ├─ query/query001.jpg.desc    # descriptors for corresponding image (example)
   │  │  ├─ ...
   │  ├─ d2_tf                         # identify the type of descriptors
   │  │  ├─ descriptors.txt            # type of descriptor
   │  │  ├─ descriptors.tar            # instead of regular files, you can use an archive
   │  │  │  ├─ map/cam_01/00001.jpg.desc  # descriptors for corresponding image (example)
   │  │  │  ├─ query/query001.jpg.desc    # descriptors for corresponding image (example)
   │  │  │  ├─ ...
   │  ├─ ...
   ├─ points3d.txt                  # 3D points of the reconstruction
   ├─ observations.txt              # 2D/3D points corespondences
   ├─ matches/                      # matches files.
   │  ├─ r2d2_WASF-N8_20k           # identify the type of keypoints that are matched
   │  │  ├─ map/cam_01/00001.jpg.overlapping/cam_01/00002.jpg.matches # example
   │  │  ├─  ...
   │  ├─ d2_tf                      # identify the type of keypoints that are matched
   │  │  ├─ matches.tar             # instead of regular files, you can use an archive
   │  │  │  ├─ map/cam_01/00001.jpg.overlapping/cam_01/00002.jpg.matches # example
   │  │  │  ├─  ...
   │  ├─ ...
   └─ global_features/                 # global feature files
      ├─ AP-GeM-LM18                   # identify the type of global_features
      │  ├─ global_features.txt        # type of global feature
      │  ├─ map/cam_01/00001.jpg.gfeat # example of global feature for corresponding image
      │  ├─ query/query001.jpg.gfeat   # example of global feature for corresponding image
      │  └─ ...
      ├─ DELG                          # identify the type of global_features
      │  ├─ global_features.txt        # type of global feature
      │  ├─ global_features.tar        # instead of regular files, you can use an archive
      │  │  ├─ map/cam_01/00001.jpg.gfeat # example of global feature for corresponding image
      │  │  ├─ query/query001.jpg.gfeat   # example of global feature for corresponding image
      │  │  └─ ...
      ├─ ...

Software

The kapture format is provided with a Python library, as well as several conversion tools.

Install

pip install kapture

or see installation for more detailed instructions.

Using docker

Build the docker image:

$> cd kapture
# build the docker image : if you have already cloned the repository
$> make docker
# OR build the docker image directly from github (no need to clone).
$> docker build git://github.com/naver/kapture -t kapture/kapture
# run unit tests
$> docker run -it --rm kapture/kapture python3 -m unittest discover -s /opt/src/kapture/tests

If you want to process your own data, you can bind directories between the host and the container using --volume or --mount option (See the docker documentation). The following example mounts /path/to/dataset/ from the host to /dataset inside the docker.

$> docker run -it \
    --rm \ # Automatically remove the container when it exits \
    --volume /path/to/dataset/:/dataset:ro \ #read only
    kapture/kapture

kapture Python library

See the tutorial for some examples using the kapture Python library.

kapture tools

In this repository, you will find a set of conversion tools to or from kapture format. Import results to kapture format, and conversely, export converts kapture data to other formats. Depending of the format, some data might not be converted, either because the other format does not support it (—) or because its was not implemented (⨉). Here is a table summarizing the conversion capabilities:

Format ← → cam rig img trj gps kpt dsc gft p3D obs mch
colmap import ✓ ✓ ✓ ✓ ⨉ ✓ ✓ — ✓ ✓ (✓)
export ✓ ✓ ✓ ✓ ⨉ ✓ ✓ — ✓ ✓ (✓)
openmvg import ✓ — ✓ ✓ ⨉ ✓ ✓ — ✓ ✓ (✓)
export ✓ — ✓ ✓ ⨉ (✓) (✓) — ✓ ✓ (✓)
OpenSfM import ✓ ⨉ ✓ ✓ ✓ ✓ ✓ — ✓ ⨉ ✓
export ✓ ⨉ ✓ ✓ ⨉ ✓ — ✓ — ⨉ ✓
bundler import ✓ — ✓ ✓ — ✓ — — ✓ ✓ —
image_folder import — — ✓ — — — — — — — —
image_list import ✓ — ✓ — — — — — — — —
nvm import ✓ — ✓ ✓ — ✓ — — ✓ ✓ —
IDL_dataset_cvpr17 import ✓ — ✓ ✓ — — — — — — —
RobotCar_Seasons import ✓ ✓ ✓ ✓ — ✓ — — ✓ ✓ —
ROSbag cameras+trajectory import (✓) (✓) ✓ ✓ ⨉ — — — — — —
SILDa import ✓ ✓ ✓ ✓ — — — — — — —
virtual_gallery import ✓ ✓ ✓ ✓ — — — — — — —
stereolabs zed2 import ✓ ✓ ✓ ✓ — — — — — — —

conversion capabilities

  • ✓: supported, (✓) partially supported, ⨉: not implemented, —: not supported by format.

  • cam: handle camera parameters, eg. intrisics

  • rig: handle rig structure.

  • img: handle the path to images.

  • trj: handle trajectories, eg. poses.

  • kpt: handle image keypoints locations.

  • dsc: handle image keypoints descriptors.

  • gft: handle global image feature descriptors.

  • p3D: handle 3D point clouds.

  • obs: handle observations, ie. 3D-points / 2D keypoints correspondences.

  • mch: handle keypoints matches.

Here, you can also find an utility tool for cropping input images of a kapture dataset. Thanks Jonathan Chemla for the contribution.

kapture support in other packages

Local Features

  • R2D2 local features can be directly generated in kapture format. See here

  • D2-Net features can also be extracted in kapture format. See instructions here.

Global Features

  • AP-GeM global feature extractor in kapture format: here

Datasets

The kapture package provides conversion tools for several data formats and datasets used in the domain. But it also provides a tool to download datasets already converted to kapture. See the kapture tutorial for instructions to use the dataset downloader.

Here is a list of datasets you can directly download in kapture format with the downloader tool:

kapture-localization

Checkout kapture-localization, our toolbox which contains implementations for various localization related algorithms.

  • mapping and localization pipelines with custom features

  • mapping and localization pipelines with SIFT and vocabulary tree matching (default colmap pipeline)

  • image retrieval benchmark (global sfm, local sfm, pose approximation)

Tutorial

See the kapture tutorial for a short introduction to:

  • conversion tools

  • using kapture in your code

  • dataset download

Contributing

There are many ways to contribute to the kapture project:

  • provide feedback and suggestions of improvements

  • submit bug reports in the project bug tracker

  • provide a dataset in kapture format that we can add to the downloader tool

  • implement a feature or bug-fix for an outstanding issue

  • add support of kapture format in other software packages (e.g. SfM pipelines…​), thus adding support for more datasets

  • provide scripts to create data in kapture format (e.g. local/global feature extraction)

  • propose a new feature and implement it

If you wish to contribute, please refer to the CONTRIBUTING page.

License

Software license is detailed in the LICENSE file.

Contact Us

You can contact us through GitHub, or at kapture at naverlabs + com

Metadata

Release files for kapture 1.1.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kapture 1.1.12
File Size Uploaded
kapture-1.1.12.tar.gz 54.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for kapture 1.1.12
File Interpreter ABI Platform
kapture-1.1.12-py3-none-any.whl Python 3 none any Details

Total release size: 54.7 MB

Release files / kapture-1.1.12.tar.gz

Download URL kapture-1.1.12.tar.gz
Size 54.5 MB
Tags Source
SHA-256 checksum
How to use checksums
1c3a4d5eaffe7d2df7135f8d8cf6f664ed7a4a4ac1d1f9cf3373934ddb7e4dba
BLAKE2b-256 checksum
How to use checksums
605fa8aaad34151735a1aae6d99795767e4f12e9763045dc840bf429f7d72d9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / kapture-1.1.12-py3-none-any.whl

Download URL kapture-1.1.12-py3-none-any.whl
Size 275.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
713b3f1c59d22331ea6b226a2dd7842dfc9796eda20323f44735cc9b8cebe23e
BLAKE2b-256 checksum
How to use checksums
96d49b51d6df8c885b559783da93aeab2a1b7f59b18420233abd4bca95b62ea1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

1.1.12 This release

2 release files

1.1.11

2 release files

1.1.10

1 release file

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.17

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

3 release files

0.0.10

2 release files

0.0.9

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page