10 m canopy-height maps with the models of Leveraging cross-sensor LiDAR observations and Earth embeddings for canopy height prediction. Two Google Colab notebooks, nothing to install:
| Model | What it is |
|---|---|
| UNet-ALS | UNet pre-trained on US airborne lidar (USGS 3DEP) |
| RF-SLS | random forest on the GEDI-labelled pixels |
| UNet-SLS | UNet trained from scratch on the GEDI labels |
| KG-UNet1 | UNet-ALS fine-tuned on the GEDI labels |
| KG-UNet2 | as KG-UNet1, guided by UNet-ALS and UNet-SLS as teachers |
Benchmarks shown alongside: GMTCH (Meta, Tolan et al. 2024), GFCH (UMD, Potapov et al. 2021), HRCH (ETH, Lang et al. 2023).
Choose one of six regions: CONUS (United States, UNet-ALS) or the training region of an international site, EBR (Switzerland), MRF (New Zealand), MUR (Mexico), SER (Malaysia) or SPC (Brazil), each with its UNet-SLS, KG-UNet1 and KG-UNet2, and UNet-ALS. Draw the study area inside the region (at most 200 cells of 2.56 km) or upload it as a file; if nothing is drawn, the region's default study area is mapped. Outside the region the maps stay empty. Only the study area's inputs are downloaded, so a small study area takes minutes.
The notebook downloads the inputs and GEDI labels of a training region around the study area (200 cells of 2.56 km by default), trains the four local models with the paper's settings and maps the study area. It needs a T4 GPU runtime for the UNets and about 10 GB on Google Drive (the notebook prints the estimate for your area); the project is kept on Drive, so running the notebook again resumes it.
git clone https://github.com/Link-dev/chm-tool
cd chm-tool
pip install -e ".[tool]"Download the UNet-ALS checkpoint of the input you will use from
weights/source/ into
weights/source/ (UNet-ALS.pth for the default input AE), sign in to Earth Engine once, and start the local web
interface or the command line:
earthengine authenticate
chm-tool app
chm-tool init my_area --aoi study_area.shp --gee-project my-ee-project
chm-tool run my_areaA CUDA GPU is strongly recommended for the UNets. Every stage can be resumed after an interruption.
- docs/tool.md: what the tool does, settings, Sentinel-1 processing, run times, limits
- docs/models.md: the models and the
chmcommand (train, predict and evaluate on chip stacks)
All in the Hugging Face dataset Link-Dev/canopy-height-data:
weights/source/: UNet-ALS of every input, trained on canopy-height models derived from USGS 3DEP lidar (Allred et al. 2025);weights/<SITE>/: the paper's models of the five international sites (and NEON);- the paper's training and evaluation data.
If you use this tool, please cite the paper (see CITATION.cff):
Zhou, J., et al. Leveraging cross-sensor LiDAR observations and Earth embeddings for canopy height prediction. [Journal, year, DOI]
Code and weights: MIT. The Sentinel-1 processing includes gee_s1_ard (Mullissa et al. 2021, MIT), see
src/canopy_height/tool/gee/third_party/gee_s1_ard/LICENSE.