Every routing or signal decision downstream is only as good as what the camera reports. Most of my work sits at that boundary: measuring what a detector gets wrong, and passing that uncertainty on to the controller instead of hiding it.
Know when the camera is wrong
A reliability score computed without ground truth, from image quality and detector health.
0.938 AUC on held-out synthetic streams
Checked on 12 human-labelled UA-DETRAC clips (sunny, cloudy, rainy, night) with an unmodified YOLOv4-tiny: combined AUC 0.973 on a temporal split, median ECE 0.036 when a clip is held out (worst 0.116). Calibration did not transfer between two pseudo-labelled clips (ECE 0.12 to 0.23), and that is reported.
Reason about what it cannot see
Queue length behind a truck, with an uncertainty range, from an oblique camera.
−2.84 → −0.63 m bias under occlusion
Turn tracks into road events
Flashing-light cue, HMM map matching and heading, delivered as one event a signal controller can act on.
0.974 road matching (nearest-road: 0.900), 1.1 ms per frame
Recover travel times from few cameras
Graph-gated vehicle re-identification and network tomography on sparse cameras.
0.875 association precision (appearance only: 0.558)
Replicated on 10 seeds and a second grid with bootstrap intervals: the gain from graph gating holds, the gain on unobserved edges does not.
The graph work and the vision work are one program: the network has to be simple enough to reason about, and the sensors feeding it have to be honest about their own limits.