Skip to content

DAMO-DI-ML/Solution-for-National-Precipitation-Nowcasting-Compitition

Repository files navigation

🌧️ National Precipitation Nowcasting Solution

CP2025000085 - 2nd Place Solution | Severe Convective Precipitation Nowcasting Competition

🏆 Competition Overview

This project is the solution for the National Severe Convective Forecasting - Precipitation Track No.2 CP2025000085.

  • Background: Based on the severe convective weather training dataset independently developed by the National Meteorological Information Center, this project uses multi-modal fusion methods in deep learning as the primary technical approach to drive innovation and optimization of short-term heavy precipitation forecasting models, enhancing the accurate prediction capability of extreme weather events.
  • Task Description:
    • Inputs:
      • 2-hour grid precipitation labels RA and radar observations Radar at 6-minute intervals with 1KM resolution before the forecast time
      • 2-hour numerical weather prediction (NWP) model product features at 1-hour intervals with 3KM resolution before and after the forecast time
    • Outputs: 0-2 hour grid precipitation labels RA at 6-minute intervals with 1KM resolution starting from the forecast time
    • Metrics: Including TS (Threat Score), MAE (Mean Absolute Error), R (Correlation), with the final result being a comprehensive Score combining forecast lead time and element levels

For more details, visit the official website Severe Convective Weather Training Dataset Intelligent Application Innovation Challenge

📊 Dataset & Models

Data Prepraration

During the initial run of the PyTorch DataLoader, the dataset was encapsulated as a pickle file, which recorded the following information for each precipitation event:

  • Label RA: Actual precipitation amount
  • Atmospheric parameters NWP: Meteorological data such as temperature, humidity, and wind field
  • Radar information Radar: Radar reflectivity data
  • Auxiliary information: Recording time, latitude and longitude, and the area where the precipitation event occurred

Data Division

  • Training set: 90% of the events (randomly sampled sequences for training)
  • Validation set: 10% of the events (fixed interval sliding window slices)

In each __getitem__() of the training set, a random sequence of events is selected for training. The validation set, on the other hand, slices the occurrence process of all events into windows according to the set sample_gap.

Model weights

We designed three models for this competition, each for forecasting precipitation of different durations, and used their results in the Ensemble. The weights of each model can be found in /experiments/. Model input 9 frames -> output 20 frames:/experiments/SimVP_NRD_STE_LSTM_cls_9_20 Model input 9 frames -> output 10 frames:/experiments/SimVP_NRD_STE_LSTM_cls_9_10 Model input 5 frames -> output 15 frames:/experiments/SimVP_NRD_STE_LSTM_cls_5_15

🏗️ Model Architecture

Our model adopts the SimVP (Simple Video Prediction) framework, combining multi-modal fusion and spatio-temporal encoder technologies. The model architecture is shown below:

Model Architecture

This architecture achieves accurate forecasting of severe convective precipitation by fusing multi-source data including radar data, Numerical Weather Prediction (NWP), and Digital Elevation Model (DEM).

⚙️ Environment Setup

System Requirements

  • Python >= 3.8
  • CUDA >= 11.0 (optional, for GPU acceleration)
  • At least 16GB RAM

Install Dependencies

bash install.sh

Quick Start

Training

To train the model, please run the train_simvp.sh script. This will automatically start the training process using the available dataset. During this process, the three models used for outputting precipitation forecasts of different time lengths will be jointly trained.

bash train_simvp.sh

Testing

After training, you can use the test_simvp_all.sh script to evaluate the model's performance on the test dataset. The program is implemented through the PyTorch Lightning framework. Note that this program will call the three models that output precipitation forecasts of different time lengths to perform forecasting. After executing this program, three forecast results will be generated in /experiments/. We use frequency matching for post-processing correction, with the code entry at /validate_ensemble/ensemble-fast-align-all-iter1000-testB.py.

# 1. basic prediction
bash test_simvp_all.sh
# 2. ensemble and post-process prediction
python ensemble-fast-align-all-iter1000-testB.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors