Package: eo-learn
eo-learneo-learn makes extraction of valuable information from satellite imagery easy.The availability of open Earth observation (EO) data through the Copernicus and Landsat programs represents an
unprecedented resource for many EO applications, ranging from ocean and land use and land cover monitoring,
disaster control, emergency services and humanitarian relief. Given the large amount of high spatial resolution
data at high revisit frequency, techniques able to automatically extract complex patterns in suchspatio-temporaldata are needed.eo-learnis a collection of open source Python packages that have been developed to seamlessly access and processspatio-temporalimage sequences acquired by any satellite fleet in a timely and automatic manner.eo-learnis
easy to use, it's design modular, and encourages collaboration -- sharing and reusing of specific tasks in a typical
EO-value-extraction workflows, such as cloud masking, image co-registration, feature extraction, classification, etc. Everyone is free
to use any of the available tasks and is encouraged to improve the, develop new ones and share them with the rest of the community.eo-learnmakes extraction of valuable information from satellite imagery as easy as defining a sequence of operations to be performed on satellite imagery. Image below illustrates a processing chain that maps water in satellite imagery by thresholding the Normalised Difference Water Index in user specified region of interest.eo-learnlibrary acts as a bridge between Earth observation/Remote sensing field and Python ecosystem for data science and machine learning.The library is written in Python and uses NumPy arrays to store and handle remote sensing data. Its aim is to make entry easier for non-experts to the field of remote sensing on one hand and bring the state-of-the-art tools for computer vision, machine learning, and deep learning existing in Python ecosystem to remote sensing experts.Package Overvieweo-learnpackage is structured into several modules according to different functionalities. Some modules contain extensions under theextrasubfolder. Those modules typically require additional package dependencies which don't get installed by default, since they are usually very specific to the task.The modules are:core- The main module which implements basic building blocks (EOPatch,EOTaskandEOWorkflow) and commonly used functionalities.coregistration- Tasks which deal with image co-registration.features- A collection of utilities for extracting data properties and feature manipulation.geometry- Geometry-related tasks used for transformation and conversion between vector and raster data.io- Input/output tasks that deal with obtaining data from Sentinel Hub services or saving and loading data locally.mask- Tasks used for masking of data and calculation of cloud/snow/other masks.ml-tools- Various tools that can be used before or after the machine learning process.visualization- Visualization tools for the core elements of eo-learn.InstallationRequirementsThe package requires Python version>=3.8.LinuxBefore installingeo-learnonLinuxit is recommended to install the following system libraries:sudoapt-getinstallgcclibgdal-devgraphvizproj-binlibproj-devlibspatialindex-devMac OSBefore installingeo-learnonMac OSit is recommended to install the following system libraries withHomebrew:brewinstallgraphvizgccgdalcmakespatialindexprojWindowsBefore installingeo-learnonWindowsit is recommended to install the following packages fromUnofficial Windows wheels repository:gdal
rasterio
shapely
fionaPyPI distributioneo-learnis available on PyPI and can be installed with:pipinstalleo-learnFor some modules there are extra dependencies available, related to specific tasks. These were kept separate in order to keep theeo-learninstallation light. You can install these with, e.g.:pipinstall"eo-learn[EXTRA]"pipinstall"eo-learn[VISUALIZATION]"The full list (including their descriptions) is available here:RAYfor installing ray and its dependenciesZARRfor installing the zarr functionality for chunked timestamp saving/loadingEXTRAfor installing interpolation- and clustering-specific dependencies, or for installings2cloudlessin cloud maskingVISUALIZATIONfor using plotting libraries and utilitiesFULLfor installing all dependencies described so farDOCSfor developers, dependencies for building documentationDEVfor developers, dependencies for testing and code contributionConda Forge distributionThe package requires a Python environment>=3.8.Thanks to the maintainers of the conda forge feedstock (@benhuff, @dcunn, @mwilson8, @oblute, @rluria14),eo-learncan
be installed usingconda-forgeas follows:condaconfig--addchannelsconda-forge
condainstalleo-learnRun with DockerA docker image with the latest released version ofeo-learnis available atDocker Hub. It provides a full installation ofeo-learntogether with a Jupyter notebook environment. You can pull and run it with:dockerpullsentinelhub/eolearn:latest
dockerrun-p8888:8888sentinelhub/eolearn:latestAn extended version of thelatestimage additionally contains all example notebooks and data to get you started witheo-learn. Run it with:dockerpullsentinelhub/eolearn:latest-examples
dockerrun-p8888:8888sentinelhub/eolearn:latest-examplesBoth docker images can also be built manually from GitHub repository:dockerbuild-fdocker/eolearn.dockerfile.--tag=sentinelhub/eolearn:latest
dockerbuild-fdocker/eolearn-examples.dockerfile.--tag=sentinelhub/eolearn:latest-examplesDocumentationFor more information on the package content, visitreadthedocs.More ExamplesExamples and introductions to the package can be foundhere. A larger collection of examples is available at theeo-learn-examplesrepository. While the examples there are not always up-to-date they can be a great source of ideas.In the past,eo-learnserved as a collection of many useful tasks, originating from various contributors or projects. In order to keepeo-learnlight and easy to maintain, we have decided to move these specific tasks toeo-learn-examples/extra-tasks, .ContributionsThe list of alleo-learncontributors are listed in thecredits file. If you would like to contribute toeo-learn, please check ourcontribution guidelines.Blog posts and papersIntroducing eo-learn(by Devis Peressutti)Land Cover Classification with eo-learn: Part 1 - Mastering Satellite Image Data in an Open-Source Python Environment(by Matic Lubej)Land Cover Classification with eo-learn: Part 2 - Going from Data to Predictions in the Comfort of Your Laptop(by Matic Lubej)Land Cover Classification with eo-learn: Part 3 - Pushing Beyond the Point of “Good Enough”(by Matic Lubej)Innovations in satellite measurements for developmentUse eo-learn with AWS SageMaker(by Drew Bollinger)Spatio-Temporal Deep Learning: An Application to Land Cover Classification(by Anze Zupanc)Tree Cover Prediction with Deep Learning(by Daniel Moraite)NoRSC19 Workshop on eo-learnTracking a rapidly changing planet(by Development Seed)Land Cover Monitoring System(by Jovan Visnjic and Matej Aleksandrov)eo-learn Webinar(by Anze Zupanc)Cloud Masks at Your ServiceML examples for Common Agriculture PolicyHigh-Level ConceptData HandlingOutlier detectionIdentifying built-up areasSimilarity ScoreBare Soil MarkerMowing MarkerPixel-level Mowing MarkerCrop Type MarkerHomogeneity MarkerParcel Boundary DetectionLand Cover Classification (still to come)Minimum Agriculture Activity (still to come)Combining the Markers into DecisionsThe Challenge of Small ParcelsTraffic Light SystemExpert Judgement ApplicationScale-up your eo-learn workflow using Batch Processing API(by Maxim Lamare)Questions and IssuesFeel free to ask questions about the package and its use cases atSentinel Hub forumor raise an issue onGitHub.You are welcome to send your feedback to the package authors, EO Research team, through any ofSentinel Hub communication channel.LicenseSeeLICENSE.AcknowledgementsThis project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreements No. 776115, No. 101004112 and No. 101059548.