REAL PASSAGE · BOUNDARY RD, MELBOURNE · SLOWED 1.7×
a toll road, rebuilt with AI
IntelligentTolling.
Seven phases, from live traffic on camera to a toll you can trust. This page is phase 07, the last gate before anyone is charged: what happens when the camera isn't sure what it read.
Every passage under a gantry has to become one record that a person would sign off: who, what, how fast, how big. Each phase gets its own page as it ships. Today you're standing at 07, the final check before a toll is charged.
01
Capture
Real traffic, filmed by a dedicated ultra-HD camera at high frame rates, so every plate is caught sharp in many frames, not one lucky shot.
unlocks soon
02
Detect
Every vehicle, plate and wheel found and tracked frame by frame, even when a B-double hides the car beside it.
unlocks soon
03
Read
Each plate read in every frame it appears in, then voted character by character into one answer with a confidence.
unlocks soon
04
Learn
The detector and the reader retrained on Australian plates from every state and series, real and synthetic.
unlocks soon
05
Classify
Axles and axle groups counted from the side view, turned into the Austroads 12-class code that sets the toll.
unlocks soon
06
Measure
Speed from a calibrated road plane, plus length, width and height in metres for every vehicle.
unlocks soon
07
Verify
Unsure plates checked against Australian registration data and matched to the vehicle on camera, before anyone is charged.
live on this page
you are here
CHAPTER 1
The problem
Why a camera can't tell a 1 from an I
km 0.5 · keep left for the evidence
phase 07 · the problem
Is it 1 or I?
On a real toll road, a plate the camera can't read with confidence goes to manual image review: a person squinting at a crop. Phase 07 is the step before that person. Here is why this plate is hard, in three steps.
01 the shapes
Shrink a 1 until it's an I.
On a Victorian plate the 1 has a flag and a foot. The I has a bar on top and a bar below. Up close they're nothing alike. Now move the truck away from the camera.
1 as printedI as printedwhat tells them apart
illustration: plate-style glyphs, rendered at the camera's pixel size
02 the approach
47 reads, one plate.
The tracker reads the plate in every frame as the truck comes closer. These are real crops from the footage, far to near. Below them, every tick is one read of the first character.
first read · farlast read · near
03 the vote
Two spellings survive.
The two clearest reads, enlarged so you can judge for yourself. The plate is 53 pixels wide in the 4K frame.
Every read votes, character by character
the OCR leans I… but VIC plates go 1AB·2CD
▦ Characters 4 and 5 of every plate on this page are masked. These are real vehicles.
CHAPTER 2
The solution
Four moves from doubt to a decision
km 1.2 · phase 07 in action
how it decides
Four moves. Three are free.
Everything the machine can work out for itself happens first, on a local GPU. Only the last step asks the outside world.
Spell
Look
Ask
Decide
01
01 Spell free
List every likely spelling.
All 47 reads vote per character, and reads of a bigger plate count for more. Look-alikes the OCR never showed (1/I/T, 0/D/Q, 8/B) keep a small share, because OCR can be wrong the same way every time. A beam search turns the columns into whole plates, and a spelling that fits no Australian format is ranked lower but not thrown away.
02
02 Look free · local GPU
Ask the video what the vehicle is.
RF-DETR segmentation finds the vehicle carrying the plate in every frame. The sharpest, largest uncut views win, which is what matters when traffic is fast. A local vision-language model then describes the vehicle blind, before it sees any registration: type, body, make, colour, and every badge it can actually read.
03
03 Ask third-party API
Look up the spellings that matter.
Only now does anything leave the machine. Each likely spelling is checked against a third-party API for Australian plate details: is it registered, and to what make and model?
04
04 Decide free
Does the registered vehicle match the camera?
Each registered spelling faces four checks: make or badge, body, model, and a multiple choice where the model picks between the registered vehicles or "none of these". The score decides: verified, likely, or send to a person.
step 01 · candidates ranked for lookup
1EM••O
OCR share0.22
fits VIC 1AB·2CD × 1.00
#1
IEM••O
OCR share0.29
no known format × 0.25
#2
the OCR prefers I, the format prefers 1. Check both.
step 02 · the vehicle, according to the video
vision model · blind
type prime mover · cab-over(vote of its 3 best views)
make MAN1.00
badges "MAN" "Opal." "CAMERON" "917"
colour whitepixels said grey (cab in shade)
step 03 · third-party API for Australian plate details
GET /lookup plate=1EM••O state=VIC
200 · found MAN TGS 18.360 · 10.5 L diesel · 2009–on
GET /lookup plate=IEM••O state=VIC
not found no vehicle with this plate
one spelling is a real truck. The other doesn't exist.
step 04 · 1EM••O, MAN TGS vs the camera
makebadge "MAN" = MAN+1
bodytruck ⇐ 10.5 L engine+1
modelTGS not visible from the front0
choicemodel picked MAN TGS (0.95)+1
+0.75match at ≥ 0.35
VERIFIED 1EM••O
phase 07 · the hard one
The Fiesta problem.
Victoria's plate series is so full that almost any valid spelling belongs to somebody. Here, every candidate fits the format. "Is it registered?" can't settle it. Only the vehicle can.
REAL PASSAGE · RIVERLEA PARK, SA · SLOWED 2×
OCR said 1IL••L at 0.52 confidence, from 24 reads of a plate 53 pixels wide.
✓ right driver · no person needed · evidence attached
⇆
drag me
a twist
Same face, different car.
The vision model read the ISUZU badge and called it a D-Max ute. The registration said MU-X, the SUV built on the same platform. From the front they're identical, and the caravan hides the rear. So phase 07 treats front-end twins (D-Max/MU-X, HiLux/Fortuner, Ranger/Everest) as "can't tell", not as a mismatch. The rest of the evidence carried it to +0.61.
CHAPTER 3
Reality check
What free footage can and can't do
km 2.0 · honest footnote ahead
the honest footnote, in big type
Free footage. Real results.
Everything on this page ran on free YouTube videos filmed from the roadside, not on tolling cameras. The frames are big, but the plates are tiny, compressed and blurred by motion. Phase 01 replaces this footage with a camera built for the job.
today · the source footage
clip A · truck3840 × 2026 · 50 fpsYouTube, VP9-compressed, handheld at a roundabout
the plate53 px wide1.4 % of clip A's frame width · shutter unknown, motion blur visible
OCR confidence0.76 and 0.52which is why both plates came to phase 07
phase 01→
phase 01 · a camera made for plates
sensor≥ 5 MP, global shutterthe whole frame exposed at once: no rolling-shutter lean
shutter + light1/1000 – 1/2000 s · 850 nm IRfreezes 110 km/h traffic, works at night and through glare
framingone camera per two lanesplates ≥ 130 px wide, 2.5× today, many times over each passage
target≥ 97 % exact plates by day≥ 93 % at night, per vehicle, on our own ground truth
same 1, same I, same maths: only the pixels change
CHAPTER 4
Under the gantry
How fast it sees, thinks and measures, and what it runs on
km 3.4 · four platform phases
the platform under the seven phases
Built for 110 km/h.
A toll road doesn't slow down for a model. Four platform phases sit underneath the road: how fast the camera can see, how fast the edge box can think, how vehicle speed is measured, and the system that holds it together. Each is labelled measured or design target.
P1
Speed of sight
How many clean looks does a plate give at speed? Drag the traffic.
design target
metres per second
reads per plate in a 12 m zone
phone or YouTube camera · 1/250 s shutter
phase 01 plate camera · 1/2000 s shutter
Simulated with a sample plate. Blur = distance travelled while the shutter is open; a plate character's stroke is about 10 mm.
P2
Speed of thought
Every frame must be finished before the next one lands.
design target
one frame every 40 ms at 25 fps · one NVIDIA GB10 edge box
cam A
cam B
cam C
0 ms2040 ms · next frame
decode 4K on NVDEC · 2 ms
detect · RF-DETR, TensorRT FP16 · 5–10 ms
OCR, batched · <1 ms
track, fuse, geometry · <1 ms
≈ 66–100frames a second on one edge GPU: 3–4 cameras at 25 fps
8–30 sfor phase 07 on a doubtful plate, off the fast path, so traffic never waits measured
5.6 fpstoday on 4K with the unoptimised baseline (FP32, 26 ms a tile): the gap phase 02 closes measured
P3
Speed of the vehicle
Not two lines and a stopwatch: a fit over the whole track, in metres.
design target
position samples
0
fitted speed
–
Each frame, the overview camera puts the vehicle on a map of the road in metres, calibrated against aerial imagery. Speed is the slope of position against time over 30–60 m, with every camera's clock synced by GPS/PTP. Target: within 2 km/h, checked on BrnoCompSpeed and a GPS test car.
P4
The system
From glass to database: what runs where.
design target
Gantryplate cams · 4K overview · side cam · LiDAR
Edge boxGB10 / Jetson Thor · all AI on site
Server VMsdatabase · evidence store · API
Web applive wall · search · review
raw video never leaves the site · only vehicle records and evidence crops travel
Plate camerasone per two lanes, ≥ 5 MP global shutter, mono + 850 nm IR flash, 1/1000–1/2000 s, plates ≥ 130 px
Rear plate cameratrucks and trailers often carry only a readable rear plate; tolling needs both
Overview camera4K, wide, high mount and calibrated: lanes, tracking and speed
Side camera1080p at 60 fps, square to the lanes: axles, length and height
LiDAR (optional)exact dimensions to ±5 cm, and a cross-check on camera speed
Time sync + edge GPUGPS/PTP clocks on every device; NVIDIA GB10 now, Jetson Orin/Thor in the field
Edge, per siterolling video buffer stays on the box; only records and evidence crops are sent
Server VMsPostgres + TimescaleDB for vehicle records, an object store for crops and short clips
Privacy by designplates hashed in analytics, raw plates only behind role-based access, every search audited, 30-day retention
Training loopfootage → auto pre-labels → human fixes → versioned datasets → train → shadow deploy → promote
Review feedbackevery correction a reviewer makes flows back into the next training set
ingestRTSP in, GPU decode on NVDEC, every frame timestamped (GStreamer / DeepStream)
perception · plates · geometrydetect, track in road metres, vote plates, fit speed, count axles
fusionplate, overview and side cameras joined by lane, position and time into one record
verifierthis page: the slow path for unsure plates, through the Doum GPU queue
api + webFastAPI (REST + WebSocket live feed), React web app with live wall, search and review queue
RF-DETRvehicles, wheels and plates on every camera, exported to TensorRT FP16
fast-plate-ocr + PARSeqplate reader fine-tuned on Australian plates with a state head; PARSeq as fallback
ByteTracktracking in road-plane metres, robust when trucks hide each other
DINOv3 + rulesbody type from a linear head; the Austroads class from an axle rule engine
Slow pathQwen-VL vehicle checks (this page), HAT super-resolution, SAM 3 for faster labelling
0/ 2
doubtful plates settled correctly, both against blind ground truth
0reads
of a single plate, voted character by character
0checks
per registered vehicle: make, body, model, multiple choice
0types
of vehicle told apart on camera, from car and ute to prime mover
what the road taught me
Lessons from the shoulder.
01
Registered isn't right.
A full plate series means a misread usually lands on a real car. Checking the vehicle, not just the plate, is the whole point.
02
Vision models read badges, not plates.
It read MAN, CAMERON and fleet number 917, but repeated the OCR's 1/I doubt and misread a plate outright. So it describes the vehicle and never votes on the plate.
03
Colour is evidence, not proof.
The registration API has no colour, and a shaded white cab reads grey in pixels. Colour goes on the record but never decides.
04
COCO says "truck".
The detector's training set files vans, utes and prime movers under one word. A second look by a local vision model, voted over each vehicle's best views, gives the real type.