Skip to content

Commit 3ed518c

Browse files
authored
Merge pull request #76 from nasa/develop
Release 0.2
2 parents fa19528 + 7d84a24 commit 3ed518c

File tree

90 files changed

+7419
-1757
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+7419
-1757
lines changed

.github/workflows/ci.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ jobs:
1616

1717
steps:
1818
- uses: actions/checkout@v2
19-
- name: Set up Python 3.8
19+
- name: Set up Python 3.6
2020
uses: actions/setup-python@v2
2121
with:
22-
python-version: 3.8
22+
python-version: 3.6
2323
- name: Install DELTA
2424
run: |
2525
./scripts/setup.sh

MANIFEST.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
include delta/config/delta.yaml
22
include delta/config/networks/*.yaml
3+
include delta/extensions/sources/snap_process_sentinel1.sh
4+
include delta/extensions/sources/sentinel1_default_snap_preprocess_graph.xml

README.md

Lines changed: 58 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,88 @@
11
**DELTA** (Deep Earth Learning, Tools, and Analysis) is a framework for deep learning on satellite imagery,
2-
based on Tensorflow. Use DELTA to train and run neural networks to classify large satellite images. DELTA
3-
provides pre-trained autoencoders for a variety of satellites to reduce required training data
4-
and time.
2+
based on Tensorflow. DELTA classifies large satellite images with neural networks, automatically handling
3+
tiling large imagery.
54

65
DELTA is currently under active development by the
7-
[NASA Ames Intelligent Robotics Group](https://ti.arc.nasa.gov/tech/asr/groups/intelligent-robotics/). Expect
8-
frequent changes. It is initially being used to map floods for disaster response, in collaboration with the
6+
[NASA Ames Intelligent Robotics Group](https://ti.arc.nasa.gov/tech/asr/groups/intelligent-robotics/).
7+
Initially, it is mapping floods for disaster response, in collaboration with the
98
[U.S. Geological Survey](http://www.usgs.gov), [National Geospatial Intelligence Agency](https://www.nga.mil/),
109
[National Center for Supercomputing Applications](http://www.ncsa.illinois.edu/), and
11-
[University of Alabama](https://www.ua.edu/). DELTA is a component of the
12-
[Crisis Mapping Toolkit](https://github.com/nasa/CrisisMappingToolkit), in addition
13-
to our previous software for mapping floods with Google Earth Engine.
10+
[University of Alabama](https://www.ua.edu/).
1411

1512
Installation
1613
============
1714

18-
1. Install [python3](https://www.python.org/downloads/), [GDAL](https://gdal.org/download.html), and the [GDAL python bindings](https://pypi.org/project/GDAL/).
19-
For Ubuntu Linux, you can run `scripts/setup.sh` from the DELTA repository to install these dependencies.
15+
1. Install [python3](https://www.python.org/downloads/), [GDAL](https://gdal.org/download.html),
16+
and the [GDAL python bindings](https://pypi.org/project/GDAL/). For Ubuntu Linux, you can run
17+
`scripts/setup.sh` from the DELTA repository to install these dependencies.
2018

21-
2. Install Tensorflow with pip following the [instructions](https://www.tensorflow.org/install). For
19+
2. Install Tensorflow following the [instructions](https://www.tensorflow.org/install). For
2220
GPU support in DELTA (highly recommended) follow the directions in the
2321
[GPU guide](https://www.tensorflow.org/install/gpu).
2422

2523
3. Checkout the delta repository and install with pip:
2624

27-
```
28-
git clone http://github.com/nasa/delta
29-
python3 -m pip install delta
30-
```
25+
```bash
26+
git clone http://github.com/nasa/delta
27+
python3 -m pip install delta
28+
```
29+
30+
DELTA is now installed and ready to use!
31+
32+
Documentation
33+
=============
34+
DELTA can be used either as a command line tool or as a python library.
35+
See the python documentation for the master branch [here](https://nasa.github.io/delta/),
36+
or generate the documentation with `scripts/docs.sh`.
37+
38+
Example
39+
=======
40+
41+
As a simple example, consider training a neural network to map clouds with Landsat-8 images.
42+
The script `scripts/example/l8_cloud.sh` trains such a network using DELTA from the
43+
[USGS SPARCS dataset](https://www.usgs.gov/core-science-systems/nli/landsat/spatial-procedures-automated-removal-cloud-and-shadow-sparcs),
44+
and shows how DELTA can be used. The steps involved in this, and other, classification processes are:
45+
46+
1. **Collect** training data. The SPARCS dataset contains Landsat-8 imagery with and without clouds.
3147

32-
This installs DELTA and all dependencies (except for GDAL which must be installed manually in step 1).
48+
2. **Label** training data. The SPARCS labels classify each pixel according to cloud, land, water and other classes.
3349

34-
Usage
35-
=====
50+
3. **Train** the neural network. The script `scripts/example/l8_cloud.sh` invokes the command
3651

37-
As a simple example, consider training a neural network to map water in Worldview imagery.
38-
You would:
52+
```
53+
delta train --config l8_cloud.yaml l8_clouds.h5
54+
```
3955
40-
1. **Collect** training data. Find and save Worldview images with and without water. For a robust
41-
classifier, the training data should be as representative as possible of the evaluation data.
56+
where `scripts/example/l8_cloud.yaml` is a configuration file specifying the labeled training data and
57+
training parameters (learn more about configuration files below). A neural network file
58+
`l8_clouds.h5` is output.
4259
43-
2. **Label** training data. Create images matching the training images pixel for pixel, where each pixel
44-
in the label is 0 if it is not water and 1 if it is.
60+
4. **Classify** with the trained network. The script runs
4561
46-
3. **Train** the neural network. Run
47-
```
48-
delta train --config wv_water.yaml wv_water.h5
49-
```
50-
where `wv_water.yaml` is a configuration file specifying the labeled training data and any
51-
training parameters (learn more about configuration files below). The command will output a
52-
neural network file `wv_water.h5` which can be
53-
used for classification. The neural network operates on the level of *chunks*, inputting
54-
and output smaller blocks of the image at a time.
62+
```
63+
delta classify --config l8_cloud.yaml --image-dir ./validate --overlap 32 l8_clouds.h5
64+
```
5565
56-
4. **Classify** with the trained network. Run
57-
```
58-
delta classify --image image.tiff wv_water.h5
59-
```
60-
to classify `image.tiff` using the network `wv_water.h5` learned previously.
61-
The file `image_predicted.tiff` will be written to the current directory showing the resulting labels.
66+
to classify the images in the `validate` folder using the network `l8_clouds.h5` learned previously.
67+
The overlap tiles to ignore border regions when possible to make a more aesthetically pleasing classified
68+
image. The command outputs a predicted image and confusion matrix.
6269
63-
Configuration Files
64-
-------------------
70+
The results could be improved--- with more training, more data, an improved network, or more--- but this
71+
example shows the basic usage of DETLA.
6572
66-
DELTA is configured with YAML files. Some options can be overwritten with command line options (use
67-
`delta --help` to see which). [Learn more about DELTA configuration files](./delta/config/README.md).
73+
Configuration and Extensions
74+
============================
6875
69-
All available configuration options and their default values are shown [here](./delta/config/delta.yaml).
70-
We suggest that users create one reusable configuration file to describe the parameters specific
71-
to each dataset, and separate configuration files to train on or classify that dataset.
76+
DELTA provides many options for customizing data inputs and training. All options are configured via
77+
YAML files. Some options can be overwritten with command line options (use
78+
`delta --help` to see which). See the `delta.config` README to learn about available configuration
79+
options.
7280
73-
Supported Image Formats
74-
-----------------------
75-
DELTA supports tiff files and a few other formats, listed [here](./delta/imagery/sources/README.md).
76-
Users can extend DELTA with their own custom formats. We are looking to expand DELTA to support other
77-
useful file formats.
81+
DELTA can be extended to support custom neural network layers, image types, preprocessing operations, metrics, losses,
82+
and training callbacks. Learn about DELTA extensions in the `delta.config.extensions` documentation.
7883
79-
MLFlow
80-
------
84+
Data Management
85+
=============
8186
8287
DELTA integrates with [MLFlow](http://mlflow.org) to track training. MLFlow options can
8388
be specified in the corresponding area of the configuration file. By default, training and
@@ -93,18 +98,6 @@ View all the logged training information through mlflow by running::
9398
and navigating to the printed URL in a browser. This makes it easier to keep track when running
9499
experiments and adjusting parameters.
95100
96-
Using DELTA from Code
97-
=====================
98-
You can also call DELTA as a python library and customize it with your own extensions, for example,
99-
custom image types. The python API documentation can be generated as HTML. To do so:
100-
101-
```
102-
pip install pdoc3
103-
./scripts/docs.sh
104-
```
105-
106-
Then open `html/delta/index.html` in a web browser.
107-
108101
Contributors
109102
============
110103
We welcome pull requests to contribute to DELTA. However, due to NASA legal restrictions, we must require

0 commit comments

Comments
 (0)