YellowCab / config.json
l0uai
Publish causal YellowCab benchmark and model card
52f55f8
Raw
History Blame Contribute Delete
10.6 kB
{
"schema": "gdc_taxi_maneuver_release_config_v1",
"model_id": "generaldata/YellowCab",
"model_name": "YellowCab",
"model_version": "v0.1-causal",
"task": "predict a GPS-derived maneuver proxy approximately 20 seconds ahead",
"release_status": "public_research_release",
"actuation_allowed": false,
"labels": [
"continue",
"slow",
"stop",
"turn_left",
"turn_right"
],
"input": {
"frame_count": 3,
"frame_order": "oldest_to_newest",
"nominal_offsets_seconds": [
-20,
-10,
0
],
"timestamps_optional": true,
"timestamps_must_be_strictly_increasing": true,
"image": {
"allowed_formats": [
"JPEG",
"PNG"
],
"max_encoded_bytes": 11184812,
"max_decoded_bytes": 8388608,
"max_width": 8192,
"max_height": 8192,
"max_pixels": 16000000,
"allow_animated": false,
"allow_truncated": false,
"allow_urls": false,
"allow_data_urls": false
}
},
"preprocessing": {
"exif_orientation": "transpose_then_discard_metadata",
"color_mode": "RGB",
"resize": "aspect_preserving_contain",
"interpolation": "bicubic",
"output_size": [
224,
224
],
"letterbox_rgb": [
124,
116,
104
],
"channel_order": "CHW",
"pixel_scale": 255.0,
"image_mean": [
0.485,
0.456,
0.406
],
"image_std": [
0.229,
0.224,
0.225
]
},
"telemetry": {
"feature_order": [
"current_speed_mps",
"past_speed_mps",
"acceleration_mps2",
"past_turn_degrees",
"past_yaw_rate_deg_s",
"heading_sin",
"heading_cos",
"gps_accuracy_m",
"hour_sin",
"hour_cos",
"dow_sin",
"dow_cos"
],
"fields": {
"current_speed_mps": {
"unit": "m/s",
"reference": "current capture",
"window": "average from the approximately t-20 anchor to t over the actual interval",
"definition": "haversine displacement divided by elapsed seconds",
"minimum": 0.0,
"maximum": 45.0,
"bounds_basis": "dataset-builder implied-speed acceptance policy"
},
"past_speed_mps": {
"unit": "m/s",
"reference": "approximately t-20",
"window": "average from approximately t-40 to t-20 over the actual interval; copied from current_speed_mps when the deeper-past anchor was unavailable during dataset construction",
"definition": "haversine displacement divided by elapsed seconds",
"minimum": 0.0,
"maximum": 64.22581298799362,
"bounds_basis": "observed v0 corpus support; the dataset builder had no independent cap"
},
"acceleration_mps2": {
"unit": "m/s^2",
"reference": "current capture",
"window": "change from past_speed_mps to current_speed_mps divided by the actual past interval",
"definition": "(current_speed_mps - past_speed_mps) / past interval seconds",
"minimum": -2.2890150038573767,
"maximum": 1.847550146877638,
"bounds_basis": "observed v0 corpus support; the dataset builder had no complete independent cap"
},
"past_turn_degrees": {
"unit": "degrees",
"reference": "current capture",
"window": "bearing change between the approximately t-40 to t-20 and t-20 to t segments",
"definition": "wrapped signed bearing change; clockwise/right is positive and counter-clockwise/left is negative",
"minimum": -180.0,
"maximum": 180.0,
"maximum_inclusive": false,
"bounds_basis": "mathematical wrapped-angle range"
},
"past_yaw_rate_deg_s": {
"unit": "degrees/s",
"reference": "current capture",
"window": "past_turn_degrees divided by the actual past interval",
"definition": "clockwise/right is positive and counter-clockwise/left is negative",
"minimum": -25.714285714285715,
"maximum": 25.714285714285715,
"bounds_basis": "theoretical v0 range from a 180 degree turn and the 7 second minimum accepted interval"
},
"heading_sin": {
"unit": "unitless",
"reference": "current segment bearing",
"window": "approximately t-20 to t",
"definition": "sine of clockwise heading from north; north=0 and east=1",
"minimum": -1.0,
"maximum": 1.0,
"bounds_basis": "trigonometric range"
},
"heading_cos": {
"unit": "unitless",
"reference": "current segment bearing",
"window": "approximately t-20 to t",
"definition": "cosine of clockwise heading from north; north=1 and east=0",
"minimum": -1.0,
"maximum": 1.0,
"bounds_basis": "trigonometric range"
},
"gps_accuracy_m": {
"unit": "m",
"reference": "current capture",
"window": "instantaneous source-reported horizontal accuracy",
"definition": "source-reported accuracy value; missing training-source values were represented as 15 m",
"minimum": 0.0,
"maximum": 15.0,
"bounds_basis": "nonnegative accuracy and v0 dataset-builder maximum"
},
"hour_sin": {
"unit": "unitless",
"reference": "current capture UTC timestamp",
"window": "instantaneous",
"definition": "sine encoding of UTC hour plus minute",
"minimum": -1.0,
"maximum": 1.0,
"bounds_basis": "trigonometric range"
},
"hour_cos": {
"unit": "unitless",
"reference": "current capture UTC timestamp",
"window": "instantaneous",
"definition": "cosine encoding of UTC hour plus minute",
"minimum": -1.0,
"maximum": 1.0,
"bounds_basis": "trigonometric range"
},
"dow_sin": {
"unit": "unitless",
"reference": "current capture UTC timestamp",
"window": "instantaneous",
"definition": "sine encoding of Python weekday where Monday is 0",
"minimum": -1.0,
"maximum": 1.0,
"bounds_basis": "trigonometric range"
},
"dow_cos": {
"unit": "unitless",
"reference": "current capture UTC timestamp",
"window": "instantaneous",
"definition": "cosine encoding of Python weekday where Monday is 0",
"minimum": -1.0,
"maximum": 1.0,
"bounds_basis": "trigonometric range"
}
},
"unit_circle_pairs": [
[
"heading_sin",
"heading_cos"
],
[
"hour_sin",
"hour_cos"
],
[
"dow_sin",
"dow_cos"
]
],
"unit_circle_norm_tolerance": 0.02,
"normalization": {
"source_split": "train",
"source_example_count": 55711,
"standard_deviation": "population_ddof_0",
"missing_value_imputation_used": false,
"arithmetic": "parse as float64, subtract float32 training mean, divide by float32 training standard deviation, then cast to float32",
"mean": [
5.1570844650268555,
5.055907726287842,
0.005347144324332476,
-0.7335137724876404,
-0.03728550672531128,
-0.01271896529942751,
0.08169970661401749,
4.2314910888671875,
-0.2427283227443695,
0.6515114307403564,
0.08530019223690033,
-0.07634009420871735
],
"std": [
5.041778087615967,
5.1640753746032715,
0.16992051899433136,
34.073089599609375,
1.736711025238037,
0.6867451071739197,
0.7221804261207581,
1.9923152923583984,
0.6107164621353149,
0.3790002763271332,
0.6974503397941589,
0.7074313163757324
]
}
},
"architecture": {
"encoder": "torchvision.efficientnet_b0",
"encoder_initialization": "EfficientNet_B0_Weights.IMAGENET1K_V1 during training; weights are included in the checkpoint",
"encoder_training": "frozen",
"encoder_feature_dim": 1280,
"temporal": "LayerNorm(1280) then one-layer unidirectional GRU(1280, 256)",
"telemetry_head": "LayerNorm(12), Linear(12,96), GELU, Dropout(0.25), Linear(96,96), GELU",
"classifier": "concatenate 256+96, LayerNorm(352), Linear(352,256), GELU, Dropout(0.25), Linear(256,5)",
"head_config": {
"image_feature_dim": 1280,
"telemetry_dim": 12,
"num_classes": 5,
"hidden_dim": 256,
"dropout": 0.25
}
},
"calibration": {
"method": "temperature_scaling",
"temperature": 1.106177568435669,
"fit_split": "validation_after_restoring_best_epoch_4",
"independent_calibration_split": false
},
"abstention": {
"default_threshold": 0.45,
"rule": "abstain only when maximum calibrated probability is strictly below the threshold",
"predicted_label_when_abstained": null
},
"checkpoint": {
"file": "model.safetensors",
"sha256": "af1a98cd96bb68d642f7a0adeedfacac37b230917afc15f3c87230a99a15b8a2",
"bytes": 21384748,
"parameter_count": 5294233,
"state_tensor_count": 376,
"state_numel": 5336298,
"state_dtypes": {
"torch.float32": 327,
"torch.int64": 49
},
"source_checkpoint_sha256": "0cb9c71d5be8f7671029e459c24179863ae2abff3ccfec1b5837c169d7d6c703"
},
"warnings": [
"research model; not a safety-certified vehicle-control system",
"validate performance and calibration for the intended domain before use"
],
"training": {
"manifest_sha256": "8b92ad563892776cc25148f39fec6bf207e1e442c618b58fb07af7e2b899364d",
"split_sha256": "bfc5e960c8af32d0ea75a5e293bb95b3125111ace2cf8452eb42feb4bc2a1a5e",
"samples": 74680,
"routes": 36,
"split_samples": {
"train": 55711,
"validation": 10375,
"test": 8594
},
"split_routes": {
"train": 26,
"validation": 5,
"test": 5
},
"seed": 20260726,
"epochs_completed": 8,
"best_validation_macro_f1": 0.37644976936491265,
"causal_input_policy": "When past-to-current displacement is below 4 m, encode unknown current heading as sin=0 and cos=1. No future bearing is used.",
"future_derived_model_inputs": 0
},
"evaluation": {
"artifact": "evaluation.json",
"checkpoint_specific": true,
"primary_metric": "macro_f1",
"test_samples": 8594,
"test_routes": 5,
"macro_f1": 0.3915542657655546,
"macro_f1_route_ci_95": [
0.34762239048615595,
0.42805096076291543
],
"balanced_accuracy": 0.39156334041323,
"accuracy": 0.5755178031184547,
"ece_15_bin": 0.011817411647322817
}
}