NOTE: This project is currently a work-in-progress. If you spot any errors, please reach out to the contributors or raise an issue.
Hurricanes can cause upwards of 1,000 deaths and $50 billion in damages in a single event and have been responsible for well over 160,000 deaths globally in recent history. During a tropical cyclone, humanitarian response efforts hinge on accurate risk approximation models that can help predict optimal emergency strategic decisions.
Therefore, we are committed to building two deep-learning models to address the following two tasks.
- Task 1: Generate an ML/DL-based solution that can generate 3 future image predictions based on the given satellite images.
- Task 2: Train a network to predict wind speeds based on the training data provided.
The detailed project explanation and function API can be found here.
This web page is automatically updated by a Github action.
The main progress of this project can be explored using notebook:
/notebooks/xxx.ipynb
To run these notebooks, follow these steps to download the storm_predict
project and set up your environment:
-
clone this repository by running
git clone <url>
in your chosen directory. -
In the cloned directory, create a new virtual environment. For example, using
conda
, run the following in the terminal:conda env create -f environment.yml conda activate acds_debi
NOTE: Python version >= 3.11 is required for this project.
Once activated, if you run the command
pip list
, you should see the following:Package Version ---------- ------- pip 23.3 ...
N.B. Please ensure that the dataset "Selected_Storms_curated" is located in the repo before utilising the workflow for additional training. This can be done in the local directory after cloning. The total dataset has not been uploaded to GitHub to avoid cloning time.
See module-level docstrings for module details.
├── Extra
│ ├── Task1-deltas-tst.ipynb
│ └── Task1_model3.ipynb
├── LICENSE
├── README.md
├── debi_windpredictions.csv
├── docs
│ ├── conf.py
│ └── index.rst
├── environment.yml
├── gifs_results_different_models
│ ├── output-deltas.gif
│ ├── output-direct-comparison.gif
│ └── output-model-3.gif
├── notebooks
│ ├── EDA notebook.ipynb
│ ├── Task1.ipynb
│ ├── Task2.ipynb
│ └── surprise_storm.ipynb
├── requirements.txt
├── storm_predict
│ ├── loader
│ │ ├── __pycache__
│ │ │ └── speed_loader.cpython-39.pyc
│ │ └── speed_loader.py
│ ├── models
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ │ └── wind_speed_model.cpython-39.pyc
│ │ ├── image_generate_model.py
│ │ └── wind_speed_model.py
│ ├── resources
│ │ └── data.txt
│ ├── tests
│ │ └── test.py
│ └── visualization
│ ├── __pycache__
│ │ └── predict_visualize.cpython-39.pyc
│ ├── analysis.py
│ └── predict_visualize.py
└── tests
├── test_Task1.py
└── test_Task2.py
An attempted approach for the project involved training the image generation model using image differences and adding the generated deltas to the final image in the sequence, as opposed to the methodology used for the final model, which focused on training specific image sequences. While this alternative method had a strong theoretical base, it ultimately failed to surpass the performance of our final model, especially in cases involving storms with substantial development between images. As shown below for the final test case, storm translation (left to right) was inconsistent with expectations. Furthermore, graininess and slightly reduced image resolution in comparison with the final model were a factor in the decision against using this model. It is noted that when feeding the generated images from the final model as well as the deltas, there was low variation in predicted windspeeds, indicating not only a robust CNN for the wind prediction but also a low perceived pixel variation between both generation models. With additional development time.
Included in the repository are some extra experimental models namely, a ConvLSTM with time encoding included. With added development time, code reviewing, testing and packaging, the accuracy of the model would be able to be ratified. As seen below image sequence generation from this model performed with higher image resolution and combining this into the wind prediction CNN model may be able to produce more accurate results. It is noted, however, that this model produces less perceived rotation and considering the final stage of the surprise storm, this is an important factor.
If you have any problems with the project, please feel free to contact the team leader of the Debi group.
- [David Colomer Matachana] - Project Coordinator - [[email protected]]
Here are the contact information of the other team members:
- [Jiangnan Meng] - [[email protected]]
- [Rory Cornelius Smith] - [[email protected]]
- [Iona Y Chadda] - [[email protected]]
- [Tianzi Zhang] - [[email protected]]
- [Alex N Njeumi] - [[email protected]]
- [Yibin Gao] - [[email protected]]
- [Zeyu Zhao] - [[email protected]]
We welcome your input and look forward to collaborating with the wider community!