{"id":13642137,"url":"https://github.com/nasa/delta","last_synced_at":"2026-01-26T02:23:07.123Z","repository":{"id":38187088,"uuid":"260499197","full_name":"nasa/delta","owner":"nasa","description":"Deep Learning for Satellite Imagery","archived":false,"fork":false,"pushed_at":"2023-07-12T00:32:28.000Z","size":10358,"stargazers_count":221,"open_issues_count":4,"forks_count":66,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-09-25T14:03:12.735Z","etag":null,"topics":["deep-learning","machine-learning","remote-sensing","usg-artificial-intelligence"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nasa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-05-01T15:55:30.000Z","updated_at":"2025-09-14T20:55:16.000Z","dependencies_parsed_at":"2023-09-24T16:57:29.886Z","dependency_job_id":null,"html_url":"https://github.com/nasa/delta","commit_stats":{"total_commits":646,"total_committers":13,"mean_commits":49.69230769230769,"dds":0.7275541795665634,"last_synced_commit":"d14ac3ed579e308d70048afc2798d99c5a099757"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/nasa/delta","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nasa%2Fdelta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nasa%2Fdelta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nasa%2Fdelta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nasa%2Fdelta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nasa","download_url":"https://codeload.github.com/nasa/delta/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nasa%2Fdelta/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28764944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T00:37:26.264Z","status":"online","status_checked_at":"2026-01-26T02:00:08.215Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","machine-learning","remote-sensing","usg-artificial-intelligence"],"created_at":"2024-08-02T01:01:27.938Z","updated_at":"2026-01-26T02:23:07.105Z","avatar_url":"https://github.com/nasa.png","language":"Python","readme":"**DELTA** (Deep Earth Learning, Tools, and Analysis) is a framework for deep learning on satellite imagery,\nbased on Tensorflow. DELTA classifies large satellite images with neural networks, automatically handling\ntiling large imagery.\n\n![DELTA example flowchart](delta/../docs/delta_flowchart.png)\n\nDELTA is under active development by the\n[NASA Ames Intelligent Robotics Group](https://ti.arc.nasa.gov/tech/asr/groups/intelligent-robotics/) through the end of 2021.\nInitially, it is mapping floods for disaster response, in collaboration with the\n[U.S. Geological Survey](http://www.usgs.gov), [National Geospatial Intelligence Agency](https://www.nga.mil/),\n[National Center for Supercomputing Applications](http://www.ncsa.illinois.edu/), and\n[University of Alabama](https://www.ua.edu/).\n\nInstallation\n============\n\n1. Install [python3](https://www.python.org/downloads/), [GDAL](https://gdal.org/download.html),\n   and the [GDAL python bindings](https://pypi.org/project/GDAL/). For Ubuntu Linux, you can run\n   `scripts/setup.sh` from the DELTA repository to install these dependencies.\n\n2. Install Tensorflow following the [instructions](https://www.tensorflow.org/install). For\n   GPU support in DELTA (highly recommended) follow the directions in the\n   [GPU guide](https://www.tensorflow.org/install/gpu).\n\n3. Checkout the delta repository and install with pip:\n\n    ```bash\n    git clone http://github.com/nasa/delta\n    python3 -m pip install delta\n    ```\n\nDELTA is now installed and ready to use!\n\n### Alternate install using a Conda environment\n1. Install [Miniconda](https://docs.conda.io/en/latest/miniconda.html).\n\n2. Checkout the delta repository and cd into the directory:\n    ```\n    git clone http://github.com/nasa/delta\n    cd ./delta\n    ```\n   \n3. Run the following commands to create a conda environment, install dependences, and install delta:\n    ```bash\n   conda create --name delta --yes python gdal\n    conda activate delta\n    pip install . # This command should be run in the ./delta directory we made in step 2\n    ```\n4. For GPU support in DELTA you'll need to install the [required NVIDIA software](https://www.tensorflow.org/install/gpu#software_requirements) before running the conda commands in step 3.\n\n### Installing ESA SNAP ####\n\nIn order to process Sentinel-1 images you will need to instal the ESA SNAP tool.  You can download it here:\n```https://step.esa.int/main/download/snap-download/```\n\nOnce it is installed, you will need to add SNAP's bin folder to your path like this:\n```export PATH=$PATH:/where/you/installed/snap/bin```\n\nDocumentation\n=============\n\n- README Docs\n  - [DELTA Config README](delta/config/README.md) - details on how to configure DELTA from the command line using .yaml files.\n  - [DELTA built-in networks README](delta/config/networks/README.md) - details some of the available network architecture .yaml files already included with DELTA. \n- [Python Documentation](https://nasa.github.io/delta/) - DELTA can be used either as a command line tool or as a python library. You can view the documentation at the linked URL or generate the documentation with [`scripts/docs.sh`](scripts/docs.sh).\n  - `delta.config.extensions` [documentation](https://nasa.github.io/delta/config/extensions.html) - details on extending DELTA for use with custom layers, image types, preprocessing, etc.\n  \nExample\n=======\n\n### Bash Script Example (Linux Only)\n\nAs a simple example, consider training a neural network to map clouds with Landsat-8 images.\nThe script [`scripts/example/l8_cloud.sh`](scripts/example/l8_cloud.sh) trains such a network using DELTA from the\n[USGS SPARCS dataset](https://www.usgs.gov/core-science-systems/nli/landsat/spatial-procedures-automated-removal-cloud-and-shadow-sparcs),\nand shows how DELTA can be used. The steps involved in this, and other, classification processes are:\n\n1. **Collect** training data. The SPARCS dataset contains Landsat-8 imagery with and without clouds.\n\n2. **Label** training data. The SPARCS labels classify each pixel according to cloud, land, water and other classes.\n\n3. **Train** the neural network. The script `scripts/example/l8_cloud.sh` invokes the command\n\n    ```\n    delta train --config l8_cloud.yaml l8_clouds.h5\n    ```\n\n    where `scripts/example/l8_cloud.yaml` is a configuration file specifying the labeled training data and\n    training parameters (learn more about configuration files below). A neural network file\n    `l8_clouds.h5` is output.\n\n4. **Classify** with the trained network. The script runs\n\n    ```\n    delta classify --config l8_cloud.yaml --image-dir ./validate --overlap 32 l8_clouds.h5\n    ```\n\n    to classify the images in the `validate` folder using the network `l8_clouds.h5` learned previously.\n    The overlap tiles to ignore border regions when possible to make a more aesthetically pleasing classified\n    image. The command outputs a predicted image and confusion matrix.\n\nThe results could be improved--- with more training, more data, an improved network, or more--- but this\nexample shows the basic usage of DELTA.\n\n### JupyterLab Example (Linux/Mac)\n\nThe [jupyter lab example](scripts/example/l8_cloud_example.ipynb) is very similar to the bash script example above but has a more visual demonstration of the steps and imagery used. It is especially helpful if you are less experienced with the command line.\n\nYou can view a read-only version at the above link. Or if you'd like to run the example yourself you'll need to install JupyterLab. To do that you can simply run \n\n```pip install jupyterlab``` \n\nafter [installing DELTA using the above instructions.](#Installation) Then run \n\n```jupyter-lab path_to_delta_install/scripts/example/l8_cloud_example.ipynb``` \n\nOnce jupyter loads, you can advance through the cells one by one using the \"play\" button \n\n\u003cimg src=\"docs/jupyter_play.png\" width=\"300\"/\u003e\n\nor run all the cells at once using the \"fast-foward\" button.\n\n\u003cimg src=\"docs/jupyter_fastforward.png\" width=\"300\"/\u003e\n\nConfiguration and Extensions\n============================\n\nDELTA provides many options for customizing data inputs and training. All options are configured via\nYAML files. Some options can be overwritten with command line options (use\n`delta --help` to see which). See the [`delta.config` README](delta/config/README.md) to learn about available configuration\noptions.\n\nDELTA can be extended to support custom neural network layers, image types, preprocessing operations, metrics, losses,\nand training callbacks. Learn about DELTA extensions in the `delta.config.extensions` [documentation](https://nasa.github.io/delta/config/extensions.html).\n\nData Management\n=============\n\nDELTA integrates with [MLFlow](http://mlflow.org) to track training. MLFlow options can\nbe specified in the corresponding area of the configuration file. By default, training and\nvalidation metrics are logged, along with all configuration parameters. The most recent neural\nnetwork is saved to a file when the training program is interrupted or completes.\n\nView all the logged training information through mlflow by running::\n\n```\n  delta mlflow_ui\n```\n\nand navigating to the printed URL in a browser. This makes it easier to keep track when running\nexperiments and adjusting parameters.\n\nData Preparation\n=============\n\nBy default DELTA operates on compressed input images which are unpacked to a temporary cache before\nthey are processed.  You can speed up processing by pre-unpacking your input data to a new folder\nusing the tool [scripts/fetch/unpack_inputs.py](scripts/fetch/unpack_inputs.py) as in this example:\n\n```\n  python3 scripts/fetch/unpack_inputs.py --input-folder raw_images --output-folder unpacked_images \\\n  --image-type worldview --image-ext .zip\n```\n\nThe images will be unpacked in the output folder, ready for training or classification. To train or\nclassify with unpacked data, the image type specified in the configuration file remains the same but\nthe extension should match the new extension in the unpacked folders (.tif for worldview, .vrt for Sentinel1).\n\nContributors\n============\nWe welcome pull requests to contribute to DELTA. However, due to NASA legal restrictions, we must require\nthat all contributors sign and submit a\n[NASA Individual Contributor License Agreement](https://www.nasa.gov/sites/default/files/atoms/files/astrobee_individual_contributor_license_agreement.pdf).\nYou can scan the document and submit via email. Thank you for your understanding.\n\nImportant notes for developers:\n\n * **Branching**: Active development occurs on `develop`. Releases are pushed to `master`.\n\n * **Code Style**: Code must pass our linter before merging. Run [`scripts/linter/install_linter.sh`](scripts/linter/install_linter.sh) to install\n   the linter as a git pre-commit hook.\n\n * **Unit Tests**: Code must pass unit tests before merging. Run `pytest` in the `tests` directory to run the tests.\n   Please add new unit tests as appropriate.\n\n * **Development Setup**: You can install delta using pip's `-e` flag which installs in editable mode. Then you can\n   run `delta` and it will use your latest changes made to the repo without reinstalling.\n\nLicensing\n=========\nDELTA is released under the Apache 2 license.\n\nCopyright (c) 2020, United States Government, as represented by the Administrator of the National Aeronautics and Space Administration. All rights reserved.\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasa%2Fdelta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnasa%2Fdelta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasa%2Fdelta/lists"}