A systematic synthesis of sky image enhancement techniques for ground-based solar irradiance forecasting
Description
A systematic synthesis of sky image enhancement techniques for ground-based solar irradiance forecasting
Data files and deep learning models supporting a study on image enhancement methods for improving ground-based solar irradiance forecasting using sky images and pyranometer readings.
Code repository
The source code repository used to study the effects of image enhancement methods and tricks on solar irradiance forecasting, and to generate the models below, is available at https://github.com/PUTvision/solar-irradiance. Additionally, Zenodo contains the latest version of the compressed source code in ZIP format.
The README.md file in the source code repository describes dependencies, requirements and installation steps.
Models
Pretrained models checkpoints for a 15-minute forecasting horizon with sky image enhancement pipeline applied for solar irradiance forecasting using ground-based sky images.
| Model | Forecast Skill (%) | PyTorch (Lightning) checkpoint |
| Smart Persistence Model | - | - |
| ResNet10 | 21.71 | resnet10t.ckpt |
| ResNet18 | 18.80 | resnet18.ckpt |
| ResNet34 | 21.09 | resnet34.ckpt |
| ResNet50 | 21.71 | resnet50.ckpt |
| SE ResNet50 | 20.31 | seresnet50.ckpt |
| ResNeXt-50 32x4d | 20.05 | resnext50_32x4d.ckpt |
| MobileNetV4-M | 15.78 | mobilenetv4_conv_medium.ckpt |
| MixNet-XL | 18.71 | mixnet_xl.ckpt |
| EfficientNetB0 | 19.71 | efficientnet_b0.ckpt |
| EfficientNetB2 | 18.60 | efficientnet_b2.ckpt |
| EfficientNetB4 | 19.81 | efficientnet_b4.ckpt |
| RegNetY-64 | 19.90 | regnety_064.ckpt |
| RegNetZ-D8 | 18.66 | regnetz_d8.ckpt |
| ConvNeXt-T | 18.72 | convnext_tiny.ckpt |
| ConvNeXtV2-T | 16.96 | convnextv2_tiny.ckpt |
| ConvFormer-S18 | 19.67 | convformer_s18.ckpt |
| EfficientViT-B2 | 20.98 | efficientvit_b2.ckpt |
| MViTv2-T | 20.00 | mvitv2_tiny.ckpt |
| MambaOut-T | 18.38 | mambaout_tiny.ckpt |
Irradiance forecasting models available in the literature.
| Model | Forecast Skill (%) | PyTorch (Lightning) checkpoint |
| Smart Persistence Model | - | - |
| MLP Regressor | 8.93 | - |
| Wen et al. [1] | 11.70 | wen_resnet18.ckpt |
| Papatheofanous et al. [2] (ResNet50 + Sun mask) | 16.10 | papatheofanous_resnet50.ckpt |
| Venitourakis et al. [3] (Xception-based + Sun mask) | 17.32 | venitourakis_xception.ckpt |
| ResNet50 + BoT | 21.71 | resnet50.ckpt |
[1] H. Wen, Y. Du, X. Chen, E. Lim, H. Wen, L. Jiang, W. Xiang, Deep learning based multistep solar forecasting for pv ramp-rate control using sky im-
ages, IEEE Transactions on Industrial Informatics 17 (2) (2021) 1397–1406. doi:10.1109/TII.2020.2987916.
[2] E. A. Papatheofanous, V. Kalekis, G. Venitourakis, F. Tziolos, D. Reisis, Deep learning-based image regression for short-term solar irradiance forecasting on the edge, Electronics 11 (22) (2022). doi:10.3390/electronics11223794.
[3] G. Venitourakis, C. Vasilakis, A. Tsagkaropoulos, T. Amrou, G. Konstantoulakis, P. Golemis, D. Reisis, Neural network-based solar irradiance forecast for edge computing devices, Information 14 (11) (2023). doi:10.3390/info14110617.
Dataset
The dataset used in this study is based on the Folsom dataset. To make the data preparation and follow-up steps easier to reproduce, these steps were described as a directed acyclic graph (DAG) using the DVC package. In the source code repository, this pipeline is stored in a dvc.yaml file.
Data files
- cleaned_irradiance.csv - cleaned version of the original Folsom_irradiance.csv files with timestamps converted to US/Pacific and added column with corresponding sky image, which is available in the Folsom dataset and is not corrupted
- periods_{FORECASTING HORIZON}m.pickle - data (irradiance readings and corresponding image filenames) grouped into periods of historical measurements at times (t-15, t-10, t-5, t), and the corresponding target irradiance at time t+H (H represents the forecasting horizon)
- solar-irradiance-{RELEASE TAG}.zip - release of the source code related to this study
Forecasting horizons
Dataset splits used in the study for different forecasting horizons.
| File name | Forecasting horizon (H) | PyTorch (Lightning) checkpoint |
| periods_5m.pickle | 5 minutes | resnet50_5m.ckpt |
| periods_10m.pickle | 10 minutes | resnet50_10m.ckpt |
| periods_15m.pickle | 15 minutes | resnet50.ckpt |
| periods_30m.pickle | 30 minutes | resnet50_30m.ckpt |
Data splits
The training, validation and test splits were generated using the following code sample, which is defined in the solar_irradiance/datamodules/forecasting.py file int the source code repository.
from pathlib import Path
import numpy as np
import pandas as pd
periods_path = Path("./periods_15m.pickle")
with periods_path.open("rb") as f:
periods = pd.read_pickle(f)
test_periods = list(filter(lambda p: p["history"][-1]["image_name"].startswith("2014"), periods))
train_val_periods = list(filter(lambda p: not p["history"][-1]["image_name"].startswith("2014"), periods))
size = 170 # number of days for validatation dataset to get 80-20 ratio of train-val datasets
np.random.seed(42)
val_dates = [
str(y) + str(m).zfill(2) + str(d).zfill(2)
for y, m, d in zip(
np.random.randint(2015, 2017, size=size),
np.random.randint(1, 13, size=size),
np.random.randint(1, 29, size=size),
strict=False,
)
]
val_periods = list(filter(lambda p: p["history"][-1]["image_name"][:8] in val_dates, train_val_periods))
train_periods = list(filter(lambda p: p["history"][-1]["image_name"][:8] not in val_dates, train_val_periods))
Files
cleaned_irradiance.csv
Files
(6.3 GB)
| Name | Size | Download all |
|---|---|---|
|
md5:04425339057a4d994421b7b02a7b97f5
|
48.3 MB | Preview Download |
|
md5:81a50b0d3d0754fbd577dabbe31f3e97
|
286.1 MB | Download |
|
md5:a2ce9b64a683dd43463ff0ae5355c371
|
336.5 MB | Download |
|
md5:a55268f1faa0e4ce5cb3b82d8e1b426d
|
337.1 MB | Download |
|
md5:106897d1efb97bda4d25ab0a9cd3baad
|
52.5 MB | Download |
|
md5:6885d05f33deb3399bc64b4c3c2b2de4
|
97.5 MB | Download |
|
md5:67a37e73d41208b84aad29415f4130a7
|
217.3 MB | Download |
|
md5:f009e0d9b2ef1680554c9c699d0e1207
|
269.6 MB | Download |
|
md5:f658ba9ee7d2ecdb143bd2cdd50f63ef
|
298.2 MB | Download |
|
md5:1320593e550ebf49896dac0efa2921db
|
129.9 MB | Download |
|
md5:cde7281523eb90a1a9c48ba1169cb38a
|
105.8 MB | Download |
|
md5:45276e640d139669dc523fd0670f1b9e
|
283.8 MB | Download |
|
md5:a645f605f5d0c2587f14a7492135771c
|
288.9 MB | Download |
|
md5:4fe350ee5b39385b4be7d0276bac873a
|
128.0 MB | Download |
|
md5:ee85f8d8652dd1d5316e5938d9cbdd0b
|
127.1 MB | Download |
|
md5:fafdb7dabed5cf1822514e2e7b91b78e
|
124.3 MB | Download |
|
md5:7ac25e74db4bea8b5a732b92c465338e
|
128.9 MB | Download |
|
md5:4dbb029d15149c77368176febc9a071d
|
356.3 MB | Download |
|
md5:22313889b8412ff5781e1a00e210916e
|
265.4 MB | Download |
|
md5:b3b3fbe5ebe8a93d82c527f7b1ccc8fe
|
60.8 MB | Download |
|
md5:110906f27cbed54917ee8a4cbffacdf0
|
136.0 MB | Download |
|
md5:a966a25f71a10d06e3ec8b71024da4fc
|
257.4 MB | Download |
|
md5:80181b86238533f3eb9201849f3db474
|
289.0 MB | Download |
|
md5:2b9fcca630af8122be188b81efac0b94
|
289.0 MB | Download |
|
md5:57f0e05d90058ee0c8eda448ad8a9da5
|
289.0 MB | Download |
|
md5:83972c4b30135abd60bd29520c8e1d81
|
289.0 MB | Download |
|
md5:f409cf63d8014d769b099e7ebc24c368
|
282.8 MB | Download |
|
md5:4afffd04d5dc3f67a9f6e9077be0a0ca
|
319.5 MB | Download |
|
md5:82904418271d209e04f8b1242288a4ed
|
11.4 MB | Preview Download |
|
md5:0de09feca807fbd2ca261f5d1c60384a
|
11.7 MB | Download |
|
md5:721173b675205bfa08e161645830bfa0
|
135.9 MB | Download |
Additional details
Software
- Repository URL
- https://github.com/PUTvision/solar-irradiance
- Programming language
- Python
- Development Status
- Active