Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
63ebe86
docs(design): define staged BEV auxiliary training to fix the researc…
riita10069 Aug 8, 2026
572dc97
feat(navigation): define shared BEV geometry to align dataset targets
riita10069 Aug 8, 2026
f230ad5
feat(navigation): extend artifact metadata to preserve route validity
riita10069 Aug 8, 2026
6da50a1
feat(navigation): export shared geometry APIs for dataset adapters
riita10069 Aug 8, 2026
e391ff0
feat(model): add BEV and route heads to retain auxiliary supervision
riita10069 Aug 8, 2026
9bef084
feat(loss): add masked BEV segmentation loss for nuPlan supervision
riita10069 Aug 8, 2026
8f3c2e8
feat(loss): add route reconstruction loss to preserve route intent
riita10069 Aug 8, 2026
17ce5ae
feat(loss): add masked XY imitation loss to simplify trajectory training
riita10069 Aug 8, 2026
4e39360
feat(loss): export reactive multitask losses for stage training
riita10069 Aug 8, 2026
e525972
feat(map): add convolutional raster encoder for full BEV geometry
riita10069 Aug 8, 2026
878719b
feat(map): register semantic raster encoder for reactive stages
riita10069 Aug 8, 2026
2f677b8
feat(fusion): expose navigation contribution for route diagnostics
riita10069 Aug 8, 2026
2ba38b2
feat(planner): restore GRU planner for the reactive-only baseline
riita10069 Aug 8, 2026
67d776c
feat(planner): register GRU planner for reactive model construction
riita10069 Aug 8, 2026
3ddedbf
feat(model): connect auxiliary heads to the reactive feature path
riita10069 Aug 8, 2026
583a0ef
feat(model): expose reactive auxiliary outputs without enabling WM re…
riita10069 Aug 8, 2026
7c1c935
feat(training): add nuPlan policy to separate training and benchmark …
riita10069 Aug 8, 2026
44c6b97
feat(training): define stage-specific multitask objectives for nuPlan…
riita10069 Aug 8, 2026
d4832bd
feat(training): add staged training and retention evaluation with lin…
riita10069 Aug 8, 2026
bb4e831
feat(l2d): build map and route targets from offline OSM waypoints
riita10069 Aug 8, 2026
8e6c3a5
feat(l2d): build deterministic OSM graph snapshots for offline training
riita10069 Aug 8, 2026
de4b05d
feat(l2d): expose waypoint metadata needed for route targets
riita10069 Aug 8, 2026
031279d
feat(l2d): export offline navigation target builders
riita10069 Aug 8, 2026
ef08e92
feat(nuplan): generate trajectory BEV map and route supervision targets
riita10069 Aug 8, 2026
8408b9a
feat(nuplan): pack camera calibration and reactive targets into shards
riita10069 Aug 8, 2026
3861f7f
feat(nuplan): export raw scenario packing APIs for data preparation
riita10069 Aug 8, 2026
e99c63a
feat(data): load reactive trajectory BEV and route members from shards
riita10069 Aug 8, 2026
2b84948
feat(data): bump shard contracts to prevent stale geometry cache reuse
riita10069 Aug 8, 2026
65b395f
feat(data): serialize common reactive training artifacts deterministi…
riita10069 Aug 8, 2026
544a0a4
feat(data): attach optional reactive targets during parallel packing
riita10069 Aug 8, 2026
72f530f
build(data): install nuPlan and OSM preparation dependencies in prep …
riita10069 Aug 8, 2026
b8201e0
feat(pipeline): precompute immutable semantic occupancy dashboard art…
riita10069 Aug 8, 2026
323ff07
feat(pipeline): orchestrate nuPlan L2D training and KITScenes evaluat…
riita10069 Aug 8, 2026
c43edd7
feat(console): model semantic occupancy artifact descriptors in the API
riita10069 Aug 8, 2026
54d32fc
feat(console): validate and stream immutable occupancy artifacts from S3
riita10069 Aug 8, 2026
4c9d7dd
feat(console): serve semantic occupancy overlays for selected models
riita10069 Aug 8, 2026
af0c4a6
feat(console): register semantic occupancy overlay endpoint
riita10069 Aug 8, 2026
2bec5ec
feat(console): parse quantized semantic occupancy artifacts in the br…
riita10069 Aug 8, 2026
e62ed5b
feat(console): fetch semantic occupancy artifacts through the console…
riita10069 Aug 8, 2026
1aa82cb
feat(console): render occupancy prediction teacher and error views
riita10069 Aug 8, 2026
66cbec8
feat(console): integrate occupancy diagnostics into episode playback
riita10069 Aug 8, 2026
753e0b7
test(console): cover occupancy binary rendering and view switching
riita10069 Aug 8, 2026
72d645f
test(data): verify nuPlan L2D targets and staged shard contracts
riita10069 Aug 8, 2026
afd6659
test(training): verify losses gradients stage transitions and retenti…
riita10069 Aug 8, 2026
a8bb3d6
test(pipeline): update cache contract expectations for reactive shards
riita10069 Aug 8, 2026
6a7db76
fix(eval): disable cuDNN RNN for route gradients in eval mode
riita10069 Aug 8, 2026
bf45226
test(training): place BEV loss buffers on the GPU under test
riita10069 Aug 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,423 changes: 1,423 additions & 0 deletions Design/BEVSegmentationAuxiliaryLoss.md

Large diffs are not rendered by default.

22 changes: 22 additions & 0 deletions Model/data_parsing/l2d/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,19 @@
)
from .dataset import L2DDataset
from .egomotion import EGOMOTION_DIM, extract_egomotion
from .navigation import (
L2DNavigationTargets,
L2DOSMGraphSnapshot,
build_l2d_navigation_targets,
l2d_reactive_navigation_members,
load_l2d_osm_graph_snapshot,
)
from .osm_graph_builder import (
L2D_OSM_GRAPH_ADAPTER_VERSION,
OSMWayRecord,
build_l2d_osm_graph_snapshot,
encode_l2d_osm_graph_snapshot,
)
from .world_model_windows import build_windows, required_margins, stride_for_hz, window_offsets

__all__ = [
Expand All @@ -20,6 +33,15 @@
"extract_egomotion",
"NUM_VIEWS",
"EGOMOTION_DIM",
"L2DNavigationTargets",
"L2DOSMGraphSnapshot",
"build_l2d_navigation_targets",
"l2d_reactive_navigation_members",
"load_l2d_osm_graph_snapshot",
"L2D_OSM_GRAPH_ADAPTER_VERSION",
"OSMWayRecord",
"build_l2d_osm_graph_snapshot",
"encode_l2d_osm_graph_snapshot",
# World Model 1 Hz sequential windows (#16, enables JEPA #13)
"build_windows",
"window_offsets",
Expand Down
19 changes: 19 additions & 0 deletions Model/data_parsing/l2d/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ class L2DSample(TypedDict):
frame_index: int
pose_current: dict[str, float | int]
gps_future: np.ndarray # (65, 2) float64: current + 64 future
route_waypoints_lon_lat: np.ndarray # (10, 2), route intent
# Present only when include_world_model_windows=True (#16, enables JEPA #13):
# the 1 Hz multi-view past/future windows, each (N, 6, 3, H, W), oldest->newest.
history_frames: NotRequired[torch.Tensor]
Expand Down Expand Up @@ -395,6 +396,23 @@ def numeric_for(self, idx: int):
)
return ego_history, trajectory_target, pose_current, gps_future

def route_waypoints_for(self, idx: int) -> np.ndarray:
"""Return the current row's OSM-snapped [longitude, latitude] route."""
_ep_idx, row = self._samples[idx]
hf = self.lerobot_dataset.hf_dataset
column = hf.select_columns(["observation.state.waypoints"])
waypoints = np.asarray(
column[row]["observation.state.waypoints"],
dtype=np.float64,
)
if waypoints.shape != (10, 2):
raise ValueError(
"L2D route waypoints must have shape [10,2]"
)
if not np.isfinite(waypoints).all():
raise ValueError("L2D route waypoints contain non-finite values")
return waypoints

def _get_vehicle_states_window(self, ep_start: int, ep_end: int) -> np.ndarray:
"""Load vehicle state vectors for one episode (local row range).

Expand Down Expand Up @@ -571,6 +589,7 @@ def __getitem__(self, idx: int) -> L2DSample:
frame_index=sample_idx_in_episode,
pose_current=pose_current,
gps_future=gps_future,
route_waypoints_lon_lat=self.route_waypoints_for(idx),
)
if self._wm_enabled:
sample["history_frames"] = history_frames
Expand Down
Loading
Loading