Skip to content

santiagxf/prometheus

Repository files navigation

Project Prometheus

Prometheus is an early-stage fire detection solution that combines AI, Computer Vision, auto-piloted drones and weather services to detect wildfires before they spread too large. Named after Prometheus, the Greek Titan, who defies the gods by stealing fire and giving it to humanity, an act that enabled progress and civilization. We are itching to do the same.

We combine autopiloted drones and computer vision to detect wildfires while they are still in their early stages. The concept is to leverage the vast amounts of wildfire images and videos available on the internet to train a regional deep learning neural network to detect the presence of a fire, however small it may be. The drone would then fly over parks and forests collecting the images and an algorithm will determine the confidence level at which it believes a region is about to develop a fire. This solution is capable of detecting small occurences of fire, hard to see from the distance.

Prometheus is a joint efford of

Arizona State University
Bomberos Voluntarios República Argentina
National Weather Service
Tempe Fire Department

Technologies

Prometheus uses Image Detection with computer vision to spot the small fires. By using this technique, the model is able to detect small fires and outperform image classification techniques. We are also able to avoid the use of infrared sensors that are not suitable for hot areas like Arizona, California, Nevada or Colorado.

  • Cognitive ToolKit (CNTK): We used an implementation of Faster R-CNN over CNTK, a framework for the modeling, training and design of deep neural networks.
  • Python: The model and prediction API is implemented in Python. Both for scoring an image and for training the model. Current target environment is Python 3.5
  • CUDA: The training was done using GPUs for speed and scalability, leveraging the CUDA technology.
  • Docker container service: The web service is hosted inside a docker container that can be deployed in any platform either locally or in the cloud. To leverage GPU, you need to use Nvidia Containers.
  • Serverless functions: Prometheus can send alerts by SMS to people to respond to fires. This functionality is implemented using serverless functions in the cloud along with Twilio automatic SMS capabilities.
  • Visual Studio: The solution is modeled as a solution in Visual Studio, containing 3 projects: The FireDetection experimentation project - where the DNN was modeled and trained, the Prometheus App - a WPF Windows application and a web API shipped as a docker container - implemented using Flask with Python for scoring.

Weather services

  • NASA FIRMS Radar: The Fire Information for Resource Management System (FIRMS) distributes Near Real-Time (NRT) active fire data within 3 hours of satellite overpass from both the Moderate Resolution Imaging Spectroradiometer (MODIS) and the Visible Infrared Imaging Radiometer Suite (VIIRS).
  • NowCoast NOAA Oceanic Observations: This service is used to provide Mean Sea Level Pressure visualizations in the map. This observations are important as they are not "forecasted". They are real readings from stations deployed all around the world.
  • NWS: National Weather Services provides information to undestand and display Red Flag Alerts in the US
  • INTA: National Institute of Agricultural Techinology provides information to undestand and display Red Flag Alerts in Argentina.

Instalation instructions

Prerequisites

  • Docker Container Service: Prometheus API is shipped as a Docker container for convenience. You can deploy the container localy in your system or in any cloud provider. The image is a Linux OS. We recomend to deploy it on a Nvidia Docker system to leverage GPU technology if available, but it is not required. The API will use GPU if available, otherwise it will use CPU. By default, the REST api listens at port 80. The docker image deploys the following components:
    • Cognitive ToolKit (CNTK): Version 2.5
    • Python: 3.5.4. The file Prometheus.api\conda_requirements.yml contains all the packages that will be installed in the Conda Environment.
    • CUDA: If GPU is used, then NVidia dockers support should be present.
    • Intel Math library:Used for fast computation of the areas of interest in the images. If you are planning to deploy the service localy without the container, please follow the installation instructions for this SDK.
    • Flask:REST API is implemented in Flask.
    • Promethus DNN:Our pretrained model is included in the docker file. There is no need to train the model.
  • .NET Framework: You will need a Windows box with .NET 4 or later. Visual Studio is required to compile the WPF application. All required packages are included in Packages folder. A web based app is under development, but it's a bit hard to get Weather Maps working on it. Easier on the desktop.
  • Serverless Functions provider: We keep this as cloud provider agnostic as possible. Serverless functions can be implemented in any provider as long as there is a webhook available over the GET method:
    • You need functions to support the Subscribe, Unsubscribe and Notify functions. IBM Bluemix contians implementations of this using Twilio. Azure contains a template for Twilio automatic SMS.
    • A Twillio account: It is required if planning to use the SMS alerts capabilities.
  • Weather services APIs keys: We connect with a lot of weather services providers, some of them using an specific key that was provided to us. We do not share those keys as they are registered under our name and there are specific threshold we need to agree. You will have to get the following keys:
    • NASA FIRMS RADAR
    • NowCoast NOAA Oceanic Observations
    • OpenWeather
    • Argentina Red Flag Alerts (There is no key required, but this information is not publicly available. Please contact http://climayagua.inta.gob.ar

Installation

  1. Build the docker container: Build the docker image using the dockerfile provided. We use a prebuilt docker image of CNTK to speed up the setup process.
  2. Download the solution and build: Download the solution and build the project Prometheus.Planner.Console. You will require a Windows OS running .NET framework 4.0 or later.
  3. Configure the service: Open the file Prometheus.Planner.Console\App.config and point the configuration key prometheusWebServiceUrl to your hosting URL. By default the docker container maps the API service to port 80. The endpoint for scoring images is /score
  4. Deploy the serverless functions (optional): If you want to use the SMS alerts capabilities, you need to deploy serverless Functions and configure a Twilio account to process them. Open the file Prometheus.Planner.Console\App.config to configure the endpoints of your webhooks functions
  5. Run the service:Run the container publishing the port 80.
  6. Run the Windows App: Run the WPF application you compiled or use Visual Studio, Debug, Start new instance.

About

Prometheus is a machine learning powered solution for early detection of fires in national parks

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published