PlumeRank iconPlumeRank
OpenCV AI Competition 2026 · powered by AWS

The camera wall finally points at the smoke.

$ make verify
… checked against: results/verify_micro.json -- MATCH (byte-for-byte)
Real HPWREN frame, Border58 Fire, eight minutes after ignition, with a smoke plume on the horizon
T+08:00detected · dev fire
PlumeRank · lookout log01 / 10
The scene

One dispatcher.
A wall of tiles.
Which first?

ALERTCalifornia alone runs more than 1,200 cameras. A human opens a few per minute and mutes anything that interrupts too often.

04:50NEXT SIXTY SECONDS
The problem02 / 10
The metric

F1 does not open a tile.

What detectors report
Per-frame F1

Or time-to-detection with no cap on false alarms. Neither says which tile to open.

What PlumeRank reports
Minutes to a look

Minutes after ignition until a human is pointed at the right camera, at 2 alerts per camera-window.

The reframe03 / 10
Border58 Fire · Otay Mountain West · real frames · development set

The tile that changed goes first.

Five minutes before ignition
T−05
quiet
At ignition
T+00
ignition
Eight minutes after ignition, smoke visible
T+08
PlumeRank detects
Twenty minutes after ignition
T+20
B1, B2: no detection
Source · results/arm_dev_2026-10-04.json04 / 10
Mechanism · 23 OpenCV 5 surfaces · 6 modules

Each camera, against itself.

01

Stabilise

phaseCorrelateUSAC_MAGSAC
02

Segment

MOG2connectedComponents
03

S1–S4

Sobel · LaplacianDISOpticalFlow
04

Escalate ~2%

dnn · ONNXENGINE_NEW
05

Own last 15 min

rank.Baselinez-score
06

Budget solve

solve_thresholdθ = 0.849

AWS · one t4g.small Graviton · S3 corpus · CloudWatch drift ±15% + heartbeat reboot

Mechanism05 / 10
Demo · live on the Graviton box

62 cameras. Nothing hidden.

live.plumerank.edycu.dev / the wall · captured 10 Oct 2026
The live PlumeRank wall with 62 camera tiles and a ranked watch list
29 + 33development fires + fire-free windows
1 s / tickone minute of footage, re-ranked
0 removedthe list only reorders
https://live.plumerank.edycu.dev06 / 10
Held-out · 54 fires · read once · same budget

Same model. Asked less often.

PlumeRank27 / 54
B2 via same baseline20 / 54
B1 via same baseline18 / 54
B2 · frame differencing4 / 54
B1 · CNN on every frame2 / 54
38.0

minutes, median time to detection over all 54 fires, misses counted as never. Only PlumeRank reaches a median, and only just.

CNN calls per camera-window: PlumeRank 1.4 · B1 3,645 · results/bench_2026-10-10.json

Results07 / 10
Honest by design

The headline is read once.

Frozen first

The held-out run refuses to start unless the constants hash matches a committed freeze.

results/constants.sha256
Logged reads

Every read of held-out pixels appends one line, with the commit.

results/hold_access.log
Verified frames

Every frame must hash to the fetch receipt before the read counts.

data/fetch_receipt.json

Known limits: half the held-out fires missed · median fragile to the ignition clock · daylight only · cloud, not fog, is the adversary

Trust08 / 10
Proof of work

Re-checked in three minutes.

735tests97% coverage on plumerank/
23OpenCV 5 surfacescounted by check_claims.py
1,500property caseshypothesis · budget never overspent
4GET routesno upload, no dispatch
$ git clone https://github.com/edycutjong/plumerank && cd plumerank && make verify
Engineering09 / 10
Try it

Open the right tile first.

plumerank.edycu.dev

Apache-2.0 · imagery HPWREN FIgLib10 / 10
v1.0 · 2026-10-10