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
65DELTA 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
1512Installation
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
25233 . 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
8287DELTA integrates with [MLFlow](http://mlflow.org) to track training. MLFlow options can
8388be 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::
9398and navigating to the printed URL in a browser. This makes it easier to keep track when running
9499experiments 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-
108101Contributors
109102============
110103We welcome pull requests to contribute to DELTA. However, due to NASA legal restrictions, we must require
0 commit comments