RS-MTDF: Multi-Teacher Distillation and Fusion for Remote Sensing Semi-Supervised Semantic Segmentation
This is the official PyTorch implementation of the RS-MTDF method.
First, create a new Conda environment using the environment.yaml provided in the repository:
conda env create -f environment.yamlOnce the environment is created, activate it using the following command:
conda activate SemiExpected directory structure:
./dataset
├── loveda
├── potsdam
├── deepglobeWe follow the experimental setting from DWL. After cropping and splitting, the structure should be:
├── splits
├── ./dataname(eg. loveda)
├── 1
├── labeled.txt
├── unlabeled.txt
├── 5
├── labeled.txt
├── unlabeled.txt
├── 10
├── labeled.txt
├── unlabeled.txt
├── test.txt
├── val.txt
Download the following pretrained models and place them in the ./pretrained directory:
DINOv2-Small | DINOv2-Base | Clip-L
Expected directory structure:
├── ./pretrained
├── dinov2_small.pth
├── dinov2_base.pth
├── ViT-L-14.pt
Once the datasets and pretrained models are prepared, start training with:
sh scripts/train.sh <num_gpu> <port>You can modify scripts/train.sh to change the training settings, and adjust the config file for learning rate and other hyperparameters.
All evaluation scripts are located in the eval/ directory.
If you find this project helpful, please consider citing:
@misc{song2025rsmtdfmultiteacherdistillationfusion,
title={RS-MTDF: Multi-Teacher Distillation and Fusion for Remote Sensing Semi-Supervised Semantic Segmentation},
author={Jiayi Song and Kaiyu Li and Xiangyong Cao and Deyu Meng},
year={2025},
eprint={2506.08772},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2506.08772},
}