Resilient America Preparedness Challenge · Track A
Early wildfire detection:
a detector on any camera,
one integrator to weigh them all
- America has built a nervous system for wildfire and forgotten to build the brain.
- Thousands of cameras already watch the ridgelines. Nobody can afford to read what they report.
- We built both halves: a detector that runs on any camera, as small as an ESP32, and the integrator that turns their reports into one trustworthy, located alert.
- The integrator runs on an Arduino UNO Q.
※ Kernwerk · confidential edge AI, built small and sealed shut · press → to advance, ? for keys
01 · the problem
More land burns, and it costs more.
Nearly all of it comes from the few fires that were not caught in time.
7.6 million acres a year now, more than double the 1990s. 77,850 fires in 2025 alone.
National Interagency Fire Center, annual reports
$2.9 bn2050 projected
$3.9 bn
$2.9 bn a year to fight them, averaged 2015–24, rising 42% by 2050. Total economic burden, incl. health, property and lost income: $394–893 bn a year, 2–4% of GDP.
USDA Forest Service R&D · US Joint Economic Committee, 2023
The earlier a fire is found, the better the chance to stop it.
NE Alberta, reported in Int. J. Wildland Fire · ASME Open J. Eng. 2025
02 · who benefits
The people who live in it,
and the people sent into it
30.8 M homes2010
43.4 M homes
About one in three American homes now sits in the wildland–urban interface, the fastest-growing land use in the country.
Radeloff et al., PNAS 115(13):3314, 2018
Crews and aircraft are the most expensive part of fighting a fire, and there are never enough of either.
Aerial firefighting cost reporting, 2024–25
Only a fifth die in the fire itself. Aircraft and vehicle accidents account for nearly half: the danger is in being sent.
US Forest Service · CDC MMWR, 2000–2013
More homes at risk every year, more days of fire weather, and more potential casualties.
03 · the idea
Four steps, and only one of them is new hardware
The detector is the eyes, on every camera. The integrator is the brain, on one board. No new towers, and no images leaving the hillside.
04 · steps one and two, the camera and the model
What one camera can honestly see
YOLOv5s, already trained
- The D-Fire authors' own published weights, on their public dataset. We did not train it
- 7 million parameters, which we measured at 0.778 mAP50
- Smaller for free: 512-pixel frames beat 640 on accuracy and speed — 179 a second on 8.5 watts. Pruning never beat that
Frames: HPWREN / ALERTCalifornia. Gate numbers measured on the board. Range figures are geometry.
134,000 parameters
- We trained this one, from scratch, on the same D-Fire data. It answers one question instead of finding boxes
- 52× smaller. Runs on an ESP32-S3: 340 ms a frame, 606 KB flash
- It catches 83% of small plumes and 76% of distant ones, waking on 5% of empty frames
Range is pixels on the smoke
- A ridgetop camera sees tens of kilometres. Detection stops far sooner
- Below about 20×20 pixels it is mostly missed, so useful detection is about 15 km
- Placing a fire takes two cameras, not one, so one every 10 to 15 km
- One camera is a weak witness. The answer is more of them, and the next two steps.
05 · step three, the verdict
The uplink is license-free radio, where regulation caps every transmission.
So the whole message is sixteen bytes.
It goes out on the camera's own connection, the one it already uses. Nothing new is added. One video frame would be tens of thousands of bytes; this is sixteen.
Two words
- 1 means plume or smoke, 2 means fire. There is no third word
- Smoke is early but often wrong; fire is late but rarely wrong. They are weighed differently
Who, and which way
- Each camera's position is already known, so it never sends it
- It sends the direction it was looking, to a tenth of a degree, and how tightly: ±2°. One camera gives a line, two give a place
No picture leaves the pole
- The frame is read on the camera and discarded there
- A ridge camera sees roads and back gardens too. With nothing leaving, there is no footage of anybody to leak or hand over
- Privacy and consent by design: no personal or biometric data is ever collected, so there is nothing to consent to and nothing to protect
And which radio. Wi-Fi long range reaches roughly a kilometre outdoors at low throughput, which is enough where cameras sit within reach of a hub. Spread out across a range, LoRa carries much further for less power and pays for it in bandwidth: hundreds of bits per second at its longest settings. The encoding was designed for that end of the scale, so the same sixteen bytes ride either one.
06 · step four, the integrator
Patience, in one number.
The integrator keeps a single running number: how much evidence have I seen here lately?
Every report pushes it up, and it leaks away constantly, so old evidence fades on its own. A flicker never builds. A real plume keeps pushing until the number crosses the bar, and crossing it sends the drone.
The bar moves. An operator can raise it, fire weather lowers it, and the same evidence alerts sooner or later.
And every place keeps its own. A steam vent investigated three times sits behind a higher bar; a cell where lightning struck two days ago sits behind a lower one. Same evidence, different answer per place.
In time: evidence halves about every
3½ minutes if nothing renews it, and across eight simulated days the median fire is
alerted 13 minutes after it starts.
In memory: one 32-bit number per place, the whole reason this fits on a microcontroller.
07 · the demo, end to end
One fire, from first wisp to a drone overhead.
Thousands of cameras, each one cheap, tireless and individually unreliable.
They flicker constantly. Dust, cloud, glare. None of it reaches anyone.
Three neighbours report smoke, then fire, along sightlines that cross at one place.
Threshold crossed → one alert with coordinates → a drone goes and looks.
Runs in real time in simulation; the same code targets the board. No cloud, no video leaving the hillside.
08 · why the edge, not the cloud
The edge decides what can join, and every unlike sensor that joins makes an alert harder to fake.
Cameras today. Anything that can form an opinion next.
- No picture is ever sent, only a class, a confidence and a bearing. A doorbell, a gas sensor, a lightning feed, a satellite hotspot: all sixteen bytes
- Each new kind is a weight, not a subsystem. In a data centre it is an ingest, a store and a model path of its own
- A cloud needs the video. Nobody gives a wildfire service their doorbell footage. But the doorbell can run the gate itself and send only the yes or no
Only independent sources count
- Two cameras are not independent: the same dust plume fools both
- A camera, a gas sensor and a lightning-primed cell cannot be, so each kind added makes every alert harder to fake rather than merely more numerous
- Which is why the card on the left is the argument: the edge is what lets an unlike sensor join at all
And the radio is the constraint: sixteen bytes fits even the tightest license-free radio link. A picture never will.
Not claimed: speed, nor power: the detector outweighs its radio by four orders of magnitude. And if the link is fully down, the alert cannot leave.
And nothing central to attack. There is no public endpoint taking pictures from thousands of devices, no fleet to compromise at once, and no single box whose failure blinds the network.
09 · building in the open
Everything here is already public.
Including what failed.
AGPL-3.0, because YOLOv5 is
- Two models in it: YOLOv5s as its authors published it, and our gate, trained from scratch on the same data
- D-Fire: 21,527 labelled images, Venâncio et al., 2022, free to download. The tower frames here are HPWREN / ALERTCalifornia
- But D-Fire is ground-level photos from Brazil, not a Californian ridge, so it is untested in the domain it would work in. A named risk, not a footnote
github.com/MaximeCarriere/wildfire-detection
Apache-2.0 from the first commit
- Public from the first commit, not opened once it started to look good
- The two repos meet across a process boundary, not by linking, so both licences hold and the commercial path stays open
- Every figure in this deck comes out of one script and re-runs. Nothing is drawn by hand
github.com/MaximeCarriere/wildfire-integration
A new sensor is a weight, not a redesign
- Gas, doorbells, lightning, satellite. Even a 911 call is a reading with a place on it
- Each enters as a projection onto the same map, so a modality is a function to write, not an architecture to change
- Retargeting guidance ships with it: thresholds are deployment-specific, and saying so beats shipping ours
Including everything that failed
- Pruning was meant to make it faster. It came out slower and less accurate
- One default quantisation setting cost 67% of the accuracy
- Ours too: a normalisation scheme that hid real fires, an adaptation rule that did nothing, a rate-coding bug we wrote ourselves
- These get published as loudly as the wins. A log of only successes is marketing
Through Stage Two
- Build notes as we go, published on deveco.io where the Challenge lives, mirrored on Hackster.io where the Arduino community already is. Not one report at the end
- Hardware files beside the firmware, so the prototype is reproducible, not merely watchable
10 · an honest read on feasibility
What is built, what is measured, and what could go wrong.
On real silicon already
- YOLOv5s, measured at 0.778 mAP50: 179 frames a second on 8.5 W
- Our gate, 134,000 parameters, on an ESP32-S3 we hold: 340 ms a frame, 606 KB of flash
- The dataset is the gap. D-Fire is ground-level photos from Brazil, but a ridge camera sees 20×20-pixel plumes at 15 km, where accuracy falls to 0.14
- So it is untested in the domain it would work in, and that is what Stage Two has to fix first
Timings read off the board. Accuracy off-device on 4,306 D-Fire frames, not tower frames.
Built for the Cortex‑M33 on the UNO Q
- 53 tests and golden vectors pin it, and the simulator drives this same code
- Eight simulated days, 24 fires: 4.4× fewer false alarms, 47 a day against 208, 96% of fires found, placed to 650 m
- No board in hand yet, and the numbers are our own simulator's
The risk we would test first
- The threshold rises where the system has been wrong before
- But people start fires near roads, and roads are where the dust and headlights are
- So it may be quietly anti-correlated with risk. Untested, and our first experiment
And the largest: we cannot claim fewer acres
- Bạlek et al. (PLOS ONE, 2024): no evidence that fire size grows with reporting delay in Western Canada
- A different setting, but good evidence, and it points away from us
- So we claim an operational result, not an outcome one: fewer things a human must look at
A new kind enters as a projection onto the same map, so it is a function to write, not an architecture to change. But every source we have fused so far is a camera: no gas sensor and no doorbell has ever fed the real thing. Stage Two takes one non-camera source end to end. And the drone is not built either: today the alert is a dispatch cue with coordinates; cueing and flying the confirmation drone is still to do.
thank you
The cameras are already there.
So is the fire.
- What is missing is the pair we built: a detector on the camera and the integrator that weighs their reports, each on a board you can hold.
- One located alert, instead of thousands that nobody can afford to read.
- Public from the first commit, mistakes included, and every number re-runnable.
- The ask: a place in the Top 50. First Dev Kit experiment: the gate on real tower frames, then the same integrator on the Arduino UNO Q, in the field.
※ Kernwerk · confidential edge AI, built small and sealed shut