Measurement from what exists
No new sensors, no procurement: a public camera feed became an hourly emissions ledger with vehicle composition attached, at the cost of compute and care.
← Back Case study · Vision to emissions Ingestion live · since Oct 2025
Ninety public traffic cameras, polled every three minutes, turned into an hourly, street-level emissions ledger for Singapore: vehicle detection, class-aware emission factors, coverage-corrected aggregation, and maps that show where the grams actually come from.
00 / 04Context
Emissions inventories are annual, coarse, and late. Health studies and hotspot analysis want the opposite: hourly, street-level, current. Singapore already publishes traffic-camera frames every few minutes on its open data platform, so the question became: can existing public infrastructure be turned into a defensible emissions measurement system, with no new hardware?
The answer is a pipeline that has been collecting continuously since 7 October 2025: 11.4 million frames and 1.7 TB of imagery so far, distilled into 10.5 million analytics rows of hourly traffic and emissions by pollutant and vehicle class.
01 / 04Pipeline
The open traffic-camera API is polled every three minutes, about 480 batches a day, each frame archived with a manifest for full replayability.
YOLO detection over every frame, keeping four vehicle classes (car, motorcycle, bus, truck) with explicit confidence gates. CPU-only on 32 cores: about 37 seconds per batch, no GPU required.
Per-class MOVES-proxy emission factors (ICCT figures adjusted with local fleet data) turn counts into per-frame emissions, reported by pollutant and vehicle class.
Hourly totals are built by summing frame-level counts and applying a coverage correction for missing frames. Instantaneous per-frame rates are never averaged: that shortcut biases the numbers, so the pipeline refuses it.
Emission-intensity and composition maps rebuilt every six hours, plus a Dash dashboard: flow per camera, emissions per camera, fleet mix, and a geolocated map coloured by grams per hour.
02 / 04Validation
Camera-derived hourly counts were structurally validated against reference monitoring stations using normalised diurnal profiles: shape and peak timing rather than absolute magnitude, since cameras and fixed sensors see different slices of the same road. Agreement is strong on expressways and major arterials; mismatched pairs are flagged by nearest-link ratios and treated as diagnostics, not discarded.
The camera approach also captures what fixed sensors cannot: vehicle composition and congestion dynamics, which is exactly what emissions modelling and hotspot analysis need.
03 / 04Result
No new sensors, no procurement: a public camera feed became an hourly emissions ledger with vehicle composition attached, at the cost of compute and care.
The defensibility work (coverage correction, structural validation, outlier framing) is what made the numbers usable in meetings with domain scientists, not the detector itself.
The provider retired most expressway cameras on 30 June 2026, cutting the fleet from ninety to eight. Ingestion continues and the analytics track current data; the project's scope is now structurally limited by that feed.
Measurement systems inherit the fate of their upstreams. Build the archive first (1.7 TB of replayable frames means the analysis can always be rerun) and treat every external feed as something that can vanish.