Source code for vision3d.datasets._types
"""Types for :mod:`vision3d.datasets` samples."""
import sys
from typing import NotRequired, Required, TypedDict
from torch import Tensor
if sys.version_info >= (3, 13):
from typing import ReadOnly
else:
from typing_extensions import ReadOnly
from vision3d.tensors import (
BoundingBoxes3D,
CameraExtrinsics,
CameraImages,
CameraIntrinsics,
PointCloud3D,
)
[docs]
class SampleInputs(TypedDict):
"""Per-frame model inputs; base type with all fields optional.
Fields are ``ReadOnly`` so dataset-specific subclasses can narrow them
from ``NotRequired`` to ``Required``.
Attributes:
points: Lidar point cloud for the frame.
images: Multi-camera image tensor, one row per camera.
extrinsics: Lidar-to-camera transforms, one row per camera.
intrinsics: Per-camera pinhole intrinsic matrices.
"""
points: NotRequired[ReadOnly[PointCloud3D]]
images: NotRequired[ReadOnly[CameraImages]]
extrinsics: NotRequired[ReadOnly[CameraExtrinsics]]
intrinsics: NotRequired[ReadOnly[CameraIntrinsics]]
[docs]
class LidarInputs(SampleInputs):
"""Lidar-only sample: points always present."""
points: Required[PointCloud3D]
[docs]
class CameraInputs(SampleInputs):
"""Camera-only sample: images, intrinsics, and extrinsics always present."""
images: Required[CameraImages]
intrinsics: Required[CameraIntrinsics]
extrinsics: Required[CameraExtrinsics]
[docs]
class FusionInputs(SampleInputs):
"""Fusion sample: lidar plus multi-camera, every field present."""
points: Required[PointCloud3D]
images: Required[CameraImages]
extrinsics: Required[CameraExtrinsics]
intrinsics: Required[CameraIntrinsics]
[docs]
class SampleTargets(TypedDict):
"""Per-frame ground-truth annotations.
Attributes:
boxes: 3D bounding boxes in the lidar frame.
labels: Integer class labels, one per box.
"""
boxes: BoundingBoxes3D
labels: Tensor