{"id":20409,"name":"Glacier Mapping From Satellite Imagery","description":"Use computer vision to automatically segment debris and ice glaciers from satellite images.","url":"https://github.com/krisrs1128/glacier_mapping","last_synced_at":"2026-04-07T23:30:27.330Z","repository":{"id":38416868,"uuid":"214004797","full_name":"krisrs1128/glacier_mapping","owner":"krisrs1128","description":"Mapping glaciers in the Hindu Kush Himalaya, in partnership with ICIMOD.","archived":false,"fork":false,"pushed_at":"2023-08-14T23:35:09.000Z","size":3968,"stargazers_count":44,"open_issues_count":6,"forks_count":20,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-03-30T20:02:53.379Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krisrs1128.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-10-09T19:22:19.000Z","updated_at":"2026-03-28T07:33:46.000Z","dependencies_parsed_at":"2023-09-21T19:26:18.553Z","dependency_job_id":null,"html_url":"https://github.com/krisrs1128/glacier_mapping","commit_stats":{"total_commits":947,"total_committers":17,"mean_commits":"55.705882352941174","dds":"0.42661034846884904","last_synced_commit":"e6864c4a33a934bcef61308d0c47e4c76d98c7ca"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/krisrs1128/glacier_mapping","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisrs1128%2Fglacier_mapping","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisrs1128%2Fglacier_mapping/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisrs1128%2Fglacier_mapping/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisrs1128%2Fglacier_mapping/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krisrs1128","download_url":"https://codeload.github.com/krisrs1128/glacier_mapping/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisrs1128%2Fglacier_mapping/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291941,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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"}},"owner":{"login":"krisrs1128","name":"Kris Sankaran","uuid":"2264333","kind":"user","description":"","email":"","website":"https://krisrs1128.github.io/LSLab/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/2264333?u=f35d3f1b492e5c29185f47102772090f4d5b4aa7\u0026v=4","repositories_count":145,"last_synced_at":"2024-06-11T15:57:03.253Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/krisrs1128","funding_links":[],"total_stars":177,"followers":223,"following":57,"created_at":"2022-11-04T12:26:56.734Z","updated_at":"2024-06-11T15:57:14.348Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krisrs1128","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krisrs1128/repositories"},"packages":[],"commits":{"id":1254338,"full_name":"krisrs1128/glacier_mapping","default_branch":"master","total_commits":947,"total_committers":17,"total_bot_commits":3,"total_bot_committers":1,"mean_commits":55.705882352941174,"dds":0.42661034846884904,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-04-01T21:01:48.437Z","last_synced_commit":"e6864c4a33a934bcef61308d0c47e4c76d98c7ca","created_at":"2023-03-27T11:32:28.067Z","updated_at":"2026-04-01T21:00:33.583Z","committers":[{"name":"Kris Sankaran","email":"sankaran.kris@gmail.com","login":"krisrs1128","count":543},{"name":"Shimaa","email":"shimaa.baraka@gmail.com","login":"Sh-imaa","count":242},{"name":"ak3ra","email":"akeraben@gmail.com","login":"ak3ra","count":54},{"name":"Anthony Ortiz","email":"anthonymlortiz@gmail.com","login":"anthonymlortiz","count":21},{"name":"Aryal Bibek","email":"bibekaryal7@gmail.com","login":"Aryal007","count":19},{"name":"Ubuntu","email":"baryal@bibek-icimod.ga3o0jzfn4keroxrasgvtnu2qg.bx.internal.cloudapp.net","login":null,"count":16},{"name":"Ubuntu","email":"kris@kris-nc6.04sy1p0aemkejihup3owefltof.xx.internal.cloudapp.net","login":null,"count":13},{"name":"AryalBibek","email":"baryal@miners.utep.edu","login":null,"count":7},{"name":"Kris Sankaran","email":"kris@Kriss-MacBook-Pro.local","login":null,"count":7},{"name":"Kris Sankaran","email":"kris@icimod-glaciers.rbbzkd3wokluvivlwjrjvc42kf.xx.internal.cloudapp.net","login":null,"count":6},{"name":"Kris Sankaran","email":"sankarak@blg9310.int.ets1.calculquebec.ca","login":null,"count":4},{"name":"Kris Sankaran","email":"sankarak@blg4103.int.ets1.calculquebec.ca","login":null,"count":4},{"name":"Aryal Bibek","email":"aryal@icimod-glaciers.rbbzkd3wokluvivlwjrjvc42kf.xx.internal.cloudapp.net","login":null,"count":4},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":3},{"name":"Shimaa Baraka","email":"shimaa@beluga4.int.ets1.calculquebec.ca","login":null,"count":2},{"name":"Kris Sankaran","email":"sankarak@beluga3.int.ets1.calculquebec.ca","login":null,"count":1},{"name":"Yassine Hammoud","email":"81481764+yassinehammoud","login":"yassinehammoud","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisrs1128%2Fglacier_mapping/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-03T00:00:08.542Z","repositories_count":6211307,"commits_count":927244946,"contributors_count":35800522,"owners_count":1145313,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"krisrs1128/glacier_mapping","html_url":"https://github.com/krisrs1128/glacier_mapping","last_synced_at":"2026-03-13T12:00:22.230Z","status":"error","issues_count":9,"pull_requests_count":87,"avg_time_to_close_issue":1414023.8333333333,"avg_time_to_close_pull_request":669818.9880952381,"issues_closed_count":6,"pull_requests_closed_count":84,"pull_request_authors_count":6,"issue_authors_count":3,"avg_comments_per_issue":1.222222222222222,"avg_comments_per_pull_request":0.12643678160919541,"merged_pull_requests_count":81,"bot_issues_count":0,"bot_pull_requests_count":7,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-09T10:38:36.716Z","updated_at":"2026-03-13T12:00:22.231Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisrs1128%2Fglacier_mapping","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/krisrs1128%2Fglacier_mapping/issues","issue_labels_count":{},"pull_request_labels_count":{"dependencies":7},"issue_author_associations_count":{"NONE":5,"OWNER":2,"COLLABORATOR":1},"pull_request_author_associations_count":{"OWNER":58,"COLLABORATOR":21,"CONTRIBUTOR":8},"issue_authors":{"cvhabitat":5,"krisrs1128":2,"Aryal007":1},"pull_request_authors":{"krisrs1128":58,"Aryal007":10,"Sh-imaa":8,"dependabot[bot]":7,"ak3ra":3,"yassinehammoud":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-22T00:00:10.760Z","repositories_count":13868683,"issues_count":34694159,"pull_requests_count":113298721,"authors_count":11208305,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"krisrs1128","count":60,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/krisrs1128"},{"login":"Aryal007","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Aryal007"},{"login":"Sh-imaa","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Sh-imaa"},{"login":"ak3ra","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ak3ra"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":9,"IssueCommentEvent":1,"ForkEvent":3},"last_year":{"WatchEvent":6,"ForkEvent":2}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2022-09-01T06:30:43.951Z","updated_at":"2022-09-01T06:30:43.951Z","repository_link":"https://github.com/krisrs1128/glacier_mapping/blob/master/requirements.txt","dependencies":[{"id":3471297863,"package_name":"addict","ecosystem":"pypi","requirements":"==2.2.1","direct":true,"kind":"runtime","optional":false},{"id":3471297864,"package_name":"Beaker","ecosystem":"pypi","requirements":"==1.11.0","direct":true,"kind":"runtime","optional":false},{"id":3471297865,"package_name":"bottle","ecosystem":"pypi","requirements":"==0.12.20","direct":true,"kind":"runtime","optional":false},{"id":3471297866,"package_name":"cheroot","ecosystem":"pypi","requirements":"==8.4.2","direct":true,"kind":"runtime","optional":false},{"id":3471297867,"package_name":"fiona","ecosystem":"pypi","requirements":"==1.8.13","direct":true,"kind":"runtime","optional":false},{"id":3471297868,"package_name":"gdal2tiles","ecosystem":"pypi","requirements":"==0.1.7","direct":true,"kind":"runtime","optional":false},{"id":3471297869,"package_name":"geopandas","ecosystem":"pypi","requirements":"==0.8.1","direct":true,"kind":"runtime","optional":false},{"id":3471297870,"package_name":"joblib","ecosystem":"pypi","requirements":"==0.16.0","direct":true,"kind":"runtime","optional":false},{"id":3471297871,"package_name":"pandas","ecosystem":"pypi","requirements":"==1.0.5","direct":true,"kind":"runtime","optional":false},{"id":3471297872,"package_name":"pyyaml","ecosystem":"pypi","requirements":"\u003e4.2b1","direct":true,"kind":"runtime","optional":false},{"id":3471297873,"package_name":"rasterio","ecosystem":"pypi","requirements":"==1.1.5","direct":true,"kind":"runtime","optional":false},{"id":3471297874,"package_name":"rpyc","ecosystem":"pypi","requirements":"==4.1.5","direct":true,"kind":"runtime","optional":false},{"id":3471297875,"package_name":"Shapely","ecosystem":"pypi","requirements":"==1.7.0","direct":true,"kind":"runtime","optional":false},{"id":3471297876,"package_name":"scikit-image","ecosystem":"pypi","requirements":"==0.16.2","direct":true,"kind":"runtime","optional":false},{"id":3471297877,"package_name":"torch","ecosystem":"pypi","requirements":"==1.6.0","direct":true,"kind":"runtime","optional":false},{"id":3471297878,"package_name":"torchvision","ecosystem":"pypi","requirements":"==0.7.0","direct":true,"kind":"runtime","optional":false},{"id":3471297879,"package_name":"utm","ecosystem":"pypi","requirements":"==0.5.0","direct":true,"kind":"runtime","optional":false},{"id":3471297880,"package_name":"tornado","ecosystem":"pypi","requirements":"==5.1.0","direct":true,"kind":"runtime","optional":false},{"id":3471297881,"package_name":"pybind11","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":3471297882,"package_name":"scikit-build","ecosystem":"pypi","requirements":"\u003e=0.11.1","direct":true,"kind":"runtime","optional":false},{"id":3471297883,"package_name":"cmake","ecosystem":"pypi","requirements":"\u003e=3.14.2","direct":true,"kind":"runtime","optional":false},{"id":3471297884,"package_name":"opencv-python","ecosystem":"pypi","requirements":"\u003e=4.4","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"docker","filepath":"scripts/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-01-24T17:30:14.257Z","updated_at":"2023-01-24T17:30:14.257Z","repository_link":"https://github.com/krisrs1128/glacier_mapping/blob/master/scripts/Dockerfile","dependencies":[{"id":7141342646,"package_name":"ubuntu","ecosystem":"docker","requirements":"18.04","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-09-21T19:26:18.173Z","updated_at":"2023-09-21T19:26:18.173Z","repository_link":"https://github.com/krisrs1128/glacier_mapping/blob/master/setup.py","dependencies":[]}],"score":6.745236349484362,"created_at":"2023-09-11T14:52:12.505Z","updated_at":"2026-04-07T23:30:27.341Z","avatar_url":"https://github.com/krisrs1128.png","language":"Python","category":"Cryosphere","sub_category":"Glacier and Ice Sheets","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Glacier Mapping From Satellite Imagery\n\n## Overview\nThe goal of this project is to use computer vision to automatically segment\ndebris and ice glaciers from satellite images\n\nRequirements are specified in `requirements.txt`. The full package sources is\navailable in the `glacier_mapping` directory. Raw training data are Landsat 7\ntiff images from the Hindu-Kush-Himalayan region. We consider the region of\nBhutan and Nepal. Shapefile labels of the glaciers are provided by\n[ICIMOD](www.icimod.org)\n\n## Pipeline\n\n### Overview\n\nThe full preprocessing and training can be viewed at\n[https://colab.research.google.com/drive/1ZkDtLB_2oQpSFDejKZ4YQ5MXW4c531R6?usp=sharing](https://colab.research.google.com/drive/1ZkDtLB_2oQpSFDejKZ4YQ5MXW4c531R6?usp=sharing)\nBesides the raw tiffs and shapefiles, the required inputs are,\n\n* `conf/masking_paths.yaml`: Says how to burn shapefiles into image masks.\n* `conf/postprocess.yaml`: Says how to filter and transform sliced images.\n* `conf/train.yaml`: Specifies training options.\n\nAt each step, the following intermediate files are created,\n* `generate_masks()` --\u003e writes mask_{id}.npy's and mask_metadata.csv\n* `write_pair_slices()` --\u003e writes slice_{tiff_id}_img_{slice_id}, slice_{tiff_id}_label_{slice_id}, and slice_0-100.geojson (depending on which lines from mask_metadata are sliced)\n* `postproces()` --\u003e copies slices*npy from previous step into train/, dev/, test/ folders, and writes mean and standard deviations to path specified in postprocess.yaml\n* `glacier_mapping.train.*` --\u003e creates data/runs/run_name folder, containing logs/ with tensorboard logs and models/ with all checkpoints\n\n![pipeline](imgs/pipeline.jpeg)\n### Data Preprocessing:\n\n1. **Slicing**: We slice the input tiffs into 512x512 tiles. The resulting tiles\n    along with corresponding shapefile labels are stored. Metadata of the slices\n    are stored in a geojson file\" ```slicemetadata.geojson``` To slice, ```run:\n    python3 src/slice.py```\n2. **Transformation**: For easy processing, we convert the input image and\n   labels into multi-dimensional numpy ``.npy`` files.\n3. **Masking**: The input shapefiles are transformed into masks. The masks are\n    needed for use as labels. This involves transforming the label as\n    multi-channel images with each channel representing a label class ie. 0 -\n    Glacier, 1 debris etc To run transformation and masking: ```python3\n    src/mask.py```\n\n### Data PostProcessing\n1. **Filtering**: Returns the paths for pairs passing the filter criteria for a\n   specific channel. Here we filter by the percentage of 1's in the filter\n   channel.\n2. **Random Split**: The final dataset is saved in three folders: ``train/ test/\n   dev/``\n3. **Reshuffle**: Shuffle the images and masks in the output directory\n4. **Imputation**: Given and input, we check for missing values (NaNs) and\n   replace with 0\n5. **Generate stats**: Generate statistics of the input image channels: returns\n   a dictionary with keys for means and standard deviations accross the channels\n   in input images.\n6. **Normalization**: We normalize the final dataset based on the means and\n   standard deviations calclualted.\n\n![Image-Mask Pair](imgs/image_mask.png)\n\n### Model Training\nModel: Unet with dropout (default dropout rate is 0.2).\n\n## vector data sources\nLabels : [ICIMOD](http://www.icimod.org/)\n\n* [(2000, Nepal)](http://rds.icimod.org/Home/DataDetail?metadataId=9351\u0026searchlist=True): Polygons older/newer than 2 years from 2000 are filtered out. Original collection contains few polygons from 1990s\n* [(2000, Bhutan)](http://rds.icimod.org/Home/DataDetail?metadataId=9357\u0026searchlist=True): Used as it's\n* [(2010, Nepal)](http://rds.icimod.org/Home/DataDetail?metadataId=9348\u0026searchlist=True): Polygons older/newer than 2 years from 2010 are filtered out. Original collection is for 1980-2010\n* [(2010, Bhutan)](http://rds.icimod.org/Home/DataDetail?metadataId=9358\u0026searchlist=True): Used as it's\n\n## License\n\nCode open source for anyone to use as it's under [MIT License](https://opensource.org/licenses/MIT)\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["optimize","archiving","measur","transforms","observation","generic","compose","conversion","animals","projection"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/20409","html_url":"https://ost.ecosyste.ms/projects/20409"}