Minerva is a package to aid in the building, fitting and testing of neural network models on multi-spectral geo-spatial data.
If one wishes to use torchgeo, installation on Linux is recommended to handle the
compilation of the required C-based libraries -- though minerva
is also tested with MacOS and Windows runners.
minerva
is currently not included in any distribution. The recommended install is therefore to install the latest version from GitHub
.
pip install git+https://github.com/Pale-Blue-Dot-97/Minerva.git
minerva
now supports the use of torchgeo
datasets with upcoming support for torchvision datasets.
Required Python modules for minerva
are stated in the setup.cfg
.
minerva
currently only supports python
3.9 -- 3.11.
The core functionality of minerva
provides the modules to define models
to fit and test, loaders
to pre-process,
load and parse data, and a Trainer
to handle all aspects of a model fitting. Below is a MWE of creating datasets,
initialising a Trainer and model, and fitting and testing that model then outputting the results:
from minerva.utils import CONFIG # Module containing various utility functions.
from minerva.trainer import Trainer # Class designed to handle fitting of model.
# Initialise a Trainer. Also creates the model.
trainer = Trainer(**CONFIG)
# Run the fitting (train and validation epochs).
trainer.fit()
# Run the testing epoch and output results.
trainer.test()
See scripts\MinervaExp.py
as an example script implementing minerva
.
See minerva\inbuilt_cfgs\example_config.yml
as an example config file.
Use scripts\ManifestMake.py
to construct a manifest to act as a look-up table for a dataset.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Minerva is distributed under a MIT License.
Created by Harry Baker as part of a project towards for a PhD in Computer Science from the University of Southampton. Funded by the Ordnance Survey Ltd.
Contributions also provided by:
I'd like to acknowledge the invaluable supervision and contributions of Prof Jonathon Hare and Dr Isabel Sargent towards this work.
The following modules are adapted from open source third-parites:
Module | Original Author | License | Link |
---|---|---|---|
pytorchtools |
Noah Golmant | MIT | lars |
optimisers |
Bjarte Mehus Sunde | MIT | early-stopping-pytorch |
dfc |
Lukas Liebel | GNU GPL v3.0 | dfc2020_baseline |
This repositry also contains some small samples from various public datasets for unit testing purposes. These are:
Dataset | Citation | License | Link |
---|---|---|---|
ChesapeakeCVPR | Robinson C, Hou L, Malkin K, Soobitsky R, Czawlytko J, Dilkina B, Jojic N, "Large Scale High-Resolution Land Cover Mapping with Multi-Resolution Data". Proceedings of the 2019 Conference on Computer Vision and Pattern Recognition (CVPR 2019) | Unknown | ChesapeakeCVPR |
SSL4EO-S12 | Wang Y, Braham N A A, Xiong Z, Liu C, Albrecht C M, Zhu X X, "SSL4EO-S12: A Large-Scale Multi-Modal, Multi-Temporal Dataset for Self-Supervised Learning in Earth Observation". arXiv preprint, 2023 | Apache 2.0 | SSL4E0-S12 |
DFC2020 | M. Schmitt, L. H. Hughes, C. Qiu, and X. X. Zhu, “SEN12MS – A curated dataset of georeferenced multi-spectral sentinel-1/2 imagery for deep learning and data fusion,” in ISPRS Ann. Photogramm. Remote Sens. Spatial Inf. Sci. IV-2/W7, 2019, pp. 153–160. | Creative Commons Attribution | IEEE DFC2020 |
This project is now in release beta state. Still expect some bugs and there may be breaking changes in future versions.