Comments (13)
Pix2Pix does okay trying to predict the 12 satellite channels for the next half hour from the past 20min of data. I tried just half an hour in the future as it was easier to visualize and see what is happening, but plan on going up to 4 hours in the future soonish. This implementation is simple in that it takes a single input image, where the timeseries of images is just stacked along the channel dimension as input, and outputs a multi-channel output image in the same format, so each 12 channels is a single timestep.
These are the generated images after 9 epochs of 2000*16 input image stacks.
And this is the ground truth for that same timestep
As can be seen, Pix2Pix does get some of the structure present, but is very grainy looking, and fails on the last 2 channels. It does a bit better with this one:
from satflow.
Yeah, in the Zarr file that I've been using, all 12 SEVIRI channels have been down-sampled to something like 4 km resolution.
We have a bunch of code for spatially re-projecting the raw SEVIRI data, and converting to Zarr, if that's useful.
from satflow.
Yeah, I've been looking at that code and messing around with it currently, just working out the best way to integrate all the data together
from satflow.
Cool beans. I think the most recent reprojection code is in the satip project.
I'd be tempted to start simple, and start with just one (or a small number) of satellite channels. (And perhaps ignore the High Res Visible channel to start with. I've heard some people suggest that HRV might be one of the less informative channels when it comes to nowcasting clouds, and estimating irradiance at the Earth's surface! But I could be wrong!) That said, I can totally see the attraction of designing a data pipeline from the ground-up that can handle multiple, diverse datasets; so go for it if you want to start there!
from satflow.
Another one is https://github.com/FrontierDevelopmentLab/PyRain which does global rain forecasting, mostly seems to be just ConvLSTM, but could have some good stuff on data preparation, etc. Or this one, which the code doesn't seem to be public, but they use a GAN for thunderstorm prediction http://spaceml.org/repo/project/60002402f5647f00129f7287
from satflow.
https://github.com/CNALeon007/TrajGRU/blob/master/TrajGRU.py Trajectory GRU is also interesting, built specifically for precipitation forecasting, it could improve the tracking of clouds through time.
from satflow.
Perciever IO now is also available for predicting dense predictions: https://github.com/deepmind/deepmind-research/tree/master/perceiver
from satflow.
The perceiver IO is now also implemented in PyTorch here: https://github.com/lucidrains/perceiver-pytorch, openclimatefix/perceiver-pytorch#1
from satflow.
PyTorch Video has some neat built in ones, and it might also be helpful to try out https://github.com/facebookresearch/AVT and https://github.com/facebookresearch/SlowFast
from satflow.
MetNet's work with axial self-attention did really well with precipitation forecasting of up to 8 hours later, and use axial self-attention, which there is a PyTorch implementation here: https://github.com/lucidrains/axial-attention
Interestingly, MetNet is compared to optical flow methods as well in the paper, and does outperform it. Additionally, one important point is the need for a large spatial area around the target of interest to capture changed moving both into and out of the target area, which it does by having the center 64kmx64km crop, at full resolution, then downsampling the 1024x1024km area around the crop. It seems like trying out this approach, because of the similar type of problem makes the most sense as a first try. Trying out different amounts of historical data would also be interesting. MetNet uses the previous 90min at 15min intervals for prediction, since we have 5min observations, we could see if including different number of frames from the previous 90min, or focusing on more recent data (say previous 45min?) might matter more for the next 4 hours.
from satflow.
The 12 spectral bands from SEVRI are not all the same resolution, with the non-HRV being 3km resolution, and HRV being 1km, so need to figure out best way to resample that or potentially just put the non-HRV values at 9 pixels in the HRV image, easily enough.
from satflow.
After the chat today, seems like a good one to try first would be UNET, MetNet, then something like DVD-GAN. Ideally, UNET should get fairly decent results. Also, try out deeplabv3 .
from satflow.
According to https://www.climatechange.ai/papers/icml2021/54 GANs show promise for predicting future frames from current ones, the code isn't available, but they seem to use a Recurrent Unet + cGAN in their slide.
from satflow.
Related Issues (20)
- Pretrain on data from Weather4cast HOT 4
- Add Joint Model HOT 2
- Add CI/CD Model Runs HOT 2
- New paper: SPATE-GAN: Improved Generative Modeling of Dynamic Spatio-Temporal Patterns with an Autoregressive Embedding Loss HOT 1
- clarify development status HOT 2
- New paper: PolyViT HOT 2
- error: package directory 'satflow/data' does not exist HOT 2
- New Paper: RETRO HOT 1
- New Paper: Transformer Uncertainty Estimation with Hierarchical Stochastic Attention HOT 2
- New Paper: Data2Vec
- VICReg: Variance-Invariance-Covariance Regularization for Self-Supervised Learning
- Similar Datasets HOT 1
- document loss
- document loss
- Simulated Optical Flow using real clouds HOT 6
- Split out Skillful Nowcasting GAN, MetNet, and PerceiverIO models into own repos HOT 6
- Create output video visualizations HOT 4
- Split out base utils along with predict_pv_yield's HOT 2
- Format docstrings so they pass `pydocstyle`'s criteria HOT 2
- Update Perceiver and MetNet to use NWP data + other Nowcasting Dataset data HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from satflow.