Caltech SURF Project for 2020-2021
Rupa Kurinchi-Vendhan, Björn Lütjens*, Ritwik Gupta*, Lucien Werner*, Dava Newman
As the United States constructs additional renewable wind and solar energy power plants, policy makers in charge of operational decision making, scheduling, and resource allocation are faced with challenges introduced by the variability in spatial resolution in solar irradiance and wind speeds. Physics-based short-term forecasting models predict wind speeds and solar irradiance fields at coarse resolutions. Thus, machine learning-based super-resolution methods have been developed to provide higher fidelity for decision making. We generate a machine-learning ready dataset of wind and solar data from NREL databases. Additionally, we present a benchmark of super-resolution methods against this data. In addition to simple interpolation methods, we investigate three machine learning methods: the physics-informed resolution-enhancing generative adversarial network (PhIREGAN) model, the enhanced super-resolution generative adversarial network (ESRGAN), and an enhanced deep super-resolution (EDSR) network.
The dataset used for this project is available through the data.ipynb notebook. This file also contains instructions for generating your own machine learning-ready dataset, with flexibility to change the parameters inputted to NREL's WIND Toolkit and NSRDB.
Quick Links: The following links are from Caltech's Data Repository. This includes the wind and solar datasets, as well as sample wind and solar test datasets.
The links below provide access to sample wind and solar TFRecords, to be used to test the PhIREGAN.
To access raw data, visit our Caltech Data Respository page: raw data
To train the PhIREGAN, ESRGAN, or EDSR models to achieve 5x super-resolution (SR), use the following commands.
PhIREGAN
main.py --model=phiregan --mode=train --data_dir=path/to/train/data --data_type=data_type
Here, data
should be a folder of TFRecords. The data_type
can either be wind
or solar
. To train the SR CNN, replace phiregan
with srcnn
.
ESRGAN
main.py --model=esrgan --mode=train --data_dir=path/to/train/data
As opposed to the PhIREGAN, the data directories for EDSR and ESRGAN must be a folder with HR and LR subdirectories of images.
EDSR
main.py --model=edsr --mode=train --data_dir=path/to/train/data --valid_dir=path/to/valid/data --cuda=0
Once you have trained your models, use the commands below to run them on test data.
PhIREGAN
main.py --model=phiregan --mode=test --data_dir=path/to/test/data --data_type=data_type
To test the SR CNN, replace phiregan
with srcnn
.
ESRGAN
main.py --model=esrgan --mode=test --data_dir=path/to/test/data --save_dir=path/to/save
Here, save_dir
is the directory where SR outputs should be saved.
EDSR
main.py --model=edsr --mode=test --data_dir=path/to/test/data --save_dir=path/to/save --model_path=path/to/model --cuda=0
Sample results from each of our models are shown below.
To calculate the standard image quality metric values for the SR outputs of each model, use test.py. Alternatively, you can generate kinetic energy spectra using energy.py and normalized semivariograms using semivariogram.py.