Skip to main content

Library for working with timestamp-based sensor fusion scenes

Project description

sensor-fusion-io

SDK for working with sensor fusion scenes

Installation

pip install scale-sensor-fusion-io

Requirements

Minimum Python version supported is 3.8.

Code samples

End-to-End Example From PandaSet

Here is a link to a Jupyter notebook example.

Constructing an SFS scene

PosePath Dataframe

Encoding a SFS scene

import scale_sensor_fusion_io as sfio
from scale_sensor_fusion_io.model_converters to_scene_spec_sfs
from scale_json_binary import write_file

scene = sfio.Scene() # your scene here
scene_sfs = to_scene_spec_sfs(scene)
import scale_sensor_fusion_io as sfio

write_file(f'~/scene.sfs', scene_sfs)


Loading sfs file

There is a SFSLoader class that provides helper functions for loading a scene from url. There are few variations of loading function, depending on your use case.

from scale_sensor_fusion_io.loaders import SFSLoader
scene_url = "~/scene.sfs"

# Not recommended, but possible
raw_scene = SFSLoader(scene_url).load_unsafe() # scene is dict
sfs_scene = SFSLoader(scene_url).load_as_sfs() # scene is SFS.Scene
scene = SceneLoader(scene_url).load() # scene is models.Scene

Validating SFS

Before you upload a scene for task creation, you'll want to validate that your sfs scene is well formed. You can do this in a variety of ways.

Validating scene object

If you're working with the model.Scene object, you can use the validate_scene method available under scale_sensor_fusion_io.models.validation

import scale_sensor_fusion_io as sfio
import pprint

scene = sfio.Scene() #

errors = validate_scene(scene)
if errors:
    pp.pprint(asdict(errors))
else:
    print("Scene validated successfully")

Validating from url

If you've already generated a .sfs file, you can also validate that it is well formed

from scale_sensor_fusion_io.validation import parse_and_validate_scene
from scale_json_binary import read_file
import pprint

pp = pprint.PrettyPrinter(depth=6)

scene_url = "your_scene.sfs"

raw_data = read_file(scene_url)
result = parse_and_validate_scene(raw_data)

if not result.success:
    pp.pprint(asdict(result))
else:
    print("Scene parsed and validated successfully")

FAQ

Resulting scene file is too large

For scenes that span a large timeframe, the size of the resulting .sfs file may increase to multi-GBs. This is not ideal for loading onto LidarLite.

Video encoding

One easy way to reduce scene size is to encode camera content as video, as the video content can be more easily compressed. The tradeoff is the potentially reduced quality of images, but for labeling 3D scenes, this is often sufficient.

See .utils/generate_video.py for helper functions

Downsample point clouds

Another option is to downsample lidar point clouds. If your scene is used primarily for cuboid annotation, we recommend voxel downsampling using voxel sizes of at most 20mm.

A good heuristic for efficient loading and labeling is to have a scene contain no more than 100,000 points.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scale_sensor_fusion_io-0.4.8.tar.gz (42.2 kB view details)

Uploaded Source

Built Distribution

scale_sensor_fusion_io-0.4.8-py3-none-any.whl (63.7 kB view details)

Uploaded Python 3

File details

Details for the file scale_sensor_fusion_io-0.4.8.tar.gz.

File metadata

  • Download URL: scale_sensor_fusion_io-0.4.8.tar.gz
  • Upload date:
  • Size: 42.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Darwin/23.3.0

File hashes

Hashes for scale_sensor_fusion_io-0.4.8.tar.gz
Algorithm Hash digest
SHA256 8794c5a5ef2d43b77c9a79d9998a49ee2d661e582ba53b1d33d3997c47038bb0
MD5 79a372f1b111c6f65ed0a2f111a15d19
BLAKE2b-256 a93a70f677900c121eacf325d3df918fbe43e3a34172469a463add7435c8fb72

See more details on using hashes here.

File details

Details for the file scale_sensor_fusion_io-0.4.8-py3-none-any.whl.

File metadata

File hashes

Hashes for scale_sensor_fusion_io-0.4.8-py3-none-any.whl
Algorithm Hash digest
SHA256 df6d0ab29bd0814a50949f8686ca8872ee37bbaf83c392983144d172c6106c6c
MD5 c722b7fb2a1987a2d9eb480e4e9c9049
BLAKE2b-256 2bd5344da761a5c9b13c56c6d27da5f831dcfce35dd024707f344504ea06d3a2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page