This is the pytorch codes for our paper: Nationwide urban tree canopy mapping and coverage assessment in Brazil from high-resolution remote sensing images using deep learning. To better service Brazil’s urban ecosystem, we developed a semi-supervised deep learning method, which is able to learn semantic segmentation knowledge from both labeled and unlabeled images, to segment urban trees from high spatial resolution remote sensing images. The approach attains significant improvement over existing methods, especially when trained with limited labeled samples. Using this approach, we created 0.5 m fine-scale tree canopy products for 472 cities in Brazil and made them freely available to the community (UTB dataset1).
In this study, we used the same semi-supervised learning framework to train two CNN models for urban tree and mask segmentation, respectively. We use Deeplabv3+ (Chen et al., 2018) as our segmentation network (a). A standard binary classification network was designed as the discriminator (b) in this semi-supervised adversarial learning framework.
The code runs on Python 3 and Pytorch 0.4 The following packages are required.
pip install scipy tqdm matplotlib numpy opencv-python
Download ImageNet pretrained Resnet-101(Link) and place it ./pretrained_models/
python train.py
or
nohup python -u train.py > ./log/out_list.log 2>&1 &
python evaluate.py
Parts of the code have been adapted from: DeepLab-Resnet-Pytorch, AdvSemiSeg, PyTorch-Encoding
@article{GUO20231,
title = {Nationwide urban tree canopy mapping and coverage assessment in Brazil from high-resolution remote sensing images using deep learning},
journal = {ISPRS Journal of Photogrammetry and Remote Sensing},
volume = {198},
pages = {1-15},
year = {2023},
issn = {0924-2716},
doi = {https://doi.org/10.1016/j.isprsjprs.2023.02.007},
url = {https://www.sciencedirect.com/science/article/pii/S0924271623000461},
author = {Jianhua Guo, Qingsong Xu, Yue Zeng, Zhiheng Liu, and Xiao Xiang Zhu},
}