Restor Foundation Tree Crown Delineation Pipeline
A powerful and easy-to-use pipeline for detecting individual trees and tree canopy in aerial images.
https://github.com/restor-foundation/tcd
Category: Biosphere
Sub Category: Forest Remote Sensing
Keywords
conservation ecology forest segmentation tree tree-mapping
Last synced: about 12 hours ago
JSON representation
Repository metadata
Restor's ML pipeline for tree crown mapping in aerial images
- Host: GitHub
- URL: https://github.com/restor-foundation/tcd
- Owner: Restor-Foundation
- License: apache-2.0
- Created: 2022-10-07T16:07:24.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-17T02:07:01.000Z (2 months ago)
- Last Synced: 2025-04-20T00:12:31.770Z (8 days ago)
- Topics: conservation, ecology, forest, segmentation, tree, tree-mapping
- Language: Python
- Homepage: https://restor-foundation.github.io/tcd/
- Size: 32.3 MB
- Stars: 20
- Watchers: 1
- Forks: 2
- Open Issues: 6
- Releases: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
README.md
Restor Foundation Tree Crown Delineation Pipeline
Tree instance predictions over Zurich using our Mask-RCNN model.
This repository contains a library for performing tree crown detection (TCD) in aerial imagery.
For usage information, please visit: https://restor-foundation.github.io/tcd/
Citation
If you use this pipeline for research or commercial work, we would appreciate that you cite (a) the dataset and (b) the release paper as appropriate. We will update the citation with details of the preprint and/or peer-reviewed manuscript when released.
Dataset
Paper/code
This work has been accepted into NeurIPS 2024 in the Datasets and Benchmarks track. You can read more here.
The proceedings may be found here.
@inproceedings{NEURIPS2024_58efdd77,
author = {Veitch-Michaelis, Josh and Cottam, Andrew and Schweizer, Daniella and Broadbent, Eben and Dao, David and Zhang, Ce and Almeyda Zambrano, Angelica and Max, Simeon},
booktitle = {Advances in Neural Information Processing Systems},
editor = {A. Globerson and L. Mackey and D. Belgrave and A. Fan and U. Paquet and J. Tomczak and C. Zhang},
pages = {49749--49767},
publisher = {Curran Associates, Inc.},
title = {OAM-TCD: A globally diverse dataset of high-resolution tree cover maps},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/58efdd77196fa8159062afa0408245da-Paper-Datasets_and_Benchmarks_Track.pdf},
volume = {37},
year = {2024},
bdsk-url-1 = {https://proceedings.neurips.cc/paper_files/paper/2024/file/58efdd77196fa8159062afa0408245da-Paper-Datasets_and_Benchmarks_Track.pdf}}
Dataset and pre-trained models
The training dataset used for our models is currently hosted on HuggingFace Hub. We also provide the dataset pre-formatted as MS-COCO on Zenodo which can be used for training instance segmentation models out-of-the-box. These datasets can also be reconstructed using the HuggingFace repository.
Example predictions using one of our SegFormer-based models to predict canopy coverage over Zurich. Left: RGB image, Swisstopo/SwissIMAGE 10cm (2022), Right: Predictions from restor/tcd-segformer-mit-b5. Base map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under ODbL.
The repository supports Mask-RCNN for instance segmentation and a variety of semantic segmentation models - we recommend Segformer as a default, but we also provide trained UNets which are more permissively licensed. Models will be downloaded automatically when you run prediction for the first time, so there's no need to handle checkpoints manually. You can of course fine-tune your own models using the pipeline and provide local paths if you need.
Have a look at our model zoo.
Installation
For complete installation information, have a look at our documentation here.
However, for a quick start we recommend you use Conda:
# Clone the repository
git clone github.com/restor-foundation/tcd
# Install and activate the conda environment
conda env create -n tcd -f environment.yml
conda activate tcd
# Install the pipeline package
pip install -e .[test,docs]
# Run unit tests to verify
pytest
Docker
We also provide a docker container with dependencies and the library pre-installed:
docker pull ghcr.io/restor-foundation/tcd:main
Colab Notebook
For an example of loading our dataset and running a prediction without using the pipeline, have a look at this notebook.
Documentation
For technical information, please see our release paper.
Comprehensive documentation may be found here - we use mkdocs
to generate documentation and you can also find it in markdown format in the docs
folder in the repository. You can build/serve by running:
mkdocs serve
Post-install and testing
Running the test suite is a comprehensive check of the entire pipeline - currently at around 70% code coverage, from the root directory you can run pytest:
pytest
We provide a simple test image in the repo that you can use to check if everything is installed correctly.
Single image prediction
We've tried to make using the pipeline and models as simple as possible. Once you've installed the repository, you can run:
tcd-predict <model> <path-to-image> <result-folder>
for example:
tcd-predict semantic data/5c15321f63d9810007f8b06f_10_00000.tif results_semantic
tcd-predict semantic data/5c15321f63d9810007f8b06f_10_00000.tif results_instance
which will run the pipeline on the test image in semantic and instance segmentation modes. The results are saved to the output folders which include: geo-referenced canopy masks, shapefiles with detected trees and canopy regions and overlaid visualisations of the predictions. If you want to change models, just specify the name of the model as on HuggingFace e.g. restor/tcd-segformer-mit-b3
.
The tcd-predict
and tcd-train
scripts are installed as part of the library. However you can also call the scripts directly - they are symlinked in the root of the repository folder, or you can find them in src/tcd-pipeline/scripts
.
Screen prediction
We provide a fun demo script which will run a model on a live screen capture. screen_predict.py
lives in the tools
folder:
pip install python-opencv mss
python tools/screen_predict.py semantic
The script works best on dual monitor setups where you can view the output on one screen and move around on the other, but it will work on smaller screens just fine. You may need to adjust the grab dimensions to suit your hardware, in the script:
mon = {"left": 0, "top": 0, "width": 1024, "height": 1024}
Tips:
- The script has no idea about resolution, so you may need to zoom in/out to find the sweet spot. Remember the models are optimised for 0.1 m/px
- If you pick a region that's outside the bounds of your monitor, the script will probably segfault - so if that happens, double check the region settings above
- Try browsing the web (for example go on OpenAerialMap and zoom in)
Contributing
We welcome contributions via pull request. Please note that we enforce the use of several pre-commit hooks, namely:
- Code formatting uses
black
- We use
isort
to sort imports - There is a maximum size for checked in files so the repository doesn't get bloated
- We clear Jupyter notebooks to avoid bloat and big diffs
If you submit a PR, please ensure that the test suite passes beforehand and if you add new features/functionality, please try to add unit tests.
If you'd like help improve the labels in our dataset, you can take part as a citizen scientist via our Zooniverse campaign.
Troubleshooting
If run into problems using the pipeline, please create an issue providing as much detail as possible - including the script that you're trying to run. The more detail you can provide, the better we can help!
Similarly please don't hesitate to suggest new features that you think would be useful, though we can't guarantee that all feature requests will be possible.
License
This repository is released under the Apache 2.0 license which permits a wide variety of downstream uses.
OAM-TCD Dataset
For license information about the dataset, see the dataset card.
The majority of the dataset is licensed as CC-BY 4.0 with a subset as CC BY-NC 4.0 (train and test) and CC BY-SA 4.0 (test only). These two less
permissive image classes consititute around 10% of the dataset.
The dataset DOI is: 10.5281/zenodo.11617167
.
Models
Currently our models are released under a CC BY-NC 4.0 license. We are retraining models on only the CC-BY 4.0 imagery so that we can confidently use the same license.
Model usage must be attributed under the terms of the CC-BY license variants.
Mask-RCNN
To train Mask-RCNN (and other instance segmentation models), we use the Detectron2 library from FAIR/Meta which is licensed as Apache 2.0.
Segmentation Models Pytorch (SMP)
UNet model implementations use the SMP library, under the MIT license.
SegFormer
The Segformer architecture from NVIDIA is provided under a research license.
This does not allow commercial use without permission from NVIDIA - see here - but you are free to use these models for research. If you wish to use our models in a commercial setting, we recommend you use the Mask-RCNN/U-Net variants (or train your own models with your preferred architecture).
Acknowledgements
This project is a collaboration between Restor and ETH Zurich, supported by a Google.org AI for Social Good grant: TF2012-096892, AI and ML for advancing the monitoring of Forest Restoration.
Owner metadata
- Name: restor
- Login: Restor-Foundation
- Email:
- Kind: organization
- Description: An open data platform of ecological insights for the global restoration movement.
- Website: https://restor.eco
- Location: Zürich, Switzerland
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/75027896?v=4
- Repositories: 1
- Last ynced at: 2023-11-17T11:36:44.794Z
- Profile URL: https://github.com/Restor-Foundation
GitHub Events
Total
- Issues event: 5
- Watch event: 13
- Issue comment event: 15
- Push event: 7
- Pull request event: 1
- Fork event: 2
Last Year
- Issues event: 5
- Watch event: 13
- Issue comment event: 15
- Push event: 7
- Pull request event: 1
- Fork event: 2
Committers metadata
Last synced: 2 days ago
Total Commits: 499
Total Committers: 8
Avg Commits per committer: 62.375
Development Distribution Score (DDS): 0.144
Commits in past year: 164
Committers in past year: 1
Avg Commits per committer in past year: 164.0
Development Distribution Score (DDS) in past year: 0.0
Name | Commits | |
---|---|---|
Josh Veitch-Michaelis | j****s@g****m | 427 |
Josh Veitch-Michaelis | j****h@r****o | 44 |
Jasper | j****k@s****h | 13 |
Calvin Zhang | c****g@g****m | 7 |
Jasper Dekoninck | d****r@p****m | 3 |
earens | 4****s | 2 |
Benjamin Dayan | b****n@g****m | 2 |
Andrew Cottam | a****w@r****o | 1 |
Committer domains:
- restor.eco: 2
- student.ethz.ch: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 20
Total pull requests: 18
Average time to close issues: 5 months
Average time to close pull requests: 13 days
Total issue authors: 7
Total pull request authors: 7
Average comments per issue: 2.35
Average comments per pull request: 2.39
Merged pull request: 14
Bot issues: 0
Bot pull requests: 0
Past year issues: 8
Past year pull requests: 1
Past year average time to close issues: N/A
Past year average time to close pull requests: N/A
Past year issue authors: 3
Past year pull request authors: 1
Past year average comments per issue: 2.88
Past year average comments per pull request: 0.0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- jveitchmichaelis (4)
- calvincbzhang (4)
- cmosig (3)
- wuhwyy (3)
- ixsanpe (2)
- earens (2)
- Motzemoere (2)
Top Pull Request Authors
- jveitchmichaelis (5)
- JasperDekoninck (4)
- calvincbzhang (3)
- earens (2)
- AdrianLuisMueller (2)
- cmosig (1)
- andrewcottam (1)
Top Issue Labels
- enhancement (3)
- bug (2)
- documentation (1)
Top Pull Request Labels
- enhancement (1)
Dependencies
- actions/checkout v3 composite
- docker/build-push-action ad44023a93711e3deb337508980b4b5e9bcdc5dc composite
- docker/login-action f054a8b539a109f9f41c372932f1ae047eff08c9 composite
- docker/metadata-action 98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- pytorch/pytorch 2.3.0-cuda12.1-cudnn8-runtime build
- albumentations *
- black *
- datasets *
- dotmap *
- fiona *
- httpx *
- huggingface-hub *
- hydra-core *
- isort *
- jsonlines *
- jupyter *
- lightning >=2
- matplotlib *
- mss *
- natsort *
- nb-clean *
- notebook *
- numpy *
- opencv-python-headless *
- pillow *
- pre-commit *
- pycocotools *
- pydantic *
- pyshp *
- python-dotenv *
- python-liquid *
- pyyaml *
- rasterio *
- rtree *
- scikit-image *
- seaborn *
- segmentation_models_pytorch *
- shapely *
- torch >=2
- torchmetrics >=0.11
- torchvision *
- tqdm *
- transformers *
- ttach *
- wandb *
- absl-py ==1.2.0
- accelerate ==0.22.0
- affine ==2.3.1
- aiohttp ==3.8.3
- aiosignal ==1.2.0
- alabaster ==0.7.13
- albumentations ==1.3.0
- antlr4-python3-runtime ==4.9.3
- appdirs ==1.4.4
- argcomplete ==2.0.0
- arrow ==1.2.3
- astroid ==2.13.2
- async-timeout ==4.0.2
- babel ==2.12.1
- bcrypt ==4.1.1
- black ==22.3.0
- blessed ==1.20.0
- blis ==0.7.9
- cached-property ==1.5.2
- cachetools ==5.2.0
- catalogue ==2.0.8
- cffi ==1.16.0
- cfgv ==3.3.1
- cleanlab ==2.3.0
- click ==8.1.3
- click-plugins ==1.1.1
- cligj ==0.7.2
- cloudpickle ==2.2.0
- colorama ==0.4.6
- commonmark ==0.9.1
- confection ==0.0.4
- contourpy ==1.0.5
- coverage ==6.5.0
- croniter ==1.3.15
- cryptography ==41.0.7
- cycler ==0.11.0
- cymem ==2.0.7
- darwin-py ==0.8.12
- darwinpy ==0.0.1
- datasets ==2.14.4
- dateutils ==0.6.12
- deepdiff ==6.3.0
- deprecation ==2.1.0
- dill ==0.3.7
- distlib ==0.3.6
- docker-pycreds ==0.4.0
- docstring-parser ==0.15
- docutils ==0.18.1
- dotmap ==1.3.30
- efficientnet-pytorch ==0.7.1
- einops ==0.4.1
- elevation ==1.1.3
- evaluate ==0.4.0
- exceptiongroup ==1.0.4
- fairscale ==0.4.12
- fastai ==2.7.12
- fastapi ==0.88.0
- fastcore ==1.5.29
- fastdownload ==0.0.7
- fasteners ==0.18
- fastprogress ==1.0.3
- ffmpy ==0.3.0
- filelock ==3.8.0
- fiona ==1.8.21
- focal-loss-torch ==0.1.2
- fonttools ==4.37.4
- frozenlist ==1.3.1
- fsspec ==2023.12.1
- future ==0.18.2
- fvcore ==0.1.5.post20220512
- gcsfs ==2022.8.2
- ghp-import ==2.1.0
- gitdb ==4.0.9
- gitpython ==3.1.31
- google-api-core ==2.10.2
- google-api-python-client ==2.65.0
- google-auth ==2.12.0
- google-auth-httplib2 ==0.1.0
- google-auth-oauthlib ==0.4.6
- google-cloud-core ==2.3.2
- google-cloud-storage ==2.7.0
- google-crc32c ==1.5.0
- google-resumable-media ==2.4.1
- googleapis-common-protos ==1.56.4
- gradio ==3.12.0
- griffe ==0.36.1
- grpcio ==1.49.1
- h11 ==0.12.0
- httpcore ==0.15.0
- httplib2 ==0.21.0
- httpx ==0.23.1
- huggingface-hub ==0.19.4
- humanize ==4.6.0
- hydra-core ==1.2.0
- identify ==2.5.6
- imageio ==2.22.4
- imagesize ==1.4.1
- importlib-resources ==5.12.0
- iniconfig ==1.1.1
- inquirer ==3.1.3
- iopath ==0.1.9
- ipyparallel ==8.6.1
- isort ==5.10.1
- itsdangerous ==2.1.2
- jinja2 ==3.1.2
- joblib ==1.2.0
- jsonargparse ==4.20.0
- kiwisolver ==1.4.4
- kornia ==0.6.7
- langcodes ==3.3.0
- laspy ==2.5.1
- lazy-object-proxy ==1.9.0
- liblas ==1.8.1
- lightly ==1.2.47
- lightly-utils ==0.0.2
- lightning ==1.9.5
- lightning-cloud ==0.5.36
- lightning-utilities ==0.8.0
- linkify-it-py ==1.0.3
- markdown ==3.4.1
- markdown-it-py ==2.1.0
- matplotlib ==3.6.2
- mccabe ==0.7.0
- mdit-py-plugins ==0.3.3
- mdurl ==0.1.2
- mergedeep ==1.3.4
- mkdocs ==1.5.2
- mkdocs-autorefs ==0.5.0
- mkdocs-gen-files ==0.5.0
- mkdocs-literate-nav ==0.6.0
- mkdocs-material ==9.2.8
- mkdocs-material-extensions ==1.1.1
- mkdocs-section-index ==0.3.6
- mkdocstrings ==0.23.0
- mkdocstrings-python ==1.6.2
- mss ==7.0.1
- multidict ==6.0.2
- multiprocess ==0.70.15
- munch ==2.5.0
- murmurhash ==1.0.9
- mypy ==0.991
- mypy-extensions ==0.4.3
- natsort ==8.2.0
- nb-clean ==2.3.0
- networkx ==2.8.8
- nodeenv ==1.7.0
- numexpr ==2.8.5
- numpy ==1.23.0
- nvidia-cublas-cu11 ==11.10.3.66
- nvidia-cuda-nvrtc-cu11 ==11.7.99
- nvidia-cuda-runtime-cu11 ==11.7.99
- nvidia-cudnn-cu11 ==8.5.0.96
- oauthlib ==3.2.1
- omegaconf ==2.2.3
- opencv-python ==4.7.0.68
- ordered-set ==4.1.0
- orjson ==3.8.6
- paginate ==0.5.6
- pandas ==1.5.1
- paramiko ==3.3.1
- pathspec ==0.11.2
- pathtools ==0.1.2
- pathy ==0.10.1
- pdal-plugins ==1.2.0
- pip ==23.2
- platformdirs ==2.5.2
- plotly ==5.11.0
- pluggy ==1.0.0
- portalocker ==2.5.1
- pre-commit ==2.20.0
- preshed ==3.0.8
- pretrainedmodels ==0.7.4
- promise ==2.3
- protobuf ==3.19.6
- pyarrow ==13.0.0
- pyasn1 ==0.4.8
- pyasn1-modules ==0.2.8
- pycocotools ==2.0.7
- pycryptodome ==3.16.0
- pydantic ==1.10.5
- pydeprecate ==0.3.2
- pydocstyle ==6.3.0
- pydot ==1.4.2
- pydub ==0.25.1
- pygments ==2.16.1
- pyjwt ==2.7.0
- pylint ==2.15.10
- pymdown-extensions ==10.3
- pynacl ==1.5.0
- pyproj ==3.4.0
- pytest ==7.2.0
- pytest-cov ==4.0.0
- python-decouple ==3.6
- python-dotenv ==0.21.0
- python-editor ==1.0.4
- python-liquid ==1.5.1
- python-multipart ==0.0.5
- pytorch-lightning ==2.0.2
- pywavelets ==1.4.1
- pyyaml ==6.0
- pyyaml-env-tag ==0.1
- qudida ==0.0.4
- rasterio ==1.3.2
- readchar ==4.0.5
- regex ==2023.8.8
- reportlab ==3.6.12
- requests ==2.31.0
- requests-oauthlib ==1.3.1
- responses ==0.18.0
- rfc3986 ==1.5.0
- rich ==13.3.1
- rsa ==4.9
- rtree ==1.0.0
- safetensors ==0.3.1
- scikit-image ==0.19.3
- scikit-learn ==1.1.2
- scipy ==1.9.2
- seaborn ==0.12.1
- segmentation-models-pytorch ==0.3.0
- sentry-sdk ==1.9.10
- setproctitle ==1.3.2
- shapely ==1.8.4
- shortuuid ==1.0.9
- smart-open ==6.3.0
- smmap ==5.0.0
- snowballstemmer ==2.2.0
- snuggs ==1.4.7
- spacy ==3.5.2
- spacy-legacy ==3.0.12
- spacy-loggers ==1.0.4
- sphinx ==7.2.5
- sphinx-rtd-theme ==1.3.0
- sphinxcontrib-applehelp ==1.0.7
- sphinxcontrib-devhelp ==1.0.5
- sphinxcontrib-htmlhelp ==2.0.4
- sphinxcontrib-jquery ==4.1
- sphinxcontrib-jsmath ==1.0.1
- sphinxcontrib-qthelp ==1.0.6
- sphinxcontrib-serializinghtml ==1.1.9
- srsly ==2.4.6
- starlette ==0.22.0
- starsessions ==1.3.0
- startinpy ==0.8.0
- tabulate ==0.9.0
- tcd-pipeline ==0.1.0
- tenacity ==8.1.0
- tensorboard ==2.10.1
- tensorboard-data-server ==0.6.1
- tensorboard-plugin-wit ==1.8.1
- tensorboardx ==2.6
- termcolor ==2.0.1
- thinc ==8.1.9
- threadpoolctl ==3.1.0
- tifffile ==2022.10.10
- timm ==0.4.12
- tokenizers ==0.13.3
- tomlkit ==0.11.6
- torch ==1.13.1
- torchgeo ==0.4.1
- torchmetrics ==1.0.1
- torchtext ==0.14.1
- torchvision ==0.14.1
- tqdm ==4.64.1
- transformers ==4.30.2
- tta ==0.2.1
- ttach ==0.0.3
- typer ==0.7.0
- typeshed-client ==2.2.0
- uc-micro-py ==1.0.1
- upolygon ==0.1.8
- uritemplate ==4.1.1
- uvicorn ==0.20.0
- virtualenv ==20.16.5
- wandb ==0.15.5
- wasabi ==1.1.1
- watchdog ==3.0.0
- websockets ==10.4
- werkzeug ==2.2.2
- wrapt ==1.14.1
- xxhash ==3.3.0
- yacs ==0.1.8
- yarl ==1.8.1
- absl-py ==2.1.0
- affine ==2.4.0
- aiohttp ==3.9.5
- aiosignal ==1.3.1
- albumentations ==1.4.7
- annotated-types ==0.7.0
- antlr4-python3-runtime ==4.9.3
- anyio ==4.3.0
- argon2-cffi ==23.1.0
- argon2-cffi-bindings ==21.2.0
- arrow ==1.3.0
- asttokens ==2.4.1
- async-lru ==2.0.4
- attrs ==23.2.0
- babel ==2.15.0
- beautifulsoup4 ==4.12.3
- black ==24.4.2
- bleach ==6.1.0
- cffi ==1.16.0
- cfgv ==3.4.0
- click ==8.1.7
- click-plugins ==1.1.1
- cligj ==0.7.2
- cloudpickle ==3.0.0
- comm ==0.2.2
- contourpy ==1.2.1
- coverage ==7.5.1
- coverage-badge ==1.1.1
- cycler ==0.12.1
- datasets ==2.19.1
- debugpy ==1.8.1
- decorator ==5.1.1
- defusedxml ==0.7.1
- dill ==0.3.8
- distlib ==0.3.8
- docker-pycreds ==0.4.0
- dotmap ==1.3.30
- efficientnet-pytorch ==0.7.1
- executing ==2.0.1
- fastjsonschema ==2.19.1
- fiona ==1.9.6
- fonttools ==4.52.1
- fqdn ==1.5.1
- frozenlist ==1.4.1
- fsspec ==2024.3.1
- fvcore ==0.1.5.post20221221
- gitdb ==4.0.11
- gitpython ==3.1.43
- grpcio ==1.64.0
- h11 ==0.14.0
- httpcore ==1.0.5
- httpx ==0.27.0
- huggingface-hub ==0.23.1
- hydra-core ==1.3.2
- identify ==2.5.36
- imageio ==2.34.1
- importlib-resources ==6.4.0
- iniconfig ==2.0.0
- iopath ==0.1.9
- ipykernel ==6.29.4
- ipython ==8.24.0
- ipywidgets ==8.1.2
- isoduration ==20.11.0
- isort ==5.13.2
- jedi ==0.19.1
- joblib ==1.4.2
- json5 ==0.9.25
- jsonpointer ==2.4
- jsonschema ==4.22.0
- jsonschema-specifications ==2023.12.1
- jupyter ==1.0.0
- jupyter-client ==8.6.2
- jupyter-console ==6.6.3
- jupyter-core ==5.7.2
- jupyter-events ==0.10.0
- jupyter-lsp ==2.2.5
- jupyter-server ==2.14.0
- jupyter-server-terminals ==0.5.3
- jupyterlab ==4.2.1
- jupyterlab-pygments ==0.3.0
- jupyterlab-server ==2.27.2
- jupyterlab-widgets ==3.0.10
- kiwisolver ==1.4.5
- lazy-loader ==0.4
- lightning ==2.2.5
- lightning-utilities ==0.11.2
- markdown ==3.6
- matplotlib ==3.9.0
- matplotlib-inline ==0.1.7
- mistune ==3.0.2
- mss ==9.0.1
- multidict ==6.0.5
- multiprocess ==0.70.16
- munch ==4.0.0
- mypy-extensions ==1.0.0
- natsort ==8.4.0
- nb-clean ==3.2.0
- nbclient ==0.10.0
- nbconvert ==7.16.4
- nbformat ==5.10.4
- nest-asyncio ==1.6.0
- nodeenv ==1.8.0
- notebook ==7.2.0
- notebook-shim ==0.2.4
- omegaconf ==2.3.0
- opencv-python-headless ==4.9.0.80
- overrides ==7.7.0
- packaging ==24.0
- pandas ==2.2.2
- pandocfilters ==1.5.1
- parso ==0.8.4
- pathspec ==0.12.1
- pexpect ==4.9.0
- platformdirs ==4.2.2
- pluggy ==1.5.0
- portalocker ==2.8.2
- pre-commit ==3.7.1
- pretrainedmodels ==0.7.4
- prometheus-client ==0.20.0
- prompt-toolkit ==3.0.43
- protobuf ==4.25.3
- psutil ==5.9.8
- ptyprocess ==0.7.0
- pure-eval ==0.2.2
- pyarrow ==16.1.0
- pyarrow-hotfix ==0.6
- pycocotools ==2.0.7
- pycparser ==2.22
- pydantic ==2.7.1
- pydantic-core ==2.18.2
- pygments ==2.18.0
- pyparsing ==3.1.2
- pyshp ==2.3.1
- pytest ==8.2.1
- pytest-cov ==5.0.0
- python-dateutil ==2.9.0.post0
- python-dotenv ==1.0.1
- python-json-logger ==2.0.7
- python-liquid ==1.12.1
- pytorch-lightning ==2.2.5
- pytz ==2024.1
- pyzmq ==26.0.3
- qtconsole ==5.5.2
- qtpy ==2.4.1
- rasterio ==1.3.10
- referencing ==0.35.1
- regex ==2024.5.15
- rfc3339-validator ==0.1.4
- rfc3986-validator ==0.1.1
- rpds-py ==0.18.1
- rtree ==1.2.0
- safetensors ==0.4.3
- scikit-image ==0.23.2
- scikit-learn ==1.5.0
- scipy ==1.13.1
- seaborn ==0.13.2
- segmentation-models-pytorch ==0.3.3
- send2trash ==1.8.3
- sentry-sdk ==2.3.1
- setproctitle ==1.3.3
- shapely ==2.0.4
- six ==1.16.0
- smmap ==5.0.1
- sniffio ==1.3.1
- snuggs ==1.4.7
- soupsieve ==2.5
- stack-data ==0.6.3
- tabulate ==0.9.0
- tensorboard ==2.16.2
- tensorboard-data-server ==0.7.2
- termcolor ==2.4.0
- terminado ==0.18.1
- threadpoolctl ==3.5.0
- tifffile ==2024.5.22
- timm ==0.9.2
- tinycss2 ==1.3.0
- tokenizers ==0.19.1
- torchmetrics ==1.4.0.post0
- tornado ==6.4
- tqdm ==4.66.4
- traitlets ==5.14.3
- transformers ==4.41.1
- ttach ==0.0.3
- types-python-dateutil ==2.9.0.20240316
- tzdata ==2024.1
- uri-template ==1.3.0
- virtualenv ==20.26.2
- wandb ==0.17.0
- wcwidth ==0.2.13
- webcolors ==1.13
- webencodings ==0.5.1
- websocket-client ==1.8.0
- werkzeug ==3.0.3
- widgetsnbextension ==4.0.10
- xxhash ==3.4.1
- yacs ==0.1.8
- yarl ==1.9.4
Score: 5.337538079701318