Commit History
-
Drop barrel, add held-out stop-sign distance, add the GPU runbook
Aryan Sethi +1: Claude Opus 5 (1M context)Barrel is out of the pipeline: schema carries three classes, the Argoverse 2 extractor no longer maps CONSTRUCTION_BARREL, and depth routing follows. AV2 barrels are still read to locate the road surface for the per-log camera-height fit -- they rest on the road and there are many of them -- but they never become labels. Distance is now verified on data the model never saw: 20 further Argoverse 2 logs, 2,431 frames, 6,332 objects, scored with the existing checkpoint rather than retraining. The pinhole estimator comes out far better there than on nuScenes -- 0.21 m median error under 10 m, 0.79 m overall at 5% off, 98% within 25% -- because AV2 calibration is derived per log and its camera has higher angular resolution, while the nuScenes figure was dominated by one scene with a road gradient. Stop-sign distance is measured for the first time: 21 detections, 9.22 m median, 18% off. Thin, and reported as such. The count is a data limit rather than a threshold one -- AV2 stop signs sit …5d449ff
-
Document src/depth for transcription
Aryan Sethi +1: Claude Opus 5 (1M context)Every definition in the four depth modules now carries a docstring: 25 defs, none undocumented, averaging around 110 words. Written to explain why rather than restate what, since the point is to be read and rewritten by hand. The substantive ones. DepthEstimate now says why it is a record rather than a float -- a monocular distance is conditional on the road being flat, the box bottom being a ground contact and the object matching its prior, and nothing about the number itself says which case you are in, so each estimate carries its own evidence. `confident` explains why it reads `not (x > limit)` rather than `x <= limit`: NaN compares False against everything, so the obvious form would reject every estimate that had no cross-check, including every stop sign. `estimate` lays out the routing and the fallback in order. `estimate_ground_plane` explains why the horizon check rejects the box instead of clamping it. `metres_per_pixel` gives the error budget in numbers: 3 cm per pixel at 10 …699e481 -
Phase 2: distance from focal length and pixel geometry
Aryan Sethi +1: Claude Opus 5 (1M context)src/depth/ground_plane.py is written to be transcribed: the ray-plane intersection a step at a time, with the two traps named -- h is the height above the road rather than a translation component, and Argoverse 2 pixels need undistorting before the pinhole model applies. A vectorised, distortion-aware form sits alongside it for the pipeline. Scored on nuScenes val against LiDAR ground truth, from ground-truth boxes: 1.05 m MAE under 10 m, 3.96 m at 10-20 m, 8.97 m at 30-45 m, every object given an estimate. The headline is not that number though. Read per class, cones look 5.91 m biased against barriers at 1.23 m, which reads as a class problem. It is not: inside any one scene the two classes agree closely, and the apparent cone bias is one scene holding 120 of the 265 cones. Median relative error per scene runs -35% to +35%, and fitting a single constant row shift per scene halves the error, 3.34 -> 1.71 m, with the worst scene going 6.56 -> 1.30 m on a -50 px shift. That is an effe…6b89d1b