Waymo-Open Dataset#
The NCore Waymo tool converts data from the Waymo-Open format (.tfrecords) into NCore V4 format.
Conventions#
Waymo-Open’s data convention consists of 6 sensors:
Camera Sensors#
Front Camera 50deg FOV (camera_front_50fov)
Front Left Camera 50deg FOV (camera_front_left_50fov)
Front Right Camera 50deg FOV (camera_front_right_50fov)
Side Left Camera 50deg FOV (camera_side_left_50fov)
Side Right Camera 50deg FOV (camera_side_right_50fov)
The camera intrinsics are compatible with the
OpenCVPinholeCameraModelParameters model.
- The Waymo camera frame convention is:
Principal axis along local camera’s +x axis
Local y-axis points left
Local z-axis points up
Note: The converter transforms this to NCore’s camera convention (principal axis +z, x-axis right, y-axis down).
Each camera provides panoptic segmentation data with 29 semantic classes,
stored via CameraLabelsComponent as IMAGE_ENCODED
PNG labels (label type: SEGMENTATION / "panoptic"). The per-label metadata
includes panoptic_label_divisor for decoding semantic class and instance IDs
from the combined panoptic map.
LiDAR Sensors#
Top Lidar (lidar_top)
LiDAR data includes point clouds with multi-return support (primary and secondary returns) and 3D bounding box labels for 5 classes: unknown, vehicle, pedestrian, sign, cyclist.
For more information, see the Waymo Open Dataset paper.
Conversion#
The converter uses NCore V4’s component-based architecture. Each sequence is
parsed from .tfrecord files and written to NCore format via
SequenceComponentGroupsWriter with specialized component
writers for poses, intrinsics, lidar, cameras, camera labels, masks, and 3D labels.
Usage#
Run the converter with Bazel from the repository root:
bazel run //tools/data_converter/waymo:convert -- \
--root-dir <PATH_TO_TFRECORDS> \
--output-dir <PATH_TO_OUTPUT> \
waymo-v4
To convert only a time slice of each sequence, use --seek-sec and/or
--duration-sec:
# Convert 10 seconds starting 5 seconds into each sequence
bazel run //tools/data_converter/waymo:convert -- \
--root-dir <PATH_TO_TFRECORDS> \
--output-dir <PATH_TO_OUTPUT> \
waymo-v4 --seek-sec 5.0 --duration-sec 10.0
Base arguments (required):
Argument |
Description |
|---|---|
|
Path to the directory containing |
|
Path where converted NCore V4 sequences will be written |
Base arguments (optional):
Argument |
Description |
|---|---|
|
Disable exporting all camera sensors |
|
Export only the specified camera (repeatable; defaults to all cameras) |
|
Disable exporting all lidar sensors |
|
Export only the specified lidar (repeatable; defaults to all lidars) |
|
Enable debug-level logging |
Subcommand arguments (waymo-v4):
Argument |
Default |
Description |
|---|---|---|
|
|
Output store format. |
|
|
Component group layout. |
|
enabled |
Whether to write a JSON metadata file alongside each converted sequence |
|
|
Controls whether a |
|
|
Time to skip from the start of the sequence (in seconds). When set, frames before this offset are excluded from the output. The full pose range is still used internally for motion compensation |
|
|
Restrict total duration of the converted sequence (in seconds).
Measured from the (possibly seeked) start time. When both
|
For the complete implementation, see
tools/data_converter/waymo/converter.py.
API Reference#
V4 Components (ncore.data.v4):
SequenceComponentGroupsWriter- Main writer for V4 sequencesPosesComponent- Static and dynamic pose storageIntrinsicsComponent- Camera and lidar intrinsicsLidarSensorComponent- Lidar frame dataCameraSensorComponent- Camera frame dataCameraLabelsComponent- Per-camera image labelsCuboidsComponent- 3D cuboid track observationsMasksComponent- Camera masks
Data Converter (ncore.data_converter):
BaseDataConverter- Abstract base class for convertersBaseDataConverterConfig- Base configuration dataclass
Sensor Models (ncore.data):
OpenCVPinholeCameraModelParameters- Camera intrinsics modelRowOffsetStructuredSpinningLidarModelParameters- Lidar intrinsics model