{"id":13701739,"url":"https://github.com/santiagxf/prometheus","last_synced_at":"2025-04-24T00:23:27.312Z","repository":{"id":104691204,"uuid":"128300090","full_name":"santiagxf/prometheus","owner":"santiagxf","description":"Prometheus is a machine learning powered solution for early detection of fires in national parks","archived":false,"fork":false,"pushed_at":"2018-10-08T17:55:17.000Z","size":117402,"stargazers_count":27,"open_issues_count":1,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-01T15:52:42.026Z","etag":null,"topics":["alexnet","cntk","deep-learning","detection","drones","fire","machine-learning","transfer-learning"],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/santiagxf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-04-06T03:19:07.000Z","updated_at":"2024-09-18T17:25:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"a01f8000-11ef-40a2-b71e-1fe566d15d75","html_url":"https://github.com/santiagxf/prometheus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santiagxf%2Fprometheus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santiagxf%2Fprometheus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santiagxf%2Fprometheus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santiagxf%2Fprometheus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/santiagxf","download_url":"https://codeload.github.com/santiagxf/prometheus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250536413,"owners_count":21446729,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alexnet","cntk","deep-learning","detection","drones","fire","machine-learning","transfer-learning"],"created_at":"2024-08-02T20:01:56.254Z","updated_at":"2025-04-24T00:23:27.291Z","avatar_url":"https://github.com/santiagxf.png","language":"Jupyter Notebook","funding_links":[],"categories":["Jupyter Notebook"],"sub_categories":[],"readme":"# Project Prometheus\n\n\u003cp\u003ePrometheus 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.\u003c/p\u003e\n\n\u003cp\u003eWe 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.\n\u003c/p\u003e\n\n\u003ch2\u003e\nPrometheus is a joint efford of\n\u003c/h2\u003e\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\" width=\"190\"\u003e\u003cimg src='doc/asu.png' width='120'/\u003e\u003cdiv style='word-wrap: break-word;width:120px'\u003eArizona State University\u003c/div\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" width=\"190\"\u003e\u003cimg src='doc/bomberos.png' width='110'/\u003e\u003cdiv style='word-wrap: break-word;width:140px'\u003eBomberos Voluntarios República Argentina\u003c/div\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" width=\"190\"\u003e\u003cimg src='doc/noaa.png' width='120'/\u003e\u003cdiv style='word-wrap: break-word;width:120px'\u003eNational Weather Service\u003c/div\u003e\u003c/td\u003e\n        \u003ctd align=\"center\" width=\"190\"\u003e\u003cimg src='doc/tempe.png' width='105'/\u003e\u003cdiv style='word-wrap: break-word;width:120px'\u003eTempe Fire Department\u003c/div\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003ch2\u003e\nTechnologies\n\u003c/h2\u003e\n\u003cp\u003e\nPrometheus 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. \n\u003c/p\u003e\n\u003cp\u003e\n    \u003cul\u003e\n        \u003cli\u003e\u003cb\u003eCognitive ToolKit (CNTK):\u003c/b\u003e We used an implementation of Faster R-CNN over CNTK, a framework for the modeling, training and design of deep neural networks.\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003ePython:\u003c/b\u003e 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\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eCUDA:\u003c/b\u003e The training was done using GPUs for speed and scalability, leveraging the CUDA technology.\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eDocker container service:\u003c/b\u003e 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.\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eServerless functions:\u003c/b\u003e 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.\n        \u003cli\u003e\u003cb\u003eVisual Studio: \u003c/b\u003eThe 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.\u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/p\u003e\n\n\u003ch3\u003eWeather services\u003c/h3\u003e\n\u003cul\u003e\n    \u003cli\u003e\u003cb\u003eNASA FIRMS Radar:\u003c/b\u003e 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).\u003c/li\u003e\n    \u003cli\u003e\u003cb\u003eNowCoast NOAA Oceanic Observations:\u003c/b\u003e 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.\u003c/li\u003e\n    \u003cli\u003e\u003cb\u003eNWS:\u003c/b\u003e National Weather Services provides information to undestand and display Red Flag Alerts in the US\u003c/li\u003e\n    \u003cli\u003e\u003cb\u003eINTA:\u003c/b\u003e National Institute of Agricultural Techinology provides information to undestand and display Red Flag Alerts in Argentina.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e\n    Instalation instructions\n\u003c/h2\u003e\n\u003ch3\u003e\n    Prerequisites\n\u003c/h3\u003e\n\u003cp\u003e\n    \u003cul\u003e\n        \u003cli\u003e\u003cb\u003eDocker Container Service:\u003c/b\u003e 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: \n            \u003cul\u003e\n                \u003cli\u003e\u003cb\u003eCognitive ToolKit (CNTK):\u003c/b\u003e Version 2.5\u003c/li\u003e\n                \u003cli\u003e\u003cb\u003ePython:\u003c/b\u003e 3.5.4. The file Prometheus.api\\conda_requirements.yml contains all the packages that will be installed in the Conda Environment.\u003c/li\u003e\n                \u003cli\u003e\u003cb\u003eCUDA:\u003c/b\u003e If GPU is used, then NVidia dockers support should be present.\u003c/li\u003e\n                \u003cli\u003e\u003cb\u003eIntel Math library:\u003c/b\u003eUsed 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.\u003c/li\u003e\n                \u003cli\u003e\u003cb\u003eFlask:\u003c/b\u003eREST API is implemented in Flask.\u003c/li\u003e\n                \u003cli\u003e\u003cb\u003ePromethus DNN:\u003c/b\u003eOur pretrained model is included in the docker file. There is no need to train the model.\u003c/li\u003e\n            \u003c/ul\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\u003cb\u003e.NET Framework:\u003c/b\u003e 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.\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eServerless Functions provider: \u003c/b\u003eWe 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:\n            \u003cul\u003e\n                \u003cli\u003eYou 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.\u003c/li\u003e\n                \u003cli\u003e\u003cb\u003eA Twillio account:\u003c/b\u003e It is required if planning to use the SMS alerts capabilities.\u003c/li\u003e\n            \u003c/ul\u003e\n        \u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eWeather services APIs keys:\u003c/b\u003e 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:\n            \u003cul\u003e\n                \u003cli\u003eNASA FIRMS RADAR\u003c/li\u003e\n                \u003cli\u003eNowCoast NOAA Oceanic Observations\u003c/li\u003e\n                \u003cli\u003eOpenWeather\u003c/li\u003e\n                \u003cli\u003eArgentina Red Flag Alerts (There is no key required, but this information is not publicly available. Please contact http://climayagua.inta.gob.ar\u003c/li\u003e\n            \u003c/ul\u003e \n        \u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/p\u003e\n\u003ch3\u003e\n    Installation\n\u003c/h3\u003e\n\u003cp\u003e\n    \u003col\u003e\n        \u003cli\u003e\u003cb\u003eBuild the docker container: \u003c/b\u003eBuild the docker image using the dockerfile provided. We use a prebuilt docker image of CNTK to speed up the setup process.\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eDownload the solution and build:\u003c/b\u003e Download the solution and build the project Prometheus.Planner.Console. You will require a Windows OS running .NET framework 4.0 or later.\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eConfigure the service:\u003c/b\u003e 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\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eDeploy the serverless functions (optional):\u003c/b\u003e 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\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eRun the service:\u003c/b\u003eRun the container publishing the port 80.\u003c/li\u003e\n        \u003cli\u003e\u003cb\u003eRun the Windows App: \u003c/b\u003eRun the WPF application you compiled or use Visual Studio, Debug, Start new instance.\u003c/li\u003e\n    \u003c/ol\u003e\n\u003c/p\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsantiagxf%2Fprometheus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsantiagxf%2Fprometheus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsantiagxf%2Fprometheus/lists"}