Skip to main content

Vegetation fractional cover estimates via a TensorFlow-trained MLP model

Project description

FC3U

Stands for Fractional Cover 3 Universal. This has been forked from fractionalcover3 package to add support to apple's silicon macs.

@misc{scarthp2022,
  title={JRSRP} {F}ractional {C}over 3.0,
  author={Peter Scarth, Robert Denham, Fiona Watson},
  year={2022},
  month={08},
  howpublished={\url{https://gitlab.com/jrsrp/themes/cover/fractionalcover3}},
  doi={10.5281/zenodo.7008343}
}

Vegetation fractional cover package.

Description

Vegetation fractional cover represents the exposed proportion of green, non-green, and bare cover within each pixel. Landsat-scale ground cover information is important for soil erosion and nutrient flux estimates into the stream network, as well as assessing the impact of human activities.

The fractional cover v3.0 model is a Multi Layer Perceptron (neural network) model architecture that uses surface reflectance to estimate the three cover fractions of bare ground, photosynthetic vegetation (PV) and non-photosynthetic vegetation (NPV). The MLP model was trained with Tensorflow using Landsat TM, ETM+ and OLI surface reflectance and a collection of 4000 field observations of overstorey and ground cover. The field observations covered a wide variety of vegetation, soil and climate types across Australia, collected between 1997 and 2018 following the procedure outlined in:

Muir, J., Schmidt, M., Tindall, D., Trevithick, R., Scarth, P. and Stewart, J.B., 2011. Field measurement of fractional ground cover: a technical handbook supporting ground cover monitoring for Australia. Australian Bureau of Agricultural and Resource Economics and Sciences (ABARES): Canberra, Australia.

Installation:

python>=3.8
numpy
tflite; on non apple silicon machines
tensorflow; on apple silicon

install numpy, followed by gdal

The package comes with two scripts to produce fractional cover images on RSC standard landsat surface reflectance and Sentinel2 Surface Reflectance. To use these scripts, you will require some additional dependencies, which you can install if you have access to them using the rsc option. For example:

# install numpy, then gdal first
python -m pip install numpy
python -m pip install gdal==$(gdal-config --version)
python -m pip install fractionalcover3[rsc]  --pre rsc

Not all of the dependencies are on PyPI, so you may need to manually install these from source first. The Raster Processing package rios, is available from github (check their documentation ), but the rsc package is internal to the JRSRP. Contact the authors for more information on access.

While the scripts won't function without these packages, they are included in case they are useful templates for writing similar scripts to operate on complete images.

Basic Usage

The main function in the package is unmix_fractional_cover, which takes a numpy 3d array for surface reflectance (scaled between 0 and 1), and produces a 3d array of fractional cover. The output has 3 bands, one for each bare, green and non-green components.

The unmixing uses a tensorflow model. This is supplied as a tflite.Interpreter object. There are four models provided with the package, each at varying levels of complexity. These can be selected by number, with 1 the simplest and 4 the most complex.

The simplest example might look like:

from fractionalcover3.unmixcover import unmix_fractional_cover
from fractionalcover3 import data
import numpy as np
inref = np.array([562, 825, 1088, 2056, 2951, 2187]) * 0.0001
inref.shape = (6, 1, 1)

# use the default model provided
fractions = unmix_fractional_cover(inref,
                                       fc_model=data.get_model()
                                  )
for i,fraction in enumerate(['bare','green','dry']):
  print(fraction, fractions[i,0,0])
print('total', fractions.sum())

Output should be:

bare 0.12142971
green 0.23126282
dry 0.6459608
total 0.99865335

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fc3u-0.0.2.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fc3u-0.0.2-py2.py3-none-any.whl (23.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file fc3u-0.0.2.tar.gz.

File metadata

  • Download URL: fc3u-0.0.2.tar.gz
  • Upload date:
  • Size: 28.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.9

File hashes

Hashes for fc3u-0.0.2.tar.gz
Algorithm Hash digest
SHA256 4d28bb3a6ebdb606fbdd6f89dfe11ebba58352c975b15a5ab5aff5d2cb290f2f
MD5 a615fb81e1e2687a83adb29af9d2b839
BLAKE2b-256 9f875cdea42b23536768c8dd041a1bd1fdc6aaf8b6ee3da2546e8f4696e73d20

See more details on using hashes here.

File details

Details for the file fc3u-0.0.2-py2.py3-none-any.whl.

File metadata

  • Download URL: fc3u-0.0.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 23.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fc3u-0.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3ed8b05bdd3cff51711855bac0146e1086c85d2f9cdfd0616744dc04425426f1
MD5 316d61e3ca5f27b03e75aae5982e0637
BLAKE2b-256 7053ed6e1d26b83fd4bdefbf4ff870b2e0646d6c2968ebbf7edc2d0da90a2fca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page