Case study
Graduation Project·2026
Drone Fire Watch: Aerial Fire & Smoke Detection
Graduation project: a YOLOv8-L detector trained on the 21K-image D-Fire dataset (precision, recall and mAP50 ≈ 0.80), served by FastAPI to a React operations dashboard and a Streamlit field reporter.
01
Overview
My graduation project: an aerial fire and smoke detection system built around a custom YOLOv8-L model, served through a FastAPI inference service to two clients, an operations dashboard and a field reporter.
02
The challenge
Wildfire detection usually relies on manual watch or delayed satellite imagery. By the time a fire is confirmed it may already be spreading, and field teams rarely know exactly where to go or which way the wind will push it.
03
The approach
I trained a YOLOv8-L detector on D-Fire, a 21K-image fire and smoke dataset, choosing the larger backbone on purpose because accuracy matters more than raw speed here. A FastAPI service wraps the model and returns structured detections to two clients: a dashboard for operators and a lightweight reporter for people in the field.
04
How it works
Aerial or field images reach a FastAPI inference service, which runs the YOLOv8-L model at 640px and returns structured JSON with labels, confidences and bounding boxes. The React operations dashboard raises alarms above a configurable confidence threshold and keeps stats and alert history. The Streamlit field reporter reads EXIF GPS from each photo, places detections on a map and enriches them with live wind data from OpenWeatherMap.
05
System architecture
How the pieces talk to each other. Hover a node, or switch to the source that drives the runtime.
Sense
Infer
Serve
06
What I built
YOLOv8-L model trained and evaluated on the 21K-image D-Fire dataset (~100 epochs, 640px).
FastAPI inference service with a structured JSON contract shared by both clients.
React operations dashboard: confidence-threshold alarms, stats and alert history.
Streamlit field reporter with EXIF-GPS mapping and OpenWeatherMap wind enrichment.
07
Outcomes
Trained a custom YOLOv8-L detector for fire and smoke on the 21K-image D-Fire dataset (~100 epochs, 640px), reaching precision, recall and mAP50 ≈ 0.80.
Deliberately traded latency for accuracy: in a safety-critical domain a missed fire costs more than a slower frame.
Served the model through a FastAPI inference service that returns structured JSON.
Built a React operations dashboard with confidence-threshold alarms, stats and alert history.
Built a Streamlit field reporter with EXIF-GPS mapping and OpenWeatherMap wind enrichment.
08
Results
Precision, recall and mAP50 ≈ 0.80 on fire and smoke.
One model, two clients: operators and field teams read the same detections.
A complete system (model, API and two interfaces), not a notebook-only demo.
09
What I learned
In safety-critical vision, pick the backbone by the cost of a miss, not by benchmark speed.
A detection is only useful with context: GPS and wind turn a box on an image into a decision.
A model without an operator UI is not a system. The interfaces were part of the design.
10
Tech stack
Have something similar in mind?
I'm open to new projects. Let's talk about what you're building.