Training models for building segmentation¶
The GeoAI library is a powerful Python package that integrates Artificial Intelligence with geospatial data analysis and visualization. Designed to facilitate the processing, analysis, and visualization of data such as satellite imagery, LiDAR point clouds, and vector data, GeoAI offers intuitive interfaces for applying advanced machine learning models. Its key features include interactive geospatial data visualization, data preparation and processing tools, image segmentation with integration with Meta's Segment Anything Model (SAM), image classification with pre-trained models, and additional capabilities such as terrain analysis and object detection in aerial and satellite imagery.
Let's install the necessary libraries and then import them.
!pip install geoai-py
Collecting geoai-py
Downloading geoai_py-0.5.5-py2.py3-none-any.whl.metadata (6.6 kB)
Requirement already satisfied: albumentations in /usr/local/lib/python3.11/dist-packages (from geoai-py) (2.0.5)
Collecting buildingregulariser (from geoai-py)
Downloading buildingregulariser-0.1.12-py3-none-any.whl.metadata (5.9 kB)
Collecting contextily (from geoai-py)
Downloading contextily-1.6.2-py3-none-any.whl.metadata (2.9 kB)
Requirement already satisfied: geopandas in /usr/local/lib/python3.11/dist-packages (from geoai-py) (1.0.1)
Requirement already satisfied: huggingface_hub in /usr/local/lib/python3.11/dist-packages (from geoai-py) (0.30.2)
Collecting jupyter-server-proxy (from geoai-py)
Downloading jupyter_server_proxy-4.4.0-py3-none-any.whl.metadata (8.7 kB)
Collecting leafmap (from geoai-py)
Downloading leafmap-0.43.6-py2.py3-none-any.whl.metadata (16 kB)
Collecting localtileserver (from geoai-py)
Downloading localtileserver-0.10.6-py3-none-any.whl.metadata (5.2 kB)
Collecting mapclassify (from geoai-py)
Downloading mapclassify-2.8.1-py3-none-any.whl.metadata (2.8 kB)
Collecting maplibre (from geoai-py)
Downloading maplibre-0.3.3-py3-none-any.whl.metadata (3.9 kB)
Collecting overturemaps (from geoai-py)
Downloading overturemaps-0.14.0-py3-none-any.whl.metadata (4.0 kB)
Collecting planetary-computer (from geoai-py)
Downloading planetary_computer-1.0.0-py3-none-any.whl.metadata (7.4 kB)
Collecting pystac-client (from geoai-py)
Downloading pystac_client-0.8.6-py3-none-any.whl.metadata (3.0 kB)
Collecting rasterio (from geoai-py)
Downloading rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (9.1 kB)
Collecting rioxarray (from geoai-py)
Downloading rioxarray-0.18.2-py3-none-any.whl.metadata (5.4 kB)
Requirement already satisfied: scikit-image in /usr/local/lib/python3.11/dist-packages (from geoai-py) (0.25.2)
Requirement already satisfied: scikit-learn in /usr/local/lib/python3.11/dist-packages (from geoai-py) (1.6.1)
Requirement already satisfied: torch in /usr/local/lib/python3.11/dist-packages (from geoai-py) (2.6.0+cu124)
Collecting torchgeo (from geoai-py)
Downloading torchgeo-0.7.0-py3-none-any.whl.metadata (19 kB)
Collecting torchinfo (from geoai-py)
Downloading torchinfo-1.8.0-py3-none-any.whl.metadata (21 kB)
Requirement already satisfied: tqdm in /usr/local/lib/python3.11/dist-packages (from geoai-py) (4.67.1)
Requirement already satisfied: transformers in /usr/local/lib/python3.11/dist-packages (from geoai-py) (4.51.3)
Requirement already satisfied: numpy>=1.24.4 in /usr/local/lib/python3.11/dist-packages (from albumentations->geoai-py) (2.0.2)
Requirement already satisfied: scipy>=1.10.0 in /usr/local/lib/python3.11/dist-packages (from albumentations->geoai-py) (1.14.1)
Requirement already satisfied: PyYAML in /usr/local/lib/python3.11/dist-packages (from albumentations->geoai-py) (6.0.2)
Requirement already satisfied: pydantic>=2.9.2 in /usr/local/lib/python3.11/dist-packages (from albumentations->geoai-py) (2.11.3)
Requirement already satisfied: albucore==0.0.23 in /usr/local/lib/python3.11/dist-packages (from albumentations->geoai-py) (0.0.23)
Requirement already satisfied: opencv-python-headless>=4.9.0.80 in /usr/local/lib/python3.11/dist-packages (from albumentations->geoai-py) (4.11.0.86)
Requirement already satisfied: stringzilla>=3.10.4 in /usr/local/lib/python3.11/dist-packages (from albucore==0.0.23->albumentations->geoai-py) (3.12.4)
Requirement already satisfied: simsimd>=5.9.2 in /usr/local/lib/python3.11/dist-packages (from albucore==0.0.23->albumentations->geoai-py) (6.2.1)
Requirement already satisfied: pyogrio>=0.7.2 in /usr/local/lib/python3.11/dist-packages (from geopandas->geoai-py) (0.10.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from geopandas->geoai-py) (24.2)
Requirement already satisfied: pandas>=1.4.0 in /usr/local/lib/python3.11/dist-packages (from geopandas->geoai-py) (2.2.2)
Requirement already satisfied: pyproj>=3.3.0 in /usr/local/lib/python3.11/dist-packages (from geopandas->geoai-py) (3.7.1)
Requirement already satisfied: shapely>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from geopandas->geoai-py) (2.1.0)
Requirement already satisfied: geopy in /usr/local/lib/python3.11/dist-packages (from contextily->geoai-py) (2.4.1)
Requirement already satisfied: matplotlib in /usr/local/lib/python3.11/dist-packages (from contextily->geoai-py) (3.10.0)
Collecting mercantile (from contextily->geoai-py)
Downloading mercantile-1.2.1-py3-none-any.whl.metadata (4.8 kB)
Requirement already satisfied: pillow in /usr/local/lib/python3.11/dist-packages (from contextily->geoai-py) (11.1.0)
Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from contextily->geoai-py) (2.32.3)
Requirement already satisfied: joblib in /usr/local/lib/python3.11/dist-packages (from contextily->geoai-py) (1.4.2)
Requirement already satisfied: xyzservices in /usr/local/lib/python3.11/dist-packages (from contextily->geoai-py) (2025.1.0)
Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from huggingface_hub->geoai-py) (3.18.0)
Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.11/dist-packages (from huggingface_hub->geoai-py) (2025.3.2)
Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.11/dist-packages (from huggingface_hub->geoai-py) (4.13.2)
Requirement already satisfied: aiohttp in /usr/local/lib/python3.11/dist-packages (from jupyter-server-proxy->geoai-py) (3.11.15)
Collecting jupyter-server>=1.24.0 (from jupyter-server-proxy->geoai-py)
Downloading jupyter_server-2.15.0-py3-none-any.whl.metadata (8.4 kB)
Collecting simpervisor>=1.0.0 (from jupyter-server-proxy->geoai-py)
Downloading simpervisor-1.0.0-py3-none-any.whl.metadata (4.3 kB)
Requirement already satisfied: tornado>=6.1.0 in /usr/local/lib/python3.11/dist-packages (from jupyter-server-proxy->geoai-py) (6.4.2)
Requirement already satisfied: traitlets>=5.1.0 in /usr/local/lib/python3.11/dist-packages (from jupyter-server-proxy->geoai-py) (5.7.1)
Collecting anywidget (from leafmap->geoai-py)
Downloading anywidget-0.9.18-py3-none-any.whl.metadata (8.9 kB)
Requirement already satisfied: bqplot in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (0.12.44)
Requirement already satisfied: colour in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (0.1.5)
Requirement already satisfied: duckdb in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (1.2.2)
Requirement already satisfied: folium in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (0.19.5)
Requirement already satisfied: gdown in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (5.2.0)
Collecting geojson (from leafmap->geoai-py)
Downloading geojson-3.2.0-py3-none-any.whl.metadata (16 kB)
Requirement already satisfied: ipyevents in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (2.0.2)
Requirement already satisfied: ipyfilechooser in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (0.6.0)
Requirement already satisfied: ipyleaflet in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (0.19.2)
Collecting ipyvuetify (from leafmap->geoai-py)
Downloading ipyvuetify-1.11.1-py2.py3-none-any.whl.metadata (7.5 kB)
Requirement already satisfied: ipywidgets in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (7.7.1)
Requirement already satisfied: plotly in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (5.24.1)
Requirement already satisfied: psutil in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (5.9.5)
Requirement already satisfied: pyshp in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (2.3.1)
Requirement already satisfied: python-box in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (7.3.2)
Requirement already satisfied: scooby in /usr/local/lib/python3.11/dist-packages (from leafmap->geoai-py) (0.10.0)
Collecting whiteboxgui (from leafmap->geoai-py)
Downloading whiteboxgui-2.3.0-py2.py3-none-any.whl.metadata (5.7 kB)
Requirement already satisfied: click in /usr/local/lib/python3.11/dist-packages (from localtileserver->geoai-py) (8.1.8)
Requirement already satisfied: flask<4,>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from localtileserver->geoai-py) (3.1.0)
Collecting Flask-Caching (from localtileserver->geoai-py)
Downloading Flask_Caching-2.3.1-py3-none-any.whl.metadata (2.2 kB)
Collecting flask-cors (from localtileserver->geoai-py)
Downloading flask_cors-5.0.1-py3-none-any.whl.metadata (961 bytes)
Collecting flask-restx>=1.3.0 (from localtileserver->geoai-py)
Downloading flask_restx-1.3.0-py2.py3-none-any.whl.metadata (9.3 kB)
Collecting rio-tiler (from localtileserver->geoai-py)
Downloading rio_tiler-7.6.0-py3-none-any.whl.metadata (12 kB)
Collecting rio-cogeo (from localtileserver->geoai-py)
Downloading rio_cogeo-5.4.1-py3-none-any.whl.metadata (4.7 kB)
Collecting server-thread (from localtileserver->geoai-py)
Downloading server_thread-0.3.0-py3-none-any.whl.metadata (5.3 kB)
Requirement already satisfied: werkzeug in /usr/local/lib/python3.11/dist-packages (from localtileserver->geoai-py) (3.1.3)
Requirement already satisfied: networkx>=2.7 in /usr/local/lib/python3.11/dist-packages (from mapclassify->geoai-py) (3.4.2)
Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn->geoai-py) (3.6.0)
Requirement already satisfied: branca in /usr/local/lib/python3.11/dist-packages (from maplibre->geoai-py) (0.8.1)
Collecting eval-type-backport (from maplibre->geoai-py)
Downloading eval_type_backport-0.2.2-py3-none-any.whl.metadata (2.2 kB)
Requirement already satisfied: jinja2>=3.1.5 in /usr/local/lib/python3.11/dist-packages (from maplibre->geoai-py) (3.1.6)
Requirement already satisfied: pyarrow>=15.0.2 in /usr/local/lib/python3.11/dist-packages (from overturemaps->geoai-py) (18.1.0)
Collecting pystac>=1.0.0 (from planetary-computer->geoai-py)
Downloading pystac-1.13.0-py3-none-any.whl.metadata (4.7 kB)
Requirement already satisfied: pytz>=2020.5 in /usr/local/lib/python3.11/dist-packages (from planetary-computer->geoai-py) (2025.2)
Collecting python-dotenv (from planetary-computer->geoai-py)
Downloading python_dotenv-1.1.0-py3-none-any.whl.metadata (24 kB)
Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pystac-client->geoai-py) (2.8.2)
Collecting affine (from rasterio->geoai-py)
Downloading affine-2.4.0-py3-none-any.whl.metadata (4.0 kB)
Requirement already satisfied: attrs in /usr/local/lib/python3.11/dist-packages (from rasterio->geoai-py) (25.3.0)
Requirement already satisfied: certifi in /usr/local/lib/python3.11/dist-packages (from rasterio->geoai-py) (2025.1.31)
Collecting cligj>=0.5 (from rasterio->geoai-py)
Downloading cligj-0.7.2-py3-none-any.whl.metadata (5.0 kB)
Collecting click-plugins (from rasterio->geoai-py)
Downloading click_plugins-1.1.1-py2.py3-none-any.whl.metadata (6.4 kB)
Requirement already satisfied: pyparsing in /usr/local/lib/python3.11/dist-packages (from rasterio->geoai-py) (3.2.3)
Requirement already satisfied: xarray>=2024.7.0 in /usr/local/lib/python3.11/dist-packages (from rioxarray->geoai-py) (2025.1.2)
Requirement already satisfied: imageio!=2.35.0,>=2.33 in /usr/local/lib/python3.11/dist-packages (from scikit-image->geoai-py) (2.37.0)
Requirement already satisfied: tifffile>=2022.8.12 in /usr/local/lib/python3.11/dist-packages (from scikit-image->geoai-py) (2025.3.30)
Requirement already satisfied: lazy-loader>=0.4 in /usr/local/lib/python3.11/dist-packages (from scikit-image->geoai-py) (0.4)
Collecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch->geoai-py)
Downloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting nvidia-cuda-runtime-cu12==12.4.127 (from torch->geoai-py)
Downloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting nvidia-cuda-cupti-cu12==12.4.127 (from torch->geoai-py)
Downloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)
Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch->geoai-py)
Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)
Collecting nvidia-cublas-cu12==12.4.5.8 (from torch->geoai-py)
Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting nvidia-cufft-cu12==11.2.1.3 (from torch->geoai-py)
Downloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting nvidia-curand-cu12==10.3.5.147 (from torch->geoai-py)
Downloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting nvidia-cusolver-cu12==11.6.1.9 (from torch->geoai-py)
Downloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)
Collecting nvidia-cusparse-cu12==12.3.1.170 (from torch->geoai-py)
Downloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)
Requirement already satisfied: nvidia-cusparselt-cu12==0.6.2 in /usr/local/lib/python3.11/dist-packages (from torch->geoai-py) (0.6.2)
Requirement already satisfied: nvidia-nccl-cu12==2.21.5 in /usr/local/lib/python3.11/dist-packages (from torch->geoai-py) (2.21.5)
Requirement already satisfied: nvidia-nvtx-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch->geoai-py) (12.4.127)
Collecting nvidia-nvjitlink-cu12==12.4.127 (from torch->geoai-py)
Downloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Requirement already satisfied: triton==3.2.0 in /usr/local/lib/python3.11/dist-packages (from torch->geoai-py) (3.2.0)
Requirement already satisfied: sympy==1.13.1 in /usr/local/lib/python3.11/dist-packages (from torch->geoai-py) (1.13.1)
Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from sympy==1.13.1->torch->geoai-py) (1.3.0)
Requirement already satisfied: einops>=0.3 in /usr/local/lib/python3.11/dist-packages (from torchgeo->geoai-py) (0.8.1)
Collecting fiona>=1.8.22 (from torchgeo->geoai-py)
Downloading fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (56 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.6/56.6 kB 3.8 MB/s eta 0:00:00
Collecting kornia>=0.7.4 (from torchgeo->geoai-py)
Downloading kornia-0.8.0-py2.py3-none-any.whl.metadata (17 kB)
Collecting lightly!=1.4.26,>=1.4.5 (from torchgeo->geoai-py)
Downloading lightly-1.5.19-py3-none-any.whl.metadata (36 kB)
Collecting lightning!=2.3.*,!=2.5.0,>=2 (from lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py)
Downloading lightning-2.5.1-py3-none-any.whl.metadata (39 kB)
Collecting rtree>=1.0.1 (from torchgeo->geoai-py)
Downloading rtree-1.4.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.1 kB)
Collecting segmentation-models-pytorch>=0.3.3 (from torchgeo->geoai-py)
Downloading segmentation_models_pytorch-0.5.0-py3-none-any.whl.metadata (17 kB)
Requirement already satisfied: timm>=0.9.2 in /usr/local/lib/python3.11/dist-packages (from torchgeo->geoai-py) (1.0.15)
Collecting torchmetrics>=1.2 (from torchgeo->geoai-py)
Downloading torchmetrics-1.7.1-py3-none-any.whl.metadata (21 kB)
Requirement already satisfied: torchvision>=0.15.1 in /usr/local/lib/python3.11/dist-packages (from torchgeo->geoai-py) (0.21.0+cu124)
Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.11/dist-packages (from transformers->geoai-py) (2024.11.6)
Requirement already satisfied: tokenizers<0.22,>=0.21 in /usr/local/lib/python3.11/dist-packages (from transformers->geoai-py) (0.21.1)
Requirement already satisfied: safetensors>=0.4.3 in /usr/local/lib/python3.11/dist-packages (from transformers->geoai-py) (0.5.3)
Requirement already satisfied: itsdangerous>=2.2 in /usr/local/lib/python3.11/dist-packages (from flask<4,>=2.0.0->localtileserver->geoai-py) (2.2.0)
Requirement already satisfied: blinker>=1.9 in /usr/local/lib/python3.11/dist-packages (from flask<4,>=2.0.0->localtileserver->geoai-py) (1.9.0)
Collecting aniso8601>=0.82 (from flask-restx>=1.3.0->localtileserver->geoai-py)
Downloading aniso8601-10.0.1-py2.py3-none-any.whl.metadata (23 kB)
Requirement already satisfied: jsonschema in /usr/local/lib/python3.11/dist-packages (from flask-restx>=1.3.0->localtileserver->geoai-py) (4.23.0)
Requirement already satisfied: importlib-resources in /usr/local/lib/python3.11/dist-packages (from flask-restx>=1.3.0->localtileserver->geoai-py) (6.5.2)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/dist-packages (from jinja2>=3.1.5->maplibre->geoai-py) (3.0.2)
Requirement already satisfied: anyio>=3.1.0 in /usr/local/lib/python3.11/dist-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (4.9.0)
Requirement already satisfied: argon2-cffi>=21.1 in /usr/local/lib/python3.11/dist-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (23.1.0)
Collecting jupyter-client>=7.4.4 (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading jupyter_client-8.6.3-py3-none-any.whl.metadata (8.3 kB)
Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in /usr/local/lib/python3.11/dist-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (5.7.2)
Collecting jupyter-events>=0.11.0 (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading jupyter_events-0.12.0-py3-none-any.whl.metadata (5.8 kB)
Collecting jupyter-server-terminals>=0.4.4 (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading jupyter_server_terminals-0.5.3-py3-none-any.whl.metadata (5.6 kB)
Requirement already satisfied: nbconvert>=6.4.4 in /usr/local/lib/python3.11/dist-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (7.16.6)
Requirement already satisfied: nbformat>=5.3.0 in /usr/local/lib/python3.11/dist-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (5.10.4)
Collecting overrides>=5.0 (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading overrides-7.7.0-py3-none-any.whl.metadata (5.8 kB)
Requirement already satisfied: prometheus-client>=0.9 in /usr/local/lib/python3.11/dist-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (0.21.1)
Requirement already satisfied: pyzmq>=24 in /usr/local/lib/python3.11/dist-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (24.0.1)
Requirement already satisfied: send2trash>=1.8.2 in /usr/local/lib/python3.11/dist-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (1.8.3)
Requirement already satisfied: terminado>=0.8.3 in /usr/local/lib/python3.11/dist-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (0.18.1)
Requirement already satisfied: websocket-client>=1.7 in /usr/local/lib/python3.11/dist-packages (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (1.8.0)
Collecting kornia_rs>=0.1.0 (from kornia>=0.7.4->torchgeo->geoai-py)
Downloading kornia_rs-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (10 kB)
Collecting hydra-core>=1.0.0 (from lightly!=1.4.26,>=1.4.5->torchgeo->geoai-py)
Downloading hydra_core-1.3.2-py3-none-any.whl.metadata (5.5 kB)
Collecting lightly_utils~=0.0.0 (from lightly!=1.4.26,>=1.4.5->torchgeo->geoai-py)
Downloading lightly_utils-0.0.2-py3-none-any.whl.metadata (1.4 kB)
Requirement already satisfied: six>=1.10 in /usr/local/lib/python3.11/dist-packages (from lightly!=1.4.26,>=1.4.5->torchgeo->geoai-py) (1.17.0)
Collecting pytorch_lightning>=1.0.4 (from lightly!=1.4.26,>=1.4.5->torchgeo->geoai-py)
Downloading pytorch_lightning-2.5.1-py3-none-any.whl.metadata (20 kB)
Requirement already satisfied: urllib3>=1.25.3 in /usr/local/lib/python3.11/dist-packages (from lightly!=1.4.26,>=1.4.5->torchgeo->geoai-py) (2.3.0)
Collecting aenum>=3.1.11 (from lightly!=1.4.26,>=1.4.5->torchgeo->geoai-py)
Downloading aenum-3.1.15-py3-none-any.whl.metadata (3.7 kB)
Collecting lightning-utilities<2.0,>=0.10.0 (from lightning!=2.3.*,!=2.5.0,>=2->lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py)
Downloading lightning_utilities-0.14.3-py3-none-any.whl.metadata (5.6 kB)
Collecting jsonargparse<5.0,>=4.27.7 (from jsonargparse[signatures]<5.0,>=4.27.7; extra == "pytorch-extra"->lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py)
Downloading jsonargparse-4.38.0-py3-none-any.whl.metadata (12 kB)
Collecting omegaconf<3.0,>=2.2.3 (from lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py)
Downloading omegaconf-2.3.0-py3-none-any.whl.metadata (3.9 kB)
Requirement already satisfied: rich<14.0,>=12.3.0 in /usr/local/lib/python3.11/dist-packages (from lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py) (13.9.4)
Collecting tensorboardX<3.0,>=2.2 (from lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py)
Downloading tensorboardX-2.6.2.2-py2.py3-none-any.whl.metadata (5.8 kB)
Collecting bitsandbytes<1.0,>=0.45.2 (from lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py)
Downloading bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl.metadata (5.0 kB)
Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->contextily->geoai-py) (1.3.2)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib->contextily->geoai-py) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib->contextily->geoai-py) (4.57.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->contextily->geoai-py) (1.4.8)
Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas>=1.4.0->geopandas->geoai-py) (2025.2)
Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic>=2.9.2->albumentations->geoai-py) (0.7.0)
Requirement already satisfied: pydantic-core==2.33.1 in /usr/local/lib/python3.11/dist-packages (from pydantic>=2.9.2->albumentations->geoai-py) (2.33.1)
Requirement already satisfied: typing-inspection>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from pydantic>=2.9.2->albumentations->geoai-py) (0.4.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->contextily->geoai-py) (3.4.1)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests->contextily->geoai-py) (3.10)
Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->jupyter-server-proxy->geoai-py) (2.6.1)
Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.11/dist-packages (from aiohttp->jupyter-server-proxy->geoai-py) (1.3.2)
Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.11/dist-packages (from aiohttp->jupyter-server-proxy->geoai-py) (1.5.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.11/dist-packages (from aiohttp->jupyter-server-proxy->geoai-py) (6.4.3)
Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->jupyter-server-proxy->geoai-py) (0.3.1)
Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->jupyter-server-proxy->geoai-py) (1.19.0)
Collecting psygnal>=0.8.1 (from anywidget->leafmap->geoai-py)
Downloading psygnal-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.7 kB)
Requirement already satisfied: ipykernel>=4.5.1 in /usr/local/lib/python3.11/dist-packages (from ipywidgets->leafmap->geoai-py) (6.17.1)
Requirement already satisfied: ipython-genutils~=0.2.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets->leafmap->geoai-py) (0.2.0)
Requirement already satisfied: widgetsnbextension~=3.6.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets->leafmap->geoai-py) (3.6.10)
Requirement already satisfied: ipython>=4.0.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets->leafmap->geoai-py) (7.34.0)
Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets->leafmap->geoai-py) (3.0.14)
Requirement already satisfied: traittypes>=0.0.6 in /usr/local/lib/python3.11/dist-packages (from bqplot->leafmap->geoai-py) (0.2.1)
Collecting cachelib>=0.9.0 (from Flask-Caching->localtileserver->geoai-py)
Downloading cachelib-0.13.0-py3-none-any.whl.metadata (2.0 kB)
Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.11/dist-packages (from gdown->leafmap->geoai-py) (4.13.4)
Requirement already satisfied: geographiclib<3,>=1.52 in /usr/local/lib/python3.11/dist-packages (from geopy->contextily->geoai-py) (2.0)
Requirement already satisfied: jupyter-leaflet<0.20,>=0.19 in /usr/local/lib/python3.11/dist-packages (from ipyleaflet->leafmap->geoai-py) (0.19.2)
Collecting ipyvue<2,>=1.7 (from ipyvuetify->leafmap->geoai-py)
Downloading ipyvue-1.11.2-py2.py3-none-any.whl.metadata (1.1 kB)
Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.11/dist-packages (from plotly->leafmap->geoai-py) (9.1.2)
Collecting morecantile<7.0,>=5.0 (from rio-cogeo->localtileserver->geoai-py)
Downloading morecantile-6.2.0-py3-none-any.whl.metadata (7.3 kB)
Requirement already satisfied: cachetools in /usr/local/lib/python3.11/dist-packages (from rio-tiler->localtileserver->geoai-py) (5.5.2)
Collecting color-operations (from rio-tiler->localtileserver->geoai-py)
Downloading color_operations-0.2.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.3 kB)
Requirement already satisfied: httpx in /usr/local/lib/python3.11/dist-packages (from rio-tiler->localtileserver->geoai-py) (0.28.1)
Requirement already satisfied: numexpr in /usr/local/lib/python3.11/dist-packages (from rio-tiler->localtileserver->geoai-py) (2.10.2)
Collecting uvicorn (from server-thread->localtileserver->geoai-py)
Downloading uvicorn-0.34.2-py3-none-any.whl.metadata (6.5 kB)
Requirement already satisfied: ipytree in /usr/local/lib/python3.11/dist-packages (from whiteboxgui->leafmap->geoai-py) (0.2.2)
Collecting whitebox (from whiteboxgui->leafmap->geoai-py)
Downloading whitebox-2.3.6-py2.py3-none-any.whl.metadata (11 kB)
Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.11/dist-packages (from anyio>=3.1.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (1.3.1)
Requirement already satisfied: argon2-cffi-bindings in /usr/local/lib/python3.11/dist-packages (from argon2-cffi>=21.1->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (21.2.0)
Collecting antlr4-python3-runtime==4.9.* (from hydra-core>=1.0.0->lightly!=1.4.26,>=1.4.5->torchgeo->geoai-py)
Downloading antlr4-python3-runtime-4.9.3.tar.gz (117 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.0/117.0 kB 7.9 MB/s eta 0:00:00
Preparing metadata (setup.py) ... done
Requirement already satisfied: debugpy>=1.0 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets->leafmap->geoai-py) (1.8.0)
Requirement already satisfied: matplotlib-inline>=0.1 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets->leafmap->geoai-py) (0.1.7)
Requirement already satisfied: nest-asyncio in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets->leafmap->geoai-py) (1.6.0)
Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets->leafmap->geoai-py) (75.2.0)
Collecting jedi>=0.16 (from ipython>=4.0.0->ipywidgets->leafmap->geoai-py)
Downloading jedi-0.19.2-py2.py3-none-any.whl.metadata (22 kB)
Requirement already satisfied: decorator in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets->leafmap->geoai-py) (4.4.2)
Requirement already satisfied: pickleshare in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets->leafmap->geoai-py) (0.7.5)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets->leafmap->geoai-py) (3.0.51)
Requirement already satisfied: pygments in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets->leafmap->geoai-py) (2.18.0)
Requirement already satisfied: backcall in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets->leafmap->geoai-py) (0.2.0)
Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets->leafmap->geoai-py) (4.9.0)
Requirement already satisfied: docstring-parser>=0.15 in /usr/local/lib/python3.11/dist-packages (from jsonargparse[signatures]<5.0,>=4.27.7; extra == "pytorch-extra"->lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py) (0.16)
Collecting typeshed-client>=2.1.0 (from jsonargparse[signatures]<5.0,>=4.27.7; extra == "pytorch-extra"->lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py)
Downloading typeshed_client-2.7.0-py3-none-any.whl.metadata (7.9 kB)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.11/dist-packages (from jsonschema->flask-restx>=1.3.0->localtileserver->geoai-py) (2024.10.1)
Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.11/dist-packages (from jsonschema->flask-restx>=1.3.0->localtileserver->geoai-py) (0.36.2)
Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.11/dist-packages (from jsonschema->flask-restx>=1.3.0->localtileserver->geoai-py) (0.24.0)
Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.11/dist-packages (from jupyter-core!=5.0.*,>=4.12->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (4.3.7)
Collecting python-json-logger>=2.0.4 (from jupyter-events>=0.11.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading python_json_logger-3.3.0-py3-none-any.whl.metadata (4.0 kB)
Collecting rfc3339-validator (from jupyter-events>=0.11.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading rfc3339_validator-0.1.4-py2.py3-none-any.whl.metadata (1.5 kB)
Collecting rfc3986-validator>=0.1.1 (from jupyter-events>=0.11.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading rfc3986_validator-0.1.1-py2.py3-none-any.whl.metadata (1.7 kB)
Requirement already satisfied: bleach!=5.0.0 in /usr/local/lib/python3.11/dist-packages (from bleach[css]!=5.0.0->nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (6.2.0)
Requirement already satisfied: defusedxml in /usr/local/lib/python3.11/dist-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (0.7.1)
Requirement already satisfied: jupyterlab-pygments in /usr/local/lib/python3.11/dist-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (0.3.0)
Requirement already satisfied: mistune<4,>=2.0.3 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (3.1.3)
Requirement already satisfied: nbclient>=0.5.0 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (0.10.2)
Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (1.5.1)
Requirement already satisfied: fastjsonschema>=2.15 in /usr/local/lib/python3.11/dist-packages (from nbformat>=5.3.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (2.21.1)
Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.11/dist-packages (from rich<14.0,>=12.3.0->lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py) (3.0.0)
Requirement already satisfied: protobuf>=3.20 in /usr/local/lib/python3.11/dist-packages (from tensorboardX<3.0,>=2.2->lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py) (5.29.4)
Requirement already satisfied: ptyprocess in /usr/local/lib/python3.11/dist-packages (from terminado>=0.8.3->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (0.7.0)
Requirement already satisfied: notebook>=4.4.1 in /usr/local/lib/python3.11/dist-packages (from widgetsnbextension~=3.6.0->ipywidgets->leafmap->geoai-py) (6.5.7)
Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.11/dist-packages (from beautifulsoup4->gdown->leafmap->geoai-py) (2.6)
Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.11/dist-packages (from httpx->rio-tiler->localtileserver->geoai-py) (1.0.8)
Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.11/dist-packages (from httpcore==1.*->httpx->rio-tiler->localtileserver->geoai-py) (0.14.0)
Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in /usr/local/lib/python3.11/dist-packages (from requests[socks]->gdown->leafmap->geoai-py) (1.7.1)
Requirement already satisfied: webencodings in /usr/local/lib/python3.11/dist-packages (from bleach!=5.0.0->bleach[css]!=5.0.0->nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (0.5.1)
Requirement already satisfied: tinycss2<1.5,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from bleach[css]!=5.0.0->nbconvert>=6.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (1.4.0)
Requirement already satisfied: parso<0.9.0,>=0.8.4 in /usr/local/lib/python3.11/dist-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets->leafmap->geoai-py) (0.8.4)
Collecting fqdn (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading fqdn-1.5.1-py3-none-any.whl.metadata (1.4 kB)
Collecting isoduration (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading isoduration-20.11.0-py3-none-any.whl.metadata (5.7 kB)
Requirement already satisfied: jsonpointer>1.13 in /usr/local/lib/python3.11/dist-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (3.0.0)
Collecting uri-template (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading uri_template-1.3.0-py3-none-any.whl.metadata (8.8 kB)
Requirement already satisfied: webcolors>=24.6.0 in /usr/local/lib/python3.11/dist-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (24.11.1)
Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.11/dist-packages (from markdown-it-py>=2.2.0->rich<14.0,>=12.3.0->lightning[pytorch-extra]!=2.3.*,!=2.5.0,>=2->torchgeo->geoai-py) (0.1.2)
Collecting jupyter-client>=7.4.4 (from jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading jupyter_client-7.4.9-py3-none-any.whl.metadata (8.5 kB)
Requirement already satisfied: nbclassic>=0.4.7 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->leafmap->geoai-py) (1.2.0)
Requirement already satisfied: entrypoints in /usr/local/lib/python3.11/dist-packages (from jupyter-client>=7.4.4->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (0.4)
Requirement already satisfied: wcwidth in /usr/local/lib/python3.11/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0->ipywidgets->leafmap->geoai-py) (0.2.13)
Requirement already satisfied: cffi>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from argon2-cffi-bindings->argon2-cffi>=21.1->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (1.17.1)
Requirement already satisfied: pycparser in /usr/local/lib/python3.11/dist-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi>=21.1->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py) (2.22)
Requirement already satisfied: notebook-shim>=0.2.3 in /usr/local/lib/python3.11/dist-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->leafmap->geoai-py) (0.2.4)
Collecting arrow>=0.15.0 (from isoduration->jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading arrow-1.3.0-py3-none-any.whl.metadata (7.5 kB)
Collecting types-python-dateutil>=2.8.10 (from arrow>=0.15.0->isoduration->jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server>=1.24.0->jupyter-server-proxy->geoai-py)
Downloading types_python_dateutil-2.9.0.20241206-py3-none-any.whl.metadata (2.1 kB)
Downloading geoai_py-0.5.5-py2.py3-none-any.whl (130 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 130.2/130.2 kB 12.4 MB/s eta 0:00:00
Downloading buildingregulariser-0.1.12-py3-none-any.whl (19 kB)
Downloading contextily-1.6.2-py3-none-any.whl (17 kB)
Downloading jupyter_server_proxy-4.4.0-py3-none-any.whl (37 kB)
Downloading leafmap-0.43.6-py2.py3-none-any.whl (537 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 537.2/537.2 kB 33.5 MB/s eta 0:00:00
Downloading localtileserver-0.10.6-py3-none-any.whl (17.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17.1/17.1 MB 90.1 MB/s eta 0:00:00
Downloading mapclassify-2.8.1-py3-none-any.whl (59 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 59.1/59.1 kB 5.7 MB/s eta 0:00:00
Downloading maplibre-0.3.3-py3-none-any.whl (1.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 47.3 MB/s eta 0:00:00
Downloading overturemaps-0.14.0-py3-none-any.whl (9.9 kB)
Downloading planetary_computer-1.0.0-py3-none-any.whl (14 kB)
Downloading pystac_client-0.8.6-py3-none-any.whl (41 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.4/41.4 kB 3.5 MB/s eta 0:00:00
Downloading rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 22.2/22.2 MB 52.7 MB/s eta 0:00:00
Downloading rioxarray-0.18.2-py3-none-any.whl (61 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.9/61.9 kB 7.1 MB/s eta 0:00:00
Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 363.4/363.4 MB 3.7 MB/s eta 0:00:00
Downloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.8/13.8 MB 105.3 MB/s eta 0:00:00
Downloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.6/24.6 MB 97.0 MB/s eta 0:00:00
Downloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 883.7/883.7 kB 56.2 MB/s eta 0:00:00
Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 664.8/664.8 MB 2.1 MB/s eta 0:00:00
Downloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 211.5/211.5 MB 5.0 MB/s eta 0:00:00
Downloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.3/56.3 MB 43.8 MB/s eta 0:00:00
Downloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 127.9/127.9 MB 20.6 MB/s eta 0:00:00
Downloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 207.5/207.5 MB 5.1 MB/s eta 0:00:00
Downloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21.1/21.1 MB 104.6 MB/s eta 0:00:00
Downloading torchgeo-0.7.0-py3-none-any.whl (604 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 605.0/605.0 kB 43.8 MB/s eta 0:00:00
Downloading torchinfo-1.8.0-py3-none-any.whl (23 kB)
Downloading cligj-0.7.2-py3-none-any.whl (7.1 kB)
Downloading fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17.3/17.3 MB 113.0 MB/s eta 0:00:00
Downloading click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)
Downloading flask_restx-1.3.0-py2.py3-none-any.whl (2.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.8/2.8 MB 63.2 MB/s eta 0:00:00
Downloading jupyter_server-2.15.0-py3-none-any.whl (385 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 385.8/385.8 kB 33.7 MB/s eta 0:00:00
Downloading kornia-0.8.0-py2.py3-none-any.whl (1.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 65.6 MB/s eta 0:00:00
Downloading lightly-1.5.19-py3-none-any.whl (850 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 850.8/850.8 kB 57.9 MB/s eta 0:00:00
Downloading lightning-2.5.1-py3-none-any.whl (818 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 818.9/818.9 kB 55.3 MB/s eta 0:00:00
Downloading pystac-1.13.0-py3-none-any.whl (206 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 206.8/206.8 kB 17.2 MB/s eta 0:00:00
Downloading rtree-1.4.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (541 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 541.1/541.1 kB 40.6 MB/s eta 0:00:00
Downloading segmentation_models_pytorch-0.5.0-py3-none-any.whl (154 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 154.8/154.8 kB 14.5 MB/s eta 0:00:00
Downloading simpervisor-1.0.0-py3-none-any.whl (8.3 kB)
Downloading torchmetrics-1.7.1-py3-none-any.whl (961 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 961.5/961.5 kB 64.9 MB/s eta 0:00:00
Downloading affine-2.4.0-py3-none-any.whl (15 kB)
Downloading anywidget-0.9.18-py3-none-any.whl (220 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 220.7/220.7 kB 21.3 MB/s eta 0:00:00
Downloading eval_type_backport-0.2.2-py3-none-any.whl (5.8 kB)
Downloading Flask_Caching-2.3.1-py3-none-any.whl (28 kB)
Downloading flask_cors-5.0.1-py3-none-any.whl (11 kB)
Downloading geojson-3.2.0-py3-none-any.whl (15 kB)
Downloading ipyvuetify-1.11.1-py2.py3-none-any.whl (7.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.7/7.7 MB 124.8 MB/s eta 0:00:00
Downloading mercantile-1.2.1-py3-none-any.whl (14 kB)
Downloading python_dotenv-1.1.0-py3-none-any.whl (20 kB)
Downloading rio_cogeo-5.4.1-py3-none-any.whl (20 kB)
Downloading rio_tiler-7.6.0-py3-none-any.whl (268 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 268.2/268.2 kB 18.6 MB/s eta 0:00:00
Downloading server_thread-0.3.0-py3-none-any.whl (6.6 kB)
Downloading whiteboxgui-2.3.0-py2.py3-none-any.whl (108 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 108.6/108.6 kB 10.7 MB/s eta 0:00:00
Downloading aenum-3.1.15-py3-none-any.whl (137 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 137.6/137.6 kB 14.9 MB/s eta 0:00:00
Downloading aniso8601-10.0.1-py2.py3-none-any.whl (52 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 52.8/52.8 kB 4.9 MB/s eta 0:00:00
Downloading bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl (76.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 76.1/76.1 MB 32.2 MB/s eta 0:00:00
Downloading cachelib-0.13.0-py3-none-any.whl (20 kB)
Downloading hydra_core-1.3.2-py3-none-any.whl (154 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 154.5/154.5 kB 16.8 MB/s eta 0:00:00
Downloading ipyvue-1.11.2-py2.py3-none-any.whl (2.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.7/2.7 MB 94.0 MB/s eta 0:00:00
Downloading jsonargparse-4.38.0-py3-none-any.whl (219 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 219.4/219.4 kB 21.1 MB/s eta 0:00:00
Downloading jupyter_events-0.12.0-py3-none-any.whl (19 kB)
Downloading jupyter_server_terminals-0.5.3-py3-none-any.whl (13 kB)
Downloading kornia_rs-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 87.8 MB/s eta 0:00:00
Downloading lightly_utils-0.0.2-py3-none-any.whl (6.4 kB)
Downloading lightning_utilities-0.14.3-py3-none-any.whl (28 kB)
Downloading morecantile-6.2.0-py3-none-any.whl (49 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 49.5/49.5 kB 4.6 MB/s eta 0:00:00
Downloading omegaconf-2.3.0-py3-none-any.whl (79 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.5/79.5 kB 8.0 MB/s eta 0:00:00
Downloading overrides-7.7.0-py3-none-any.whl (17 kB)
Downloading psygnal-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 765.5/765.5 kB 48.6 MB/s eta 0:00:00
Downloading pytorch_lightning-2.5.1-py3-none-any.whl (822 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 823.0/823.0 kB 53.1 MB/s eta 0:00:00
Downloading tensorboardX-2.6.2.2-py2.py3-none-any.whl (101 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.7/101.7 kB 9.4 MB/s eta 0:00:00
Downloading color_operations-0.2.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (195 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 195.2/195.2 kB 17.6 MB/s eta 0:00:00
Downloading uvicorn-0.34.2-py3-none-any.whl (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.5/62.5 kB 5.6 MB/s eta 0:00:00
Downloading whitebox-2.3.6-py2.py3-none-any.whl (74 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 74.0/74.0 kB 6.4 MB/s eta 0:00:00
Downloading jedi-0.19.2-py2.py3-none-any.whl (1.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 63.0 MB/s eta 0:00:00
Downloading jupyter_client-7.4.9-py3-none-any.whl (133 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.5/133.5 kB 12.4 MB/s eta 0:00:00
Downloading python_json_logger-3.3.0-py3-none-any.whl (15 kB)
Downloading rfc3986_validator-0.1.1-py2.py3-none-any.whl (4.2 kB)
Downloading typeshed_client-2.7.0-py3-none-any.whl (624 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 624.4/624.4 kB 46.9 MB/s eta 0:00:00
Downloading rfc3339_validator-0.1.4-py2.py3-none-any.whl (3.5 kB)
Downloading fqdn-1.5.1-py3-none-any.whl (9.1 kB)
Downloading isoduration-20.11.0-py3-none-any.whl (11 kB)
Downloading uri_template-1.3.0-py3-none-any.whl (11 kB)
Downloading arrow-1.3.0-py3-none-any.whl (66 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.4/66.4 kB 6.2 MB/s eta 0:00:00
Downloading types_python_dateutil-2.9.0.20241206-py3-none-any.whl (14 kB)
Building wheels for collected packages: antlr4-python3-runtime
Building wheel for antlr4-python3-runtime (setup.py) ... done
Created wheel for antlr4-python3-runtime: filename=antlr4_python3_runtime-4.9.3-py3-none-any.whl size=144554 sha256=23197d7adc1ed1a4d71fc753d6edf6bae772e081e9bbc06b01ea81286350604a
Stored in directory: /root/.cache/pip/wheels/1a/97/32/461f837398029ad76911109f07047fde1d7b661a147c7c56d1
Successfully built antlr4-python3-runtime
Installing collected packages: antlr4-python3-runtime, aniso8601, aenum, whitebox, uvicorn, uri-template, typeshed-client, types-python-dateutil, torchinfo, tensorboardX, simpervisor, rtree, rfc3986-validator, rfc3339-validator, python-json-logger, python-dotenv, psygnal, overrides, omegaconf, nvidia-nvjitlink-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, mercantile, lightning-utilities, lightly_utils, kornia_rs, jsonargparse, jedi, geojson, fqdn, eval-type-backport, color-operations, cligj, click-plugins, cachelib, affine, server-thread, rasterio, pystac, overturemaps, nvidia-cusparse-cu12, nvidia-cudnn-cu12, jupyter-server-terminals, jupyter-client, hydra-core, fiona, arrow, nvidia-cusolver-cu12, morecantile, maplibre, mapclassify, isoduration, flask-cors, Flask-Caching, contextily, rioxarray, rio-tiler, rio-cogeo, flask-restx, buildingregulariser, torchmetrics, pystac-client, localtileserver, kornia, jupyter-events, bitsandbytes, pytorch_lightning, planetary-computer, segmentation-models-pytorch, lightning, lightly, jupyter-server, jupyter-server-proxy, torchgeo, ipyvue, anywidget, whiteboxgui, ipyvuetify, leafmap, geoai-py
Attempting uninstall: nvidia-nvjitlink-cu12
Found existing installation: nvidia-nvjitlink-cu12 12.5.82
Uninstalling nvidia-nvjitlink-cu12-12.5.82:
Successfully uninstalled nvidia-nvjitlink-cu12-12.5.82
Attempting uninstall: nvidia-curand-cu12
Found existing installation: nvidia-curand-cu12 10.3.6.82
Uninstalling nvidia-curand-cu12-10.3.6.82:
Successfully uninstalled nvidia-curand-cu12-10.3.6.82
Attempting uninstall: nvidia-cufft-cu12
Found existing installation: nvidia-cufft-cu12 11.2.3.61
Uninstalling nvidia-cufft-cu12-11.2.3.61:
Successfully uninstalled nvidia-cufft-cu12-11.2.3.61
Attempting uninstall: nvidia-cuda-runtime-cu12
Found existing installation: nvidia-cuda-runtime-cu12 12.5.82
Uninstalling nvidia-cuda-runtime-cu12-12.5.82:
Successfully uninstalled nvidia-cuda-runtime-cu12-12.5.82
Attempting uninstall: nvidia-cuda-nvrtc-cu12
Found existing installation: nvidia-cuda-nvrtc-cu12 12.5.82
Uninstalling nvidia-cuda-nvrtc-cu12-12.5.82:
Successfully uninstalled nvidia-cuda-nvrtc-cu12-12.5.82
Attempting uninstall: nvidia-cuda-cupti-cu12
Found existing installation: nvidia-cuda-cupti-cu12 12.5.82
Uninstalling nvidia-cuda-cupti-cu12-12.5.82:
Successfully uninstalled nvidia-cuda-cupti-cu12-12.5.82
Attempting uninstall: nvidia-cublas-cu12
Found existing installation: nvidia-cublas-cu12 12.5.3.2
Uninstalling nvidia-cublas-cu12-12.5.3.2:
Successfully uninstalled nvidia-cublas-cu12-12.5.3.2
Attempting uninstall: nvidia-cusparse-cu12
Found existing installation: nvidia-cusparse-cu12 12.5.1.3
Uninstalling nvidia-cusparse-cu12-12.5.1.3:
Successfully uninstalled nvidia-cusparse-cu12-12.5.1.3
Attempting uninstall: nvidia-cudnn-cu12
Found existing installation: nvidia-cudnn-cu12 9.3.0.75
Uninstalling nvidia-cudnn-cu12-9.3.0.75:
Successfully uninstalled nvidia-cudnn-cu12-9.3.0.75
Attempting uninstall: jupyter-client
Found existing installation: jupyter-client 6.1.12
Uninstalling jupyter-client-6.1.12:
Successfully uninstalled jupyter-client-6.1.12
Attempting uninstall: nvidia-cusolver-cu12
Found existing installation: nvidia-cusolver-cu12 11.6.3.83
Uninstalling nvidia-cusolver-cu12-11.6.3.83:
Successfully uninstalled nvidia-cusolver-cu12-11.6.3.83
Attempting uninstall: jupyter-server
Found existing installation: jupyter-server 1.16.0
Uninstalling jupyter-server-1.16.0:
Successfully uninstalled jupyter-server-1.16.0
Successfully installed Flask-Caching-2.3.1 aenum-3.1.15 affine-2.4.0 aniso8601-10.0.1 antlr4-python3-runtime-4.9.3 anywidget-0.9.18 arrow-1.3.0 bitsandbytes-0.45.5 buildingregulariser-0.1.12 cachelib-0.13.0 click-plugins-1.1.1 cligj-0.7.2 color-operations-0.2.0 contextily-1.6.2 eval-type-backport-0.2.2 fiona-1.10.1 flask-cors-5.0.1 flask-restx-1.3.0 fqdn-1.5.1 geoai-py-0.5.5 geojson-3.2.0 hydra-core-1.3.2 ipyvue-1.11.2 ipyvuetify-1.11.1 isoduration-20.11.0 jedi-0.19.2 jsonargparse-4.38.0 jupyter-client-7.4.9 jupyter-events-0.12.0 jupyter-server-2.15.0 jupyter-server-proxy-4.4.0 jupyter-server-terminals-0.5.3 kornia-0.8.0 kornia_rs-0.1.8 leafmap-0.43.6 lightly-1.5.19 lightly_utils-0.0.2 lightning-2.5.1 lightning-utilities-0.14.3 localtileserver-0.10.6 mapclassify-2.8.1 maplibre-0.3.3 mercantile-1.2.1 morecantile-6.2.0 nvidia-cublas-cu12-12.4.5.8 nvidia-cuda-cupti-cu12-12.4.127 nvidia-cuda-nvrtc-cu12-12.4.127 nvidia-cuda-runtime-cu12-12.4.127 nvidia-cudnn-cu12-9.1.0.70 nvidia-cufft-cu12-11.2.1.3 nvidia-curand-cu12-10.3.5.147 nvidia-cusolver-cu12-11.6.1.9 nvidia-cusparse-cu12-12.3.1.170 nvidia-nvjitlink-cu12-12.4.127 omegaconf-2.3.0 overrides-7.7.0 overturemaps-0.14.0 planetary-computer-1.0.0 psygnal-0.12.0 pystac-1.13.0 pystac-client-0.8.6 python-dotenv-1.1.0 python-json-logger-3.3.0 pytorch_lightning-2.5.1 rasterio-1.4.3 rfc3339-validator-0.1.4 rfc3986-validator-0.1.1 rio-cogeo-5.4.1 rio-tiler-7.6.0 rioxarray-0.18.2 rtree-1.4.0 segmentation-models-pytorch-0.5.0 server-thread-0.3.0 simpervisor-1.0.0 tensorboardX-2.6.2.2 torchgeo-0.7.0 torchinfo-1.8.0 torchmetrics-1.7.1 types-python-dateutil-2.9.0.20241206 typeshed-client-2.7.0 uri-template-1.3.0 uvicorn-0.34.2 whitebox-2.3.6 whiteboxgui-2.3.0
!pip install ipysheet
Collecting ipysheet Downloading ipysheet-0.7.0-py2.py3-none-any.whl.metadata (4.0 kB) Requirement already satisfied: ipywidgets<9.0,>=7.5.0 in /usr/local/lib/python3.11/dist-packages (from ipysheet) (7.7.1) Requirement already satisfied: ipykernel>=4.5.1 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9.0,>=7.5.0->ipysheet) (6.17.1) Requirement already satisfied: ipython-genutils~=0.2.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9.0,>=7.5.0->ipysheet) (0.2.0) Requirement already satisfied: traitlets>=4.3.1 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9.0,>=7.5.0->ipysheet) (5.7.1) Requirement already satisfied: widgetsnbextension~=3.6.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9.0,>=7.5.0->ipysheet) (3.6.10) Requirement already satisfied: ipython>=4.0.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9.0,>=7.5.0->ipysheet) (7.34.0) Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets<9.0,>=7.5.0->ipysheet) (3.0.14) Requirement already satisfied: debugpy>=1.0 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (1.8.0) Requirement already satisfied: jupyter-client>=6.1.12 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (7.4.9) Requirement already satisfied: matplotlib-inline>=0.1 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (0.1.7) Requirement already satisfied: nest-asyncio in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (1.6.0) Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (24.2) Requirement already satisfied: psutil in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (5.9.5) Requirement already satisfied: pyzmq>=17 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (24.0.1) Requirement already satisfied: tornado>=6.1 in /usr/local/lib/python3.11/dist-packages (from ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (6.4.2) Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (75.2.0) Requirement already satisfied: jedi>=0.16 in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.19.2) Requirement already satisfied: decorator in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (4.4.2) Requirement already satisfied: pickleshare in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.7.5) Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (3.0.51) Requirement already satisfied: pygments in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (2.18.0) Requirement already satisfied: backcall in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.2.0) Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.11/dist-packages (from ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (4.9.0) Requirement already satisfied: notebook>=4.4.1 in /usr/local/lib/python3.11/dist-packages (from widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (6.5.7) Requirement already satisfied: parso<0.9.0,>=0.8.4 in /usr/local/lib/python3.11/dist-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.8.4) Requirement already satisfied: entrypoints in /usr/local/lib/python3.11/dist-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (0.4) Requirement already satisfied: jupyter-core>=4.9.2 in /usr/local/lib/python3.11/dist-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (5.7.2) Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (2.8.2) Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (3.1.6) Requirement already satisfied: argon2-cffi in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (23.1.0) Requirement already satisfied: nbformat in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (5.10.4) Requirement already satisfied: nbconvert>=5 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (7.16.6) Requirement already satisfied: Send2Trash>=1.8.0 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (1.8.3) Requirement already satisfied: terminado>=0.8.3 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.18.1) Requirement already satisfied: prometheus-client in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.21.1) Requirement already satisfied: nbclassic>=0.4.7 in /usr/local/lib/python3.11/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (1.2.0) Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.11/dist-packages (from pexpect>4.3->ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.7.0) Requirement already satisfied: wcwidth in /usr/local/lib/python3.11/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.2.13) Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.11/dist-packages (from jupyter-core>=4.9.2->jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (4.3.7) Requirement already satisfied: notebook-shim>=0.2.3 in /usr/local/lib/python3.11/dist-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.2.4) Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (4.13.4) Requirement already satisfied: bleach!=5.0.0 in /usr/local/lib/python3.11/dist-packages (from bleach[css]!=5.0.0->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (6.2.0) Requirement already satisfied: defusedxml in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.7.1) Requirement already satisfied: jupyterlab-pygments in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.3.0) Requirement already satisfied: markupsafe>=2.0 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (3.0.2) Requirement already satisfied: mistune<4,>=2.0.3 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (3.1.3) Requirement already satisfied: nbclient>=0.5.0 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.10.2) Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.11/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (1.5.1) Requirement already satisfied: fastjsonschema>=2.15 in /usr/local/lib/python3.11/dist-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (2.21.1) Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python3.11/dist-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (4.23.0) Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<9.0,>=7.5.0->ipysheet) (1.17.0) Requirement already satisfied: argon2-cffi-bindings in /usr/local/lib/python3.11/dist-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (21.2.0) Requirement already satisfied: webencodings in /usr/local/lib/python3.11/dist-packages (from bleach!=5.0.0->bleach[css]!=5.0.0->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.5.1) Requirement already satisfied: tinycss2<1.5,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from bleach[css]!=5.0.0->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (1.4.0) Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (25.3.0) Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (2024.10.1) Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.36.2) Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.24.0) Requirement already satisfied: jupyter-server<3,>=1.8 in /usr/local/lib/python3.11/dist-packages (from notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (2.15.0) Requirement already satisfied: cffi>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (1.17.1) Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.11/dist-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (2.6) Requirement already satisfied: typing-extensions>=4.0.0 in /usr/local/lib/python3.11/dist-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (4.13.2) Requirement already satisfied: pycparser in /usr/local/lib/python3.11/dist-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (2.22) Requirement already satisfied: anyio>=3.1.0 in /usr/local/lib/python3.11/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (4.9.0) Requirement already satisfied: jupyter-events>=0.11.0 in /usr/local/lib/python3.11/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.12.0) Requirement already satisfied: jupyter-server-terminals>=0.4.4 in /usr/local/lib/python3.11/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.5.3) Requirement already satisfied: overrides>=5.0 in /usr/local/lib/python3.11/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (7.7.0) Requirement already satisfied: websocket-client>=1.7 in /usr/local/lib/python3.11/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (1.8.0) Requirement already satisfied: idna>=2.8 in /usr/local/lib/python3.11/dist-packages (from anyio>=3.1.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (3.10) Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.11/dist-packages (from anyio>=3.1.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (1.3.1) Requirement already satisfied: python-json-logger>=2.0.4 in /usr/local/lib/python3.11/dist-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (3.3.0) Requirement already satisfied: pyyaml>=5.3 in /usr/local/lib/python3.11/dist-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (6.0.2) Requirement already satisfied: rfc3339-validator in /usr/local/lib/python3.11/dist-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.1.4) Requirement already satisfied: rfc3986-validator>=0.1.1 in /usr/local/lib/python3.11/dist-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (0.1.1) Requirement already satisfied: fqdn in /usr/local/lib/python3.11/dist-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (1.5.1) Requirement already satisfied: isoduration in /usr/local/lib/python3.11/dist-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (20.11.0) Requirement already satisfied: jsonpointer>1.13 in /usr/local/lib/python3.11/dist-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (3.0.0) Requirement already satisfied: uri-template in /usr/local/lib/python3.11/dist-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (1.3.0) Requirement already satisfied: webcolors>=24.6.0 in /usr/local/lib/python3.11/dist-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (24.11.1) Requirement already satisfied: arrow>=0.15.0 in /usr/local/lib/python3.11/dist-packages (from isoduration->jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (1.3.0) Requirement already satisfied: types-python-dateutil>=2.8.10 in /usr/local/lib/python3.11/dist-packages (from arrow>=0.15.0->isoduration->jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<9.0,>=7.5.0->ipysheet) (2.9.0.20241206) Downloading ipysheet-0.7.0-py2.py3-none-any.whl (3.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.8/3.8 MB 57.7 MB/s eta 0:00:00 Installing collected packages: ipysheet Successfully installed ipysheet-0.7.0
import geoai
import leafmap
from geoai.download import (
download_naip,
download_overture_buildings,
extract_building_stats,
)
import geopandas as gpd
Let's create an interactive map for visualization:
m = leafmap.Map(center=[47.6526, -117.5923], zoom=16)
m.add_basemap("Google Satellite")
m
Map(center=[47.6526, -117.5923], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', '…
We will use the polygon of our Area of Interest to delimit the image that we will use in training the model:
aoi = gpd.read_file('/content/AOI.shp')
bbox = tuple(aoi.total_bounds)
bbox
(np.float64(-115.22489326840497), np.float64(36.275338703201044), np.float64(-115.17094561001741), np.float64(36.3280462156206))
downloaded_files = download_naip(
bbox=bbox,
output_dir="naip_data",
max_items=3,
# year=2020,
)
print(f"Downloaded {len(downloaded_files)} files.")
Found 3 NAIP items. Downloading item 1/3: m_3611547_nw_11_060_20220703.tif
m_3611547_nw_11_060_20220703.tif: 100%|██████████| 278M/278M [00:03<00:00, 87.0MiB/s]
Successfully saved to naip_data/m_3611547_nw_11_060_20220703.tif Downloading item 2/3: m_3611547_ne_11_060_20220703.tif
m_3611547_ne_11_060_20220703.tif: 100%|██████████| 275M/275M [00:03<00:00, 82.5MiB/s]
Successfully saved to naip_data/m_3611547_ne_11_060_20220703.tif Downloading item 3/3: m_3611547_sw_11_060_20220611.tif
m_3611547_sw_11_060_20220611.tif: 100%|██████████| 359M/359M [00:04<00:00, 82.3MiB/s]
Successfully saved to naip_data/m_3611547_sw_11_060_20220611.tif Downloaded 3 files.
After downloading the images, let's combine them into a single file:
import rasterio
from rasterio.merge import merge
from rasterio.plot import show
import numpy as np
import matplotlib.pyplot as plt
import os
mosaic_files = []
for file in downloaded_files:
mosaic_files.append(rasterio.open(file))
mosaic, out_trans = merge(mosaic_files)
out_meta = mosaic_files[0].meta.copy()
out_meta.update(
{"driver": "GTiff",
"height": mosaic.shape[1],
"width": mosaic.shape[2],
"transform": out_trans,
"crs": mosaic_files[0].crs}
)
output_mosaic_file = "naip_mosaic.tif"
with rasterio.open(output_mosaic_file, "w", **out_meta) as dest:
dest.write(mosaic)
with rasterio.open(output_mosaic_file) as src:
aoi = aoi.to_crs(src.crs)
out_image, out_transform = rasterio.mask.mask(src, aoi.geometry, crop=True)
out_image = out_image[0:3]
out_meta = src.meta
out_meta.update({"driver": "GTiff",
"height": out_image.shape[1],
"width": out_image.shape[2],
"count": out_image.shape[0],
"transform": out_transform})
with rasterio.open("clipped_naip_mosaic.tif", "w", **out_meta) as dest:
dest.write(out_image)
with rasterio.open("clipped_naip_mosaic.tif") as src:
show(src)
print("Mosaic created and clipped successfully.")
Mosaic created and clipped successfully.
Let's get the notes of the built-up areas with the following function:
data_file = download_overture_buildings(
bbox=bbox,
output="buildings.geojson",
)
We can visualize these polygons
stats = extract_building_stats(data_file)
print(stats)
{'total_buildings': 17067, 'has_height': 12380, 'has_name': 0, 'bbox': [-115.2252597, 36.2748447, -115.1707109, 36.3278606]}
m = leafmap.Map()
m.add_raster("/content/clipped_naip_mosaic.tif", layer_name="NAIP")
m.add_geojson("/content/buildings.geojson", layer_name="Buildings")
m
Map(center=[36.301361, -115.19817], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title'…
We will create a folder to receive the image patches and masks:
os.mkdir('output')
We will use our area of interest to select the polygons that intersect this area:
gdf = gpd.read_file('/content/buildings.geojson')
gdf.plot()
<Axes: >
aoi.plot()
<Axes: >
gdf = gdf.to_crs(aoi.crs)
gdf = gdf.clip(aoi)
gdf['class'] = 'building'
gdf.to_file('buildings.geojson', driver='GeoJSON')
We can now apply the division:
train_raster_path = 'clipped_naip_mosaic.tif'
train_vector_path = 'buildings.geojson'
out_folder = "output"
tiles = geoai.export_geotiff_tiles(
in_raster=train_raster_path,
out_folder=out_folder,
in_class_data=train_vector_path,
tile_size=512,
stride=256,
buffer_radius=0,
)
Raster info for clipped_naip_mosaic.tif: CRS: EPSG:26911 Dimensions: 8177 x 9730 Resolution: (0.6, 0.6) Bands: 3 Bounds: BoundingBox(left=659328.69126, bottom=4015962.3003700003, right=664234.89126, top=4021800.3003700003) Loaded 14843 features from buildings.geojson Vector CRS: EPSG:26911 Found 1 unique classes: ['building']
Generated: 1178, With features: 813: 100%|██████████| 1178/1178 [02:31<00:00, 7.77it/s]
------- Export Summary ------- Total tiles exported: 1178 Tiles with features: 813 (69.0%) Average feature pixels per tile: 56341.1 Output saved to: output ------- Georeference Verification -------
We can see an example:
geoai.view_image("output/images/tile_000000.tif")
geoai.view_image("output/labels/tile_000000.tif")
Now we will train MaskRCNN for instance segmentation:
geoai.train_MaskRCNN_model(
images_dir=f"{out_folder}/images",
labels_dir=f"{out_folder}/labels",
output_dir=f"{out_folder}/models",
num_channels=3,
pretrained=True,
batch_size=4,
num_epochs=20,
learning_rate=0.005,
val_split=0.2,
)
Using device: cuda Found 1178 image files and 1178 label files Training on 942 images, validating on 236 images
Downloading: "https://download.pytorch.org/models/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth" to /root/.cache/torch/hub/checkpoints/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth 100%|██████████| 170M/170M [00:00<00:00, 240MB/s]
Epoch: 0, Batch: 0/236, Loss: 5.5559, Time: 3.74s Epoch: 0, Batch: 10/236, Loss: 2.1915, Time: 9.40s Epoch: 0, Batch: 20/236, Loss: 1.8480, Time: 9.34s Epoch: 0, Batch: 30/236, Loss: 1.1009, Time: 9.34s Epoch: 0, Batch: 40/236, Loss: 1.0270, Time: 9.79s Epoch: 0, Batch: 50/236, Loss: 0.7898, Time: 9.64s Epoch: 0, Batch: 60/236, Loss: 0.9136, Time: 10.04s Epoch: 0, Batch: 70/236, Loss: 0.8309, Time: 10.02s Epoch: 0, Batch: 80/236, Loss: 0.9991, Time: 10.29s Epoch: 0, Batch: 90/236, Loss: 0.9434, Time: 10.31s Epoch: 0, Batch: 100/236, Loss: 1.3411, Time: 10.64s Epoch: 0, Batch: 110/236, Loss: 1.2331, Time: 10.64s Epoch: 0, Batch: 120/236, Loss: 0.9133, Time: 10.72s Epoch: 0, Batch: 130/236, Loss: 0.6541, Time: 10.66s Epoch: 0, Batch: 140/236, Loss: 0.7277, Time: 10.67s Epoch: 0, Batch: 150/236, Loss: 0.8144, Time: 10.35s Epoch: 0, Batch: 160/236, Loss: 0.5955, Time: 10.62s Epoch: 0, Batch: 170/236, Loss: 1.1481, Time: 10.41s Epoch: 0, Batch: 180/236, Loss: 0.6189, Time: 10.31s Epoch: 0, Batch: 190/236, Loss: 0.4008, Time: 9.98s Epoch: 0, Batch: 200/236, Loss: 1.3301, Time: 10.30s Epoch: 0, Batch: 210/236, Loss: 0.6784, Time: 10.53s Epoch: 0, Batch: 220/236, Loss: 1.1154, Time: 10.62s Epoch: 0, Batch: 230/236, Loss: 1.0428, Time: 11.31s Epoch 1/20: Train Loss: 1.0829, Val Loss: inf, Val IoU: 0.6685 Saving best model with IoU: 0.6685 Epoch: 1, Batch: 0/236, Loss: 0.8820, Time: 2.17s Epoch: 1, Batch: 10/236, Loss: 1.2335, Time: 10.02s Epoch: 1, Batch: 20/236, Loss: 0.9854, Time: 10.79s Epoch: 1, Batch: 30/236, Loss: 0.7845, Time: 9.85s Epoch: 1, Batch: 40/236, Loss: 1.5074, Time: 10.56s Epoch: 1, Batch: 50/236, Loss: 1.0078, Time: 10.53s Epoch: 1, Batch: 60/236, Loss: 0.5748, Time: 10.03s Epoch: 1, Batch: 70/236, Loss: 0.7351, Time: 10.73s Epoch: 1, Batch: 80/236, Loss: 0.7824, Time: 10.85s Epoch: 1, Batch: 90/236, Loss: 0.7014, Time: 11.14s Epoch: 1, Batch: 100/236, Loss: 0.6324, Time: 10.96s Epoch: 1, Batch: 110/236, Loss: 0.7778, Time: 10.84s Epoch: 1, Batch: 120/236, Loss: 0.6725, Time: 10.86s Epoch: 1, Batch: 130/236, Loss: 1.3702, Time: 10.20s Epoch: 1, Batch: 140/236, Loss: 0.4529, Time: 10.41s Epoch: 1, Batch: 150/236, Loss: 0.6050, Time: 10.79s Epoch: 1, Batch: 160/236, Loss: 0.7700, Time: 10.16s Epoch: 1, Batch: 170/236, Loss: 1.3203, Time: 10.58s Epoch: 1, Batch: 180/236, Loss: 0.8185, Time: 10.79s Epoch: 1, Batch: 190/236, Loss: 0.7637, Time: 10.74s Epoch: 1, Batch: 200/236, Loss: 1.0583, Time: 10.31s Epoch: 1, Batch: 210/236, Loss: 0.8801, Time: 10.51s Epoch: 1, Batch: 220/236, Loss: 1.4571, Time: 9.88s Epoch: 1, Batch: 230/236, Loss: 0.6597, Time: 11.03s Epoch 2/20: Train Loss: 0.8431, Val Loss: inf, Val IoU: 0.5583 Epoch: 2, Batch: 0/236, Loss: 1.1145, Time: 1.85s Epoch: 2, Batch: 10/236, Loss: 0.9658, Time: 10.74s Epoch: 2, Batch: 20/236, Loss: 0.6228, Time: 9.69s Epoch: 2, Batch: 30/236, Loss: 0.8706, Time: 10.84s Epoch: 2, Batch: 40/236, Loss: 0.6016, Time: 10.71s Epoch: 2, Batch: 50/236, Loss: 0.6764, Time: 10.39s Epoch: 2, Batch: 60/236, Loss: 0.7195, Time: 10.42s Epoch: 2, Batch: 70/236, Loss: 0.5501, Time: 10.57s Epoch: 2, Batch: 80/236, Loss: 0.4265, Time: 10.63s Epoch: 2, Batch: 90/236, Loss: 0.6418, Time: 10.31s Epoch: 2, Batch: 100/236, Loss: 1.2336, Time: 10.58s Epoch: 2, Batch: 110/236, Loss: 1.0040, Time: 10.14s Epoch: 2, Batch: 120/236, Loss: 0.8122, Time: 10.23s Epoch: 2, Batch: 130/236, Loss: 0.4689, Time: 10.60s Epoch: 2, Batch: 140/236, Loss: 1.0475, Time: 10.95s Epoch: 2, Batch: 150/236, Loss: 0.5584, Time: 10.76s Epoch: 2, Batch: 160/236, Loss: 1.3753, Time: 11.07s Epoch: 2, Batch: 170/236, Loss: 1.2953, Time: 10.82s Epoch: 2, Batch: 180/236, Loss: 1.2028, Time: 10.87s Epoch: 2, Batch: 190/236, Loss: 0.4467, Time: 10.11s Epoch: 2, Batch: 200/236, Loss: 0.4820, Time: 10.45s Epoch: 2, Batch: 210/236, Loss: 1.3132, Time: 10.42s Epoch: 2, Batch: 220/236, Loss: 1.2053, Time: 10.56s Epoch: 2, Batch: 230/236, Loss: 0.4483, Time: 10.82s Epoch 3/20: Train Loss: 0.7771, Val Loss: inf, Val IoU: 0.6593 Epoch: 3, Batch: 0/236, Loss: 0.5558, Time: 1.94s Epoch: 3, Batch: 10/236, Loss: 0.5943, Time: 10.52s Epoch: 3, Batch: 20/236, Loss: 0.6926, Time: 10.39s Epoch: 3, Batch: 30/236, Loss: 0.7696, Time: 10.02s Epoch: 3, Batch: 40/236, Loss: 0.7451, Time: 10.47s Epoch: 3, Batch: 50/236, Loss: 0.6526, Time: 10.33s Epoch: 3, Batch: 60/236, Loss: 0.7359, Time: 10.53s Epoch: 3, Batch: 70/236, Loss: 0.9376, Time: 10.02s Epoch: 3, Batch: 80/236, Loss: 1.1176, Time: 10.74s Epoch: 3, Batch: 90/236, Loss: 0.7003, Time: 10.59s Epoch: 3, Batch: 100/236, Loss: 0.5739, Time: 11.27s Epoch: 3, Batch: 110/236, Loss: 0.5737, Time: 11.03s Epoch: 3, Batch: 120/236, Loss: 0.3742, Time: 10.27s Epoch: 3, Batch: 130/236, Loss: 0.8012, Time: 10.56s Epoch: 3, Batch: 140/236, Loss: 0.5875, Time: 10.69s Epoch: 3, Batch: 150/236, Loss: 0.5588, Time: 10.68s Epoch: 3, Batch: 160/236, Loss: 0.9091, Time: 10.68s Epoch: 3, Batch: 170/236, Loss: 0.4674, Time: 11.14s Epoch: 3, Batch: 180/236, Loss: 0.5157, Time: 10.91s Epoch: 3, Batch: 190/236, Loss: 1.1939, Time: 10.26s Epoch: 3, Batch: 200/236, Loss: 0.6629, Time: 10.13s Epoch: 3, Batch: 210/236, Loss: 0.5216, Time: 10.66s Epoch: 3, Batch: 220/236, Loss: 0.5565, Time: 10.58s Epoch: 3, Batch: 230/236, Loss: 0.9348, Time: 10.20s Epoch 4/20: Train Loss: 0.7319, Val Loss: inf, Val IoU: 0.5591 Epoch: 4, Batch: 0/236, Loss: 0.5657, Time: 1.59s Epoch: 4, Batch: 10/236, Loss: 0.6745, Time: 10.94s Epoch: 4, Batch: 20/236, Loss: 1.0678, Time: 10.42s Epoch: 4, Batch: 30/236, Loss: 0.4970, Time: 10.66s Epoch: 4, Batch: 40/236, Loss: 0.6209, Time: 10.63s Epoch: 4, Batch: 50/236, Loss: 0.5200, Time: 10.46s Epoch: 4, Batch: 60/236, Loss: 0.5376, Time: 10.30s Epoch: 4, Batch: 70/236, Loss: 0.4322, Time: 10.46s Epoch: 4, Batch: 80/236, Loss: 0.6424, Time: 10.65s Epoch: 4, Batch: 90/236, Loss: 0.4077, Time: 10.98s Epoch: 4, Batch: 100/236, Loss: 0.5383, Time: 11.19s Epoch: 4, Batch: 110/236, Loss: 0.5961, Time: 10.48s Epoch: 4, Batch: 120/236, Loss: 0.8480, Time: 10.63s Epoch: 4, Batch: 130/236, Loss: 0.4752, Time: 10.51s Epoch: 4, Batch: 140/236, Loss: 0.3843, Time: 10.69s Epoch: 4, Batch: 150/236, Loss: 0.5251, Time: 10.38s Epoch: 4, Batch: 160/236, Loss: 0.6702, Time: 10.51s Epoch: 4, Batch: 170/236, Loss: 0.6933, Time: 10.55s Epoch: 4, Batch: 180/236, Loss: 1.2564, Time: 10.41s Epoch: 4, Batch: 190/236, Loss: 0.6577, Time: 9.86s Epoch: 4, Batch: 200/236, Loss: 1.0945, Time: 10.43s Epoch: 4, Batch: 210/236, Loss: 0.5101, Time: 10.02s Epoch: 4, Batch: 220/236, Loss: 0.5717, Time: 10.80s Epoch: 4, Batch: 230/236, Loss: 0.5143, Time: 11.09s Epoch 5/20: Train Loss: 0.6926, Val Loss: inf, Val IoU: 0.6062 Epoch: 5, Batch: 0/236, Loss: 0.3503, Time: 1.48s Epoch: 5, Batch: 10/236, Loss: 0.5703, Time: 11.46s Epoch: 5, Batch: 20/236, Loss: 0.5308, Time: 10.99s Epoch: 5, Batch: 30/236, Loss: 0.4568, Time: 10.40s Epoch: 5, Batch: 40/236, Loss: 0.5907, Time: 10.60s Epoch: 5, Batch: 50/236, Loss: 0.4544, Time: 11.16s Epoch: 5, Batch: 60/236, Loss: 1.0537, Time: 9.90s Epoch: 5, Batch: 70/236, Loss: 0.3204, Time: 10.23s Epoch: 5, Batch: 80/236, Loss: 0.6839, Time: 10.19s Epoch: 5, Batch: 90/236, Loss: 0.9096, Time: 10.02s Epoch: 5, Batch: 100/236, Loss: 0.5249, Time: 10.52s Epoch: 5, Batch: 110/236, Loss: 1.0743, Time: 10.50s Epoch: 5, Batch: 120/236, Loss: 0.5574, Time: 11.01s Epoch: 5, Batch: 130/236, Loss: 0.6142, Time: 10.89s Epoch: 5, Batch: 140/236, Loss: 0.5656, Time: 10.00s Epoch: 5, Batch: 150/236, Loss: 0.5365, Time: 10.60s Epoch: 5, Batch: 160/236, Loss: 0.6331, Time: 10.71s Epoch: 5, Batch: 170/236, Loss: 0.6182, Time: 10.02s Epoch: 5, Batch: 180/236, Loss: 1.1094, Time: 10.36s Epoch: 5, Batch: 190/236, Loss: 0.4927, Time: 10.79s Epoch: 5, Batch: 200/236, Loss: 0.5751, Time: 10.43s Epoch: 5, Batch: 210/236, Loss: 0.1053, Time: 10.60s Epoch: 5, Batch: 220/236, Loss: 0.4875, Time: 10.78s Epoch: 5, Batch: 230/236, Loss: 1.1234, Time: 10.75s Epoch 6/20: Train Loss: 0.6604, Val Loss: inf, Val IoU: 0.6101 Epoch: 6, Batch: 0/236, Loss: 0.3930, Time: 1.67s Epoch: 6, Batch: 10/236, Loss: 0.3760, Time: 10.93s Epoch: 6, Batch: 20/236, Loss: 0.5891, Time: 10.71s Epoch: 6, Batch: 30/236, Loss: 1.1469, Time: 10.18s Epoch: 6, Batch: 40/236, Loss: 0.5481, Time: 10.28s Epoch: 6, Batch: 50/236, Loss: 0.4526, Time: 10.96s Epoch: 6, Batch: 60/236, Loss: 1.1738, Time: 10.62s Epoch: 6, Batch: 70/236, Loss: 1.1363, Time: 10.33s Epoch: 6, Batch: 80/236, Loss: 0.4963, Time: 10.72s Epoch: 6, Batch: 90/236, Loss: 0.5031, Time: 10.83s Epoch: 6, Batch: 100/236, Loss: 1.1364, Time: 10.64s Epoch: 6, Batch: 110/236, Loss: 0.5564, Time: 10.67s Epoch: 6, Batch: 120/236, Loss: 0.3354, Time: 9.90s Epoch: 6, Batch: 130/236, Loss: 0.5245, Time: 10.76s Epoch: 6, Batch: 140/236, Loss: 0.4021, Time: 10.59s Epoch: 6, Batch: 150/236, Loss: 0.5653, Time: 10.62s Epoch: 6, Batch: 160/236, Loss: 0.5232, Time: 10.42s Epoch: 6, Batch: 170/236, Loss: 0.3037, Time: 9.47s Epoch: 6, Batch: 180/236, Loss: 1.1900, Time: 10.79s Epoch: 6, Batch: 190/236, Loss: 0.5431, Time: 10.44s Epoch: 6, Batch: 200/236, Loss: 0.4349, Time: 11.13s Epoch: 6, Batch: 210/236, Loss: 0.5221, Time: 10.88s Epoch: 6, Batch: 220/236, Loss: 0.7460, Time: 10.34s Epoch: 6, Batch: 230/236, Loss: 0.7072, Time: 10.84s Epoch 7/20: Train Loss: 0.6441, Val Loss: inf, Val IoU: 0.5308 Epoch: 7, Batch: 0/236, Loss: 1.5706, Time: 2.23s Epoch: 7, Batch: 10/236, Loss: 0.4766, Time: 10.31s Epoch: 7, Batch: 20/236, Loss: 1.2497, Time: 10.17s Epoch: 7, Batch: 30/236, Loss: 0.3287, Time: 10.38s Epoch: 7, Batch: 40/236, Loss: 0.6631, Time: 11.01s Epoch: 7, Batch: 50/236, Loss: 1.1152, Time: 10.79s Epoch: 7, Batch: 60/236, Loss: 1.0574, Time: 10.80s Epoch: 7, Batch: 70/236, Loss: 0.5288, Time: 10.42s Epoch: 7, Batch: 80/236, Loss: 0.3293, Time: 10.36s Epoch: 7, Batch: 90/236, Loss: 0.6684, Time: 10.26s Epoch: 7, Batch: 100/236, Loss: 0.3234, Time: 10.30s Epoch: 7, Batch: 110/236, Loss: 0.5982, Time: 10.08s Epoch: 7, Batch: 120/236, Loss: 0.4882, Time: 11.09s Epoch: 7, Batch: 130/236, Loss: 0.5529, Time: 10.60s Epoch: 7, Batch: 140/236, Loss: 1.1517, Time: 10.93s Epoch: 7, Batch: 150/236, Loss: 0.4831, Time: 10.67s Epoch: 7, Batch: 160/236, Loss: 0.4537, Time: 10.38s Epoch: 7, Batch: 170/236, Loss: 0.6730, Time: 10.51s Epoch: 7, Batch: 180/236, Loss: 0.3984, Time: 10.94s Epoch: 7, Batch: 190/236, Loss: 0.4601, Time: 9.56s Epoch: 7, Batch: 200/236, Loss: 0.3590, Time: 10.70s Epoch: 7, Batch: 210/236, Loss: 1.1629, Time: 10.94s Epoch: 7, Batch: 220/236, Loss: 0.6151, Time: 11.16s Epoch: 7, Batch: 230/236, Loss: 0.8257, Time: 10.86s Epoch 8/20: Train Loss: 0.6275, Val Loss: inf, Val IoU: 0.5933 Epoch: 8, Batch: 0/236, Loss: 0.5173, Time: 2.48s Epoch: 8, Batch: 10/236, Loss: 1.1479, Time: 10.39s Epoch: 8, Batch: 20/236, Loss: 1.1418, Time: 10.12s Epoch: 8, Batch: 30/236, Loss: 0.3287, Time: 10.54s Epoch: 8, Batch: 40/236, Loss: 0.4794, Time: 11.03s Epoch: 8, Batch: 50/236, Loss: 1.1745, Time: 11.12s Epoch: 8, Batch: 60/236, Loss: 0.3445, Time: 10.77s Epoch: 8, Batch: 70/236, Loss: 0.4627, Time: 10.38s Epoch: 8, Batch: 80/236, Loss: 0.5220, Time: 10.14s Epoch: 8, Batch: 90/236, Loss: 1.1861, Time: 10.40s Epoch: 8, Batch: 100/236, Loss: 1.2058, Time: 10.63s Epoch: 8, Batch: 110/236, Loss: 0.7491, Time: 10.84s Epoch: 8, Batch: 120/236, Loss: 0.3916, Time: 10.75s Epoch: 8, Batch: 130/236, Loss: 1.0070, Time: 10.19s Epoch: 8, Batch: 140/236, Loss: 1.0412, Time: 10.29s Epoch: 8, Batch: 150/236, Loss: 1.2033, Time: 10.17s Epoch: 8, Batch: 160/236, Loss: 0.4520, Time: 10.51s Epoch: 8, Batch: 170/236, Loss: 0.6623, Time: 10.55s Epoch: 8, Batch: 180/236, Loss: 0.0785, Time: 10.69s Epoch: 8, Batch: 190/236, Loss: 0.9575, Time: 10.21s Epoch: 8, Batch: 200/236, Loss: 0.3966, Time: 11.35s Epoch: 8, Batch: 210/236, Loss: 0.4981, Time: 10.71s Epoch: 8, Batch: 220/236, Loss: 0.4717, Time: 11.04s Epoch: 8, Batch: 230/236, Loss: 0.5383, Time: 10.25s Epoch 9/20: Train Loss: 0.6144, Val Loss: inf, Val IoU: 0.6470 Epoch: 9, Batch: 0/236, Loss: 0.6309, Time: 1.63s Epoch: 9, Batch: 10/236, Loss: 1.1430, Time: 10.60s Epoch: 9, Batch: 20/236, Loss: 0.4240, Time: 10.53s Epoch: 9, Batch: 30/236, Loss: 1.1388, Time: 10.67s Epoch: 9, Batch: 40/236, Loss: 0.5950, Time: 11.01s Epoch: 9, Batch: 50/236, Loss: 0.4151, Time: 10.34s Epoch: 9, Batch: 60/236, Loss: 0.4955, Time: 10.76s Epoch: 9, Batch: 70/236, Loss: 1.0954, Time: 9.79s Epoch: 9, Batch: 80/236, Loss: 0.4135, Time: 10.14s Epoch: 9, Batch: 90/236, Loss: 0.6539, Time: 11.22s Epoch: 9, Batch: 100/236, Loss: 0.8473, Time: 10.39s Epoch: 9, Batch: 110/236, Loss: 0.5639, Time: 10.36s Epoch: 9, Batch: 120/236, Loss: 0.4678, Time: 10.20s Epoch: 9, Batch: 130/236, Loss: 0.4282, Time: 10.63s Epoch: 9, Batch: 140/236, Loss: 0.9844, Time: 9.99s Epoch: 9, Batch: 150/236, Loss: 0.4524, Time: 10.41s Epoch: 9, Batch: 160/236, Loss: 1.5467, Time: 11.19s Epoch: 9, Batch: 170/236, Loss: 0.3548, Time: 10.71s Epoch: 9, Batch: 180/236, Loss: 0.3891, Time: 10.60s Epoch: 9, Batch: 190/236, Loss: 0.5548, Time: 10.36s Epoch: 9, Batch: 200/236, Loss: 1.1270, Time: 11.74s Epoch: 9, Batch: 210/236, Loss: 0.4419, Time: 10.93s Epoch: 9, Batch: 220/236, Loss: 0.3772, Time: 10.42s Epoch: 9, Batch: 230/236, Loss: 0.4029, Time: 10.41s Epoch 10/20: Train Loss: 0.6018, Val Loss: inf, Val IoU: 0.7569 Saving best model with IoU: 0.7569 Epoch: 10, Batch: 0/236, Loss: 1.7654, Time: 2.32s Epoch: 10, Batch: 10/236, Loss: 1.0104, Time: 11.24s Epoch: 10, Batch: 20/236, Loss: 0.3541, Time: 10.24s Epoch: 10, Batch: 30/236, Loss: 0.4848, Time: 10.45s Epoch: 10, Batch: 40/236, Loss: 0.3844, Time: 10.71s Epoch: 10, Batch: 50/236, Loss: 0.5120, Time: 10.07s Epoch: 10, Batch: 60/236, Loss: 0.3712, Time: 10.54s Epoch: 10, Batch: 70/236, Loss: 0.7958, Time: 10.92s Epoch: 10, Batch: 80/236, Loss: 0.5236, Time: 10.60s Epoch: 10, Batch: 90/236, Loss: 0.5557, Time: 10.57s Epoch: 10, Batch: 100/236, Loss: 0.4672, Time: 10.64s Epoch: 10, Batch: 110/236, Loss: 0.4789, Time: 10.47s Epoch: 10, Batch: 120/236, Loss: 0.5861, Time: 11.01s Epoch: 10, Batch: 130/236, Loss: 0.3171, Time: 9.82s Epoch: 10, Batch: 140/236, Loss: 0.6453, Time: 10.94s Epoch: 10, Batch: 150/236, Loss: 0.5008, Time: 10.36s Epoch: 10, Batch: 160/236, Loss: 0.4007, Time: 10.21s Epoch: 10, Batch: 170/236, Loss: 0.4337, Time: 10.75s Epoch: 10, Batch: 180/236, Loss: 0.4710, Time: 10.61s Epoch: 10, Batch: 190/236, Loss: 0.3862, Time: 10.46s Epoch: 10, Batch: 200/236, Loss: 0.5924, Time: 10.69s Epoch: 10, Batch: 210/236, Loss: 0.5602, Time: 10.36s Epoch: 10, Batch: 220/236, Loss: 0.4561, Time: 10.63s Epoch: 10, Batch: 230/236, Loss: 0.4007, Time: 10.67s Epoch 11/20: Train Loss: 0.5741, Val Loss: inf, Val IoU: 0.6504 Epoch: 11, Batch: 0/236, Loss: 0.5153, Time: 2.26s Epoch: 11, Batch: 10/236, Loss: 0.4012, Time: 11.16s Epoch: 11, Batch: 20/236, Loss: 0.5988, Time: 10.72s Epoch: 11, Batch: 30/236, Loss: 0.4848, Time: 11.00s Epoch: 11, Batch: 40/236, Loss: 0.5871, Time: 10.64s Epoch: 11, Batch: 50/236, Loss: 0.7922, Time: 10.45s Epoch: 11, Batch: 60/236, Loss: 0.3174, Time: 10.20s Epoch: 11, Batch: 70/236, Loss: 0.4040, Time: 10.61s Epoch: 11, Batch: 80/236, Loss: 0.5542, Time: 10.27s Epoch: 11, Batch: 90/236, Loss: 0.5355, Time: 10.99s Epoch: 11, Batch: 100/236, Loss: 0.5268, Time: 10.90s Epoch: 11, Batch: 110/236, Loss: 0.5468, Time: 10.58s Epoch: 11, Batch: 120/236, Loss: 0.5011, Time: 10.87s Epoch: 11, Batch: 130/236, Loss: 0.8516, Time: 10.16s Epoch: 11, Batch: 140/236, Loss: 0.4150, Time: 9.96s Epoch: 11, Batch: 150/236, Loss: 0.4459, Time: 10.95s Epoch: 11, Batch: 160/236, Loss: 0.3221, Time: 10.71s Epoch: 11, Batch: 170/236, Loss: 0.2752, Time: 11.04s Epoch: 11, Batch: 180/236, Loss: 0.4192, Time: 10.65s Epoch: 11, Batch: 190/236, Loss: 1.1452, Time: 10.55s Epoch: 11, Batch: 200/236, Loss: 1.0898, Time: 10.28s Epoch: 11, Batch: 210/236, Loss: 0.7490, Time: 10.50s Epoch: 11, Batch: 220/236, Loss: 0.0999, Time: 10.41s Epoch: 11, Batch: 230/236, Loss: 1.1329, Time: 9.96s Epoch 12/20: Train Loss: 0.5620, Val Loss: inf, Val IoU: 0.6602 Epoch: 12, Batch: 0/236, Loss: 0.9227, Time: 2.24s Epoch: 12, Batch: 10/236, Loss: 0.4057, Time: 9.93s Epoch: 12, Batch: 20/236, Loss: 0.3501, Time: 10.36s Epoch: 12, Batch: 30/236, Loss: 0.3268, Time: 10.84s Epoch: 12, Batch: 40/236, Loss: 0.6968, Time: 10.90s Epoch: 12, Batch: 50/236, Loss: 1.0596, Time: 10.51s Epoch: 12, Batch: 60/236, Loss: 0.4204, Time: 10.60s Epoch: 12, Batch: 70/236, Loss: 0.4332, Time: 10.37s Epoch: 12, Batch: 80/236, Loss: 0.9449, Time: 10.76s Epoch: 12, Batch: 90/236, Loss: 0.4640, Time: 10.81s Epoch: 12, Batch: 100/236, Loss: 1.0364, Time: 10.73s Epoch: 12, Batch: 110/236, Loss: 0.3633, Time: 10.49s Epoch: 12, Batch: 120/236, Loss: 0.4676, Time: 9.83s Epoch: 12, Batch: 130/236, Loss: 0.9715, Time: 10.86s Epoch: 12, Batch: 140/236, Loss: 0.4310, Time: 10.59s Epoch: 12, Batch: 150/236, Loss: 0.9305, Time: 10.76s Epoch: 12, Batch: 160/236, Loss: 0.3033, Time: 9.88s Epoch: 12, Batch: 170/236, Loss: 1.0773, Time: 10.79s Epoch: 12, Batch: 180/236, Loss: 0.4184, Time: 10.71s Epoch: 12, Batch: 190/236, Loss: 1.6101, Time: 10.92s Epoch: 12, Batch: 200/236, Loss: 0.4688, Time: 11.21s Epoch: 12, Batch: 210/236, Loss: 1.1261, Time: 10.56s Epoch: 12, Batch: 220/236, Loss: 0.4390, Time: 10.55s Epoch: 12, Batch: 230/236, Loss: 0.4886, Time: 10.71s Epoch 13/20: Train Loss: 0.5534, Val Loss: inf, Val IoU: 0.6394 Epoch: 13, Batch: 0/236, Loss: 0.5556, Time: 2.13s Epoch: 13, Batch: 10/236, Loss: 0.6406, Time: 10.30s Epoch: 13, Batch: 20/236, Loss: 1.0380, Time: 11.25s Epoch: 13, Batch: 30/236, Loss: 1.0590, Time: 9.90s Epoch: 13, Batch: 40/236, Loss: 0.3950, Time: 11.32s Epoch: 13, Batch: 50/236, Loss: 0.2940, Time: 10.25s Epoch: 13, Batch: 60/236, Loss: 0.6640, Time: 10.53s Epoch: 13, Batch: 70/236, Loss: 1.0167, Time: 10.91s Epoch: 13, Batch: 80/236, Loss: 0.5425, Time: 10.23s Epoch: 13, Batch: 90/236, Loss: 0.9787, Time: 10.53s Epoch: 13, Batch: 100/236, Loss: 0.3700, Time: 10.57s Epoch: 13, Batch: 110/236, Loss: 0.5488, Time: 10.79s Epoch: 13, Batch: 120/236, Loss: 0.4945, Time: 10.08s Epoch: 13, Batch: 130/236, Loss: 0.2483, Time: 10.38s Epoch: 13, Batch: 140/236, Loss: 1.0498, Time: 10.58s Epoch: 13, Batch: 150/236, Loss: 0.2646, Time: 10.34s Epoch: 13, Batch: 160/236, Loss: 0.3405, Time: 10.93s Epoch: 13, Batch: 170/236, Loss: 0.5354, Time: 10.25s Epoch: 13, Batch: 180/236, Loss: 0.5009, Time: 11.23s Epoch: 13, Batch: 190/236, Loss: 0.4045, Time: 10.55s Epoch: 13, Batch: 200/236, Loss: 0.3811, Time: 10.90s Epoch: 13, Batch: 210/236, Loss: 0.4540, Time: 10.55s Epoch: 13, Batch: 220/236, Loss: 0.4387, Time: 10.78s Epoch: 13, Batch: 230/236, Loss: 0.3407, Time: 10.32s Epoch 14/20: Train Loss: 0.5532, Val Loss: inf, Val IoU: 0.6504 Epoch: 14, Batch: 0/236, Loss: 0.4382, Time: 2.21s Epoch: 14, Batch: 10/236, Loss: 0.4564, Time: 11.07s Epoch: 14, Batch: 20/236, Loss: 0.4404, Time: 10.54s Epoch: 14, Batch: 30/236, Loss: 0.4003, Time: 10.30s Epoch: 14, Batch: 40/236, Loss: 0.4256, Time: 9.86s Epoch: 14, Batch: 50/236, Loss: 0.3858, Time: 10.45s Epoch: 14, Batch: 60/236, Loss: 0.4189, Time: 11.02s Epoch: 14, Batch: 70/236, Loss: 0.3922, Time: 10.54s Epoch: 14, Batch: 80/236, Loss: 0.3363, Time: 10.79s Epoch: 14, Batch: 90/236, Loss: 1.6521, Time: 10.79s Epoch: 14, Batch: 100/236, Loss: 0.5239, Time: 10.83s Epoch: 14, Batch: 110/236, Loss: 0.4401, Time: 10.07s Epoch: 14, Batch: 120/236, Loss: 0.9966, Time: 10.65s Epoch: 14, Batch: 130/236, Loss: 0.4037, Time: 10.50s Epoch: 14, Batch: 140/236, Loss: 0.5888, Time: 10.76s Epoch: 14, Batch: 150/236, Loss: 0.9669, Time: 10.54s Epoch: 14, Batch: 160/236, Loss: 1.0352, Time: 10.18s Epoch: 14, Batch: 170/236, Loss: 1.1470, Time: 10.71s Epoch: 14, Batch: 180/236, Loss: 0.4026, Time: 10.53s Epoch: 14, Batch: 190/236, Loss: 0.4021, Time: 10.81s Epoch: 14, Batch: 200/236, Loss: 0.6149, Time: 10.29s Epoch: 14, Batch: 210/236, Loss: 0.2719, Time: 11.03s Epoch: 14, Batch: 220/236, Loss: 0.3252, Time: 10.71s Epoch: 14, Batch: 230/236, Loss: 0.3506, Time: 10.58s Epoch 15/20: Train Loss: 0.5484, Val Loss: inf, Val IoU: 0.6490 Epoch: 15, Batch: 0/236, Loss: 0.4988, Time: 2.32s Epoch: 15, Batch: 10/236, Loss: 0.7601, Time: 10.72s Epoch: 15, Batch: 20/236, Loss: 0.6972, Time: 10.85s Epoch: 15, Batch: 30/236, Loss: 0.3854, Time: 10.97s Epoch: 15, Batch: 40/236, Loss: 0.3159, Time: 10.46s Epoch: 15, Batch: 50/236, Loss: 0.4047, Time: 10.64s Epoch: 15, Batch: 60/236, Loss: 0.2122, Time: 10.37s Epoch: 15, Batch: 70/236, Loss: 0.6881, Time: 11.01s Epoch: 15, Batch: 80/236, Loss: 0.3982, Time: 10.27s Epoch: 15, Batch: 90/236, Loss: 0.3544, Time: 10.75s Epoch: 15, Batch: 100/236, Loss: 0.4015, Time: 10.15s Epoch: 15, Batch: 110/236, Loss: 0.2426, Time: 10.08s Epoch: 15, Batch: 120/236, Loss: 1.1889, Time: 10.47s Epoch: 15, Batch: 130/236, Loss: 0.4760, Time: 10.31s Epoch: 15, Batch: 140/236, Loss: 0.3809, Time: 10.59s Epoch: 15, Batch: 150/236, Loss: 0.4705, Time: 10.78s Epoch: 15, Batch: 160/236, Loss: 0.3369, Time: 10.32s Epoch: 15, Batch: 170/236, Loss: 0.3656, Time: 11.56s Epoch: 15, Batch: 180/236, Loss: 0.2968, Time: 10.18s Epoch: 15, Batch: 190/236, Loss: 0.4916, Time: 10.88s Epoch: 15, Batch: 200/236, Loss: 0.3504, Time: 10.76s Epoch: 15, Batch: 210/236, Loss: 0.3934, Time: 10.68s Epoch: 15, Batch: 220/236, Loss: 0.9691, Time: 10.38s Epoch: 15, Batch: 230/236, Loss: 0.3268, Time: 10.35s Epoch 16/20: Train Loss: 0.5310, Val Loss: inf, Val IoU: 0.6553 Epoch: 16, Batch: 0/236, Loss: 1.0471, Time: 2.41s Epoch: 16, Batch: 10/236, Loss: 1.0467, Time: 11.07s Epoch: 16, Batch: 20/236, Loss: 1.0009, Time: 10.19s Epoch: 16, Batch: 30/236, Loss: 0.4453, Time: 10.29s Epoch: 16, Batch: 40/236, Loss: 0.9343, Time: 10.36s Epoch: 16, Batch: 50/236, Loss: 0.3367, Time: 10.73s Epoch: 16, Batch: 60/236, Loss: 0.4000, Time: 10.94s Epoch: 16, Batch: 70/236, Loss: 0.3909, Time: 10.40s Epoch: 16, Batch: 80/236, Loss: 0.4659, Time: 11.14s Epoch: 16, Batch: 90/236, Loss: 0.2858, Time: 10.30s Epoch: 16, Batch: 100/236, Loss: 0.3376, Time: 10.80s Epoch: 16, Batch: 110/236, Loss: 0.2746, Time: 10.34s Epoch: 16, Batch: 120/236, Loss: 1.1338, Time: 10.58s Epoch: 16, Batch: 130/236, Loss: 0.3173, Time: 10.14s Epoch: 16, Batch: 140/236, Loss: 0.3227, Time: 10.38s Epoch: 16, Batch: 150/236, Loss: 0.3307, Time: 10.37s Epoch: 16, Batch: 160/236, Loss: 0.4643, Time: 10.16s Epoch: 16, Batch: 170/236, Loss: 0.6326, Time: 10.91s Epoch: 16, Batch: 180/236, Loss: 0.9619, Time: 10.28s Epoch: 16, Batch: 190/236, Loss: 0.4378, Time: 11.06s Epoch: 16, Batch: 200/236, Loss: 0.9080, Time: 10.04s Epoch: 16, Batch: 210/236, Loss: 0.4020, Time: 10.52s Epoch: 16, Batch: 220/236, Loss: 0.3102, Time: 11.15s Epoch: 16, Batch: 230/236, Loss: 1.1564, Time: 11.33s Epoch 17/20: Train Loss: 0.5283, Val Loss: inf, Val IoU: 0.6369 Epoch: 17, Batch: 0/236, Loss: 0.4169, Time: 2.21s Epoch: 17, Batch: 10/236, Loss: 0.3777, Time: 10.72s Epoch: 17, Batch: 20/236, Loss: 0.3779, Time: 10.06s Epoch: 17, Batch: 30/236, Loss: 0.3229, Time: 10.87s Epoch: 17, Batch: 40/236, Loss: 0.2262, Time: 10.47s Epoch: 17, Batch: 50/236, Loss: 0.3231, Time: 10.50s Epoch: 17, Batch: 60/236, Loss: 1.1194, Time: 10.92s Epoch: 17, Batch: 70/236, Loss: 0.3897, Time: 10.63s Epoch: 17, Batch: 80/236, Loss: 0.4433, Time: 10.39s Epoch: 17, Batch: 90/236, Loss: 0.3343, Time: 10.21s Epoch: 17, Batch: 100/236, Loss: 0.3991, Time: 10.79s Epoch: 17, Batch: 110/236, Loss: 0.3038, Time: 10.32s Epoch: 17, Batch: 120/236, Loss: 0.4170, Time: 10.52s Epoch: 17, Batch: 130/236, Loss: 0.7939, Time: 10.69s Epoch: 17, Batch: 140/236, Loss: 0.4659, Time: 10.35s Epoch: 17, Batch: 150/236, Loss: 0.3739, Time: 11.28s Epoch: 17, Batch: 160/236, Loss: 0.2906, Time: 10.19s Epoch: 17, Batch: 170/236, Loss: 0.4046, Time: 10.54s Epoch: 17, Batch: 180/236, Loss: 0.2912, Time: 10.34s Epoch: 17, Batch: 190/236, Loss: 0.7034, Time: 10.68s Epoch: 17, Batch: 200/236, Loss: 0.3761, Time: 10.75s Epoch: 17, Batch: 210/236, Loss: 0.4250, Time: 10.80s Epoch: 17, Batch: 220/236, Loss: 0.3214, Time: 10.24s Epoch: 17, Batch: 230/236, Loss: 1.5903, Time: 10.38s Epoch 18/20: Train Loss: 0.5173, Val Loss: inf, Val IoU: 0.6620 Epoch: 18, Batch: 0/236, Loss: 0.4304, Time: 1.76s Epoch: 18, Batch: 10/236, Loss: 0.3157, Time: 10.23s Epoch: 18, Batch: 20/236, Loss: 0.9813, Time: 10.64s Epoch: 18, Batch: 30/236, Loss: 0.3863, Time: 10.88s Epoch: 18, Batch: 40/236, Loss: 0.3467, Time: 10.63s Epoch: 18, Batch: 50/236, Loss: 0.3193, Time: 10.87s Epoch: 18, Batch: 60/236, Loss: 0.3671, Time: 10.61s Epoch: 18, Batch: 70/236, Loss: 0.8766, Time: 11.06s Epoch: 18, Batch: 80/236, Loss: 0.3015, Time: 10.49s Epoch: 18, Batch: 90/236, Loss: 0.3738, Time: 11.05s Epoch: 18, Batch: 100/236, Loss: 0.4008, Time: 11.17s Epoch: 18, Batch: 110/236, Loss: 0.3664, Time: 10.58s Epoch: 18, Batch: 120/236, Loss: 0.3692, Time: 9.65s Epoch: 18, Batch: 130/236, Loss: 0.3549, Time: 10.98s Epoch: 18, Batch: 140/236, Loss: 1.0035, Time: 10.39s Epoch: 18, Batch: 150/236, Loss: 0.3109, Time: 9.76s Epoch: 18, Batch: 160/236, Loss: 0.3280, Time: 11.01s Epoch: 18, Batch: 170/236, Loss: 0.3379, Time: 10.03s Epoch: 18, Batch: 180/236, Loss: 0.4300, Time: 11.02s Epoch: 18, Batch: 190/236, Loss: 1.1572, Time: 10.62s Epoch: 18, Batch: 200/236, Loss: 0.3696, Time: 10.42s Epoch: 18, Batch: 210/236, Loss: 0.3667, Time: 11.07s Epoch: 18, Batch: 220/236, Loss: 0.2744, Time: 10.11s Epoch: 18, Batch: 230/236, Loss: 0.4910, Time: 10.13s Epoch 19/20: Train Loss: 0.5108, Val Loss: inf, Val IoU: 0.7860 Saving best model with IoU: 0.7860 Epoch: 19, Batch: 0/236, Loss: 0.4110, Time: 2.11s Epoch: 19, Batch: 10/236, Loss: 0.3467, Time: 11.11s Epoch: 19, Batch: 20/236, Loss: 0.2858, Time: 11.16s Epoch: 19, Batch: 30/236, Loss: 0.3663, Time: 10.69s Epoch: 19, Batch: 40/236, Loss: 0.3177, Time: 10.89s Epoch: 19, Batch: 50/236, Loss: 0.4041, Time: 10.96s Epoch: 19, Batch: 60/236, Loss: 0.3514, Time: 10.41s Epoch: 19, Batch: 70/236, Loss: 0.3885, Time: 10.17s Epoch: 19, Batch: 80/236, Loss: 0.5075, Time: 10.27s Epoch: 19, Batch: 90/236, Loss: 0.3673, Time: 10.24s Epoch: 19, Batch: 100/236, Loss: 0.3524, Time: 10.67s Epoch: 19, Batch: 110/236, Loss: 0.2394, Time: 10.01s Epoch: 19, Batch: 120/236, Loss: 0.3402, Time: 10.99s Epoch: 19, Batch: 130/236, Loss: 0.2966, Time: 10.46s Epoch: 19, Batch: 140/236, Loss: 0.3122, Time: 10.35s Epoch: 19, Batch: 150/236, Loss: 0.3935, Time: 10.17s Epoch: 19, Batch: 160/236, Loss: 0.3095, Time: 10.21s Epoch: 19, Batch: 170/236, Loss: 0.2995, Time: 10.21s Epoch: 19, Batch: 180/236, Loss: 0.4115, Time: 10.72s Epoch: 19, Batch: 190/236, Loss: 0.2746, Time: 10.42s Epoch: 19, Batch: 200/236, Loss: 0.3435, Time: 10.78s Epoch: 19, Batch: 210/236, Loss: 0.3504, Time: 10.97s Epoch: 19, Batch: 220/236, Loss: 0.3792, Time: 10.54s Epoch: 19, Batch: 230/236, Loss: 0.4921, Time: 10.89s Epoch 20/20: Train Loss: 0.5083, Val Loss: inf, Val IoU: 0.6528 Final Evaluation - Loss: inf, IoU: 0.7860 Training complete! Trained model saved to output/models
Once trained, we will select a test area to make predictions:
masks_path = "naip_test_prediction.tif"
model_path = f"{out_folder}/models/best_model.pth"
aoi_pred = gpd.read_file('/content/AOI_pred.shp')
bbox_pred = tuple(aoi_pred.total_bounds)
# Download NAIP imagery for the specified region
downloaded_files = download_naip(
bbox=bbox_pred,
output_dir="naip_data_pred",
max_items=3,
year=2022,
)
print(f"Downloaded {len(downloaded_files)} files.")
Found 1 NAIP items. Downloading item 1/1: m_3611547_sw_11_060_20220611.tif
m_3611547_sw_11_060_20220611.tif: 100%|██████████| 359M/359M [00:03<00:00, 94.4MiB/s]
Successfully saved to naip_data_pred/m_3611547_sw_11_060_20220611.tif Downloaded 1 files.
Let's crop our area of interest from the full image:
raster_pred_path = '/content/naip_data_pred/m_3611547_sw_11_060_20220611.tif'
test_raster_path = 'clipped_naip_pred.tif'
with rasterio.open(raster_pred_path) as src:
aoi_pred = aoi_pred.to_crs(src.crs)
out_image, out_transform = rasterio.mask.mask(src, aoi_pred.geometry, crop=True)
out_image = out_image[0:3]
out_meta = src.meta
out_meta.update({"driver": "GTiff",
"height": out_image.shape[1],
"width": out_image.shape[2],
"count": out_image.shape[0],
"transform": out_transform})
with rasterio.open(test_raster_path, "w", **out_meta) as dest:
dest.write(out_image)
And apply the model we trained:
geoai.object_detection(
test_raster_path,
masks_path,
model_path,
window_size=512,
overlap=256,
confidence_threshold=0.5,
batch_size=4,
num_channels=3,
)
Processing 80 windows with size 512x512 and overlap 256...
99it [00:15, 6.41it/s]
Inference completed in 15.48 seconds Saved prediction to naip_test_prediction.tif
We can visualize the result:
geoai.view_image(masks_path)
Let's convert the TIFF image to polygons and regularize:
output_path = "naip_test_prediction.geojson"
gdf = geoai.orthogonalize(masks_path, output_path, epsilon=2)
Processing 1447 features...
Converting features: 100%|██████████| 1447/1447 [00:17<00:00, 83.65shape/s]
Saving to naip_test_prediction.geojson... Done!
gdf = geoai.regularize(
data=output_path,
simplify_tolerance=2.0,
allow_45_degree=True,
diagonal_threshold_reduction=30,
allow_circles=True,
circle_threshold=0.9,
)
vector_url = "regularized_buildings.geojson"
gdf.to_file(vector_url, driver="GeoJSON")
Finally, we present the result in an interactive map:
m = leafmap.Map()
m.add_raster(test_raster_path)
m.add_gdf(gdf, style={"color": "red", "fillOpacity": 0}, layer_name="Regularized")
legend = {
"Regularized": "red",
}
m.add_legend(title="Building Footprints", legend_dict=legend)
m
Map(center=[36.2665595, -115.21619150000001], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom…