From 7cd1c72976e1b5ba5e18d8e91d970c6e115d1bec Mon Sep 17 00:00:00 2001 From: Joey Zhao Date: Wed, 14 Jun 2023 18:37:31 +0800 Subject: [PATCH] update ignore file and README --- .gitignore | 1 + README.md | 85 +++- assets/OsGeo4WShell.png | Bin 0 -> 7810 bytes ...img_201211_utm_new_export_pyramid_clip.csv | 31 -- ui/Selector_old.ui | 445 ------------------ 5 files changed, 85 insertions(+), 477 deletions(-) create mode 100644 assets/OsGeo4WShell.png delete mode 100644 features/beiluhe_google_img_201211_utm_new_export_pyramid_clip/beiluhe_google_img_201211_utm_new_export_pyramid_clip.csv delete mode 100644 ui/Selector_old.ui diff --git a/.gitignore b/.gitignore index 19907a7..2baed86 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ __pycache__/geo_sam_tool.cpython-39.pyc __pycache__/sam_ext.cpython-39.pyc __pycache__/__init__.cpython-39.pyc __pycache__/torchgeo_sam.cpython-39.pyc +features/**/*.csv .DS_Store diff --git a/README.md b/README.md index 60597b4..7be07f9 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,85 @@ # Geo-SAM -Using Segment Anything Model (SAM) to accelerate segmenting or delineating landforms in geospatial raster images. + +By Joey and Fancy from CryoLab, ESSC, CUHK. + +## Introduction + +Geo SAM is a tool aims to help people segment, delineate or label landforms with large-size geo-spatial raster images. +Segment Anything Model (SAM) is foundation AI vision model with super power, but the model size is large and using it to process images can take a long time, and a modern GPU is usually needed. +With the pre-generated image features using Vision Transformer image encoder, the interactive segmentation process can be run in real-time on a laptop without dedicated GPU. + +## Installation + +### Install QGIS + +You are recommended to install the latest version of QGIS, since the plugin has only been tested on the versions later than QGIS 3.30, at least ver. 2.28 is recommended. + +## Install Library Dependencies + +### For Windows Users + +![OsGeo4WShell](./assets/OsGeo4WShell.png) + + + + + +Open the `OSGeo4W Shell` application, which is dedicated shell for the QGIS. Then run the following command to install the libraries. + +```bash +pip3 install torch==1.13.1 torchvision==0.14.1 +pip3 install torchgeo +pip3 install segment-anything +pip3 install rasterio==1.3.7 +``` + +### For Mac or Linux Users + +Open your own terminal application, and change the directory to the QGIS Python environment. + +```bash +# Mac +cd //Contents/Resources/python +# Linux +cd //share/qgis/python +``` + +Then install the libraries. + +```bash +./pip3 install torch==1.13.1 torchvision==0.14.1 +./pip3 install torchgeo +./pip3 install segment-anything +./pip3 install rasterio==1.3.7 +``` + +## Install the GeoSAM Plugin + +Download the plugin zip file, unzip and put the contents in the plugin folder, then restart QGIS. + +### How to Find the QGIS Plugin folder + +From the `Settings` Menu, `User Profiles`, select `Open active profile folder.` You'll be taken straight to the profile directory in Explorer or Finder. Under the profile folder you may find a `python` folder, the plugins folder should be right inside the python folder. Open the `plugins` folder, then put the entire `Geo-SAM` folder in it (avoid nested folder after unzipping), then restart QGIS. + +Below are some general paths of different systems for your reference. + +```bash +# Windows +%APPDATA%\QGIS\QGIS3\profiles\default\python\plugins +# Mac +~/Library/Application\ Support/QGIS/QGIS3/profiles/default/python/plugins +# Linux +~/.local/share/QGIS/QGIS3/profiles/default/python/plugins +``` + +### Activate Geo SAM Plugin + +After restarting QGIS, you may go to the `Plugins` menu, select `Manage and Install Plugins`, under `Installed`, you may find the `Geo SAM` plugin, check it to activate the plugin. + +## Tips for Using GeoSAM Tool + +- Deal with only **One Subject** each time +- Use **Background Points** to exclude unwanted parts +- Use **Bounding Box (BBox)** to limit the segment polygon boundary +- The **BBox** should cover the entire subject diff --git a/assets/OsGeo4WShell.png b/assets/OsGeo4WShell.png new file mode 100644 index 0000000000000000000000000000000000000000..d88c7e651ee222352c51dcf6aeb8fe609bbf1cab GIT binary patch literal 7810 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 - - DockWidget - - - - 0 - 0 - 615 - 200 - - - - - 615 - 200 - - - - - 524287 - 524287 - - - - GeoSAM Tool - - - - - - 6 - 0 - 120 - 90 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 17 - 7 - 90 - 16 - - - - Add Points - - - Qt::AlignCenter - - - - - - 10 - 27 - 100 - 25 - - - - - 120 - 16777215 - - - - Foreground - - - - - - 10 - 60 - 100 - 25 - - - - - 16777215 - 16777215 - - - - Background - - - - - - - 125 - 0 - 121 - 90 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 10 - 40 - 100 - 25 - - - - - 120 - 16777215 - - - - Rectangle - - - - - - 20 - 20 - 78 - 16 - - - - Add BBox - - - Qt::AlignCenter - - - - - - - 365 - 0 - 120 - 90 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 10 - 40 - 100 - 25 - - - - Save - - - - - - 10 - 20 - 101 - 16 - - - - Save Polygon - - - Qt::AlignCenter - - - - - - - 245 - 0 - 121 - 90 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 10 - 20 - 101 - 16 - - - - Clear Prompts - - - Qt::AlignCenter - - - - - - 10 - 40 - 100 - 25 - - - - Clear - - - - - - - 6 - 89 - 240 - 80 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 15 - 10 - 181 - 20 - - - - Output shapefile.(Append) - - - - - - 6 - 37 - 131 - 23 - - - - - - - - - - 140 - 37 - 37 - 25 - - - - ... - - - - - - 180 - 37 - 55 - 25 - - - - Load - - - - - - - 245 - 89 - 240 - 80 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 20 - 10 - 111 - 16 - - - - Feature Folder - - - - - - 5 - 37 - 131 - 23 - - - - - - - - - - 141 - 37 - 37 - 25 - - - - ... - - - - - - 181 - 37 - 55 - 25 - - - - Load - - - - - - - 484 - 0 - 111 - 90 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - 20 - 30 - 81 - 31 - - - - Enable - - - false - - - - - - - 0 - 0 - 2 - 2 - - - - - - - - 0 - 0 - 2 - 2 - - - - - - - - 0 - 0 - 2 - 2 - - - - - - - - -