Zol AI Lab Intelligent Tolling you are here · 07/07 Back to projects

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.

You are here 07/07 Verify

the whole road

Seven phases.
One toll.

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.

  1. 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

  2. 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

  3. 03

    Read

    Each plate read in every frame it appears in, then voted character by character into one answer with a confidence.

    unlocks soon

  4. 04

    Learn

    The detector and the reader retrained on Australian plates from every state and series, real and synthetic.

    unlocks soon

  5. 05

    Classify

    Axles and axle groups counted from the side view, turned into the Austroads 12-class code that sets the toll.

    unlocks soon

  6. 06

    Measure

    Speed from a calibrated road plane, plus length, width and height in metres for every vehicle.

    unlocks soon

  7. The MAN truck, the vehicle this phase verified

    07

    Verify

    Unsure plates checked against Australian registration data and matched to the vehicle on camera, before anyone is charged.

    live on this page

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 printed
I as printed
what 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.

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.

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 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 Ask

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 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

The best view of the truck chosen by the system, with its outline traced

vision model · blind

type prime mover · cab-over (vote of its 3 best views)

make MAN 1.00

badges "MAN" "Opal." "CAMERON" "917"

colour white pixels 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.

OCR said 1IL••L at 0.52 confidence, from 24 reads of a plate 53 pixels wide.

1IL••L

OCR's answer · rank 1

Ford Fiesta

2014–2019 · hatchback

−0.57 ✕ wrong vehicle

1IA••L

rank 2

Subaru XV

2011–2017 · crossover

−0.59 ✕ wrong vehicle

1IL••A

rank 3

Not registered

no vehicle with this plate

· ruled out

1TL••L

rank 4 · T read as I

Isuzu MU-X

2013–2021 · badge "ISUZU" ✓

+0.61 ✓ verified

phase 07 off

1IL••L

Toll sent to the owner of a Ford Fiesta

✕ wrong person charged · complaint · refund · manual review

The red Isuzu MU-X towing a Great Aussie caravan, with its outline traced

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.

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
  • clip B · Isuzu1920 × 1080 · 60 fpsYouTube, H.264-compressed, roadside
  • 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 · 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

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

1AB·2CD

phase 01 plate camera · 1/2000 s shutter

1AB·2CD

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
0 m60 m · calibrated road plane

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

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
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.

built with

  • DGX Spark · GB10
  • RF-DETR Seg
  • SigLIP 2
  • Qwen3.6 VLM, local
  • 3rd-party plate API
  • Doum GPU queue
  • Python
  • FFmpeg