Case study
Graduation Project·2026
Drone Fire Watch: Detección Aérea de Fuego y Humo
Proyecto de fin de grado: un detector YOLOv8-L entrenado con el dataset D-Fire de 21K imágenes (precision, recall y mAP50 ≈ 0.80), servido con FastAPI a un panel de operaciones en React y a un reportero de campo en Streamlit.
01
Resumen
Mi proyecto de fin de grado: un sistema de detección aérea de fuego y humo construido en torno a un modelo YOLOv8-L propio, servido mediante un servicio de inferencia FastAPI a dos clientes, un panel de operaciones y un reportero de campo.
02
El desafío
La detección de incendios forestales suele depender de la vigilancia manual o de imágenes satelitales con retraso. Cuando se confirma un incendio, puede que ya se esté propagando, y los equipos de campo rara vez saben exactamente adónde ir ni hacia dónde lo empujará el viento.
03
El enfoque
Entrené un detector YOLOv8-L con D-Fire, un dataset de fuego y humo de 21K imágenes, eligiendo a propósito el backbone grande porque aquí la precisión importa más que la velocidad. Un servicio FastAPI envuelve el modelo y devuelve detecciones estructuradas a dos clientes: un panel para operadores y un reportero ligero para quienes están en el terreno.
04
Cómo funciona
Las imágenes aéreas o de campo llegan a un servicio de inferencia FastAPI, que ejecuta el modelo YOLOv8-L a 640px y devuelve JSON estructurado con etiquetas, confianzas y cajas delimitadoras. El panel de operaciones en React lanza alarmas por encima de un umbral de confianza configurable y guarda estadísticas e historial de alertas. El reportero de campo en Streamlit lee el GPS EXIF de cada foto, sitúa las detecciones en un mapa y las enriquece con datos de viento en vivo de OpenWeatherMap.
05
Arquitectura del sistema
Cómo se comunican las piezas. Pasa el cursor por un nodo o cambia al código que mueve el runtime.
Sense
Infer
Serve
06
Qué construí
Modelo YOLOv8-L entrenado y evaluado con el dataset D-Fire de 21K imágenes (~100 épocas, 640px).
Servicio de inferencia FastAPI con un contrato JSON estructurado compartido por ambos clientes.
Panel de operaciones en React: alarmas por umbral de confianza, estadísticas e historial de alertas.
Reportero de campo en Streamlit con mapeo EXIF-GPS y datos de viento de OpenWeatherMap.
07
Resultados
Entrené un detector YOLOv8-L propio para fuego y humo con el dataset D-Fire de 21K imágenes (~100 épocas, 640px), alcanzando precision, recall y mAP50 ≈ 0.80.
Prioricé deliberadamente la precisión sobre la latencia: en un dominio crítico, un incendio no detectado cuesta más que un fotograma lento.
Serví el modelo mediante un servicio de inferencia FastAPI que devuelve JSON estructurado.
Construí un panel de operaciones en React con alarmas por umbral de confianza, estadísticas e historial de alertas.
Construí un reportero de campo en Streamlit con mapeo EXIF-GPS y datos de viento de OpenWeatherMap.
08
Resultados
Precision, recall y mAP50 ≈ 0.80 en fuego y humo.
Un modelo, dos clientes: operadores y equipos de campo leen las mismas detecciones.
Un sistema completo (modelo, API y dos interfaces), no una demo que vive solo en un notebook.
09
Qué aprendí
En visión crítica para la seguridad, elige el backbone por el coste de un fallo, no por la velocidad del benchmark.
Una detección solo sirve con contexto: el GPS y el viento convierten una caja en una imagen en una decisión.
Un modelo sin interfaz para operadores no es un sistema. Las interfaces formaron parte del diseño.
10
Stack tecnológico
¿Tienes algo similar en mente?
Estoy abierto a nuevos proyectos. Hablemos de lo que estás construyendo.