This repository contains the implementation of the multi-stage deep learning workflow proposed in the paper:
"A workflow of deep models with concept learning and domain-specific attention for change detection in vector building footprints"
Xiang Zhang, Ruolan Li, Yilang Shen
The study addresses a challenging change detection problem in heterogeneous vector building footprints, where pseudo-changes (caused by differences in LOD, displacement, generalization, etc.) are difficult to distinguish from real modifications. We propose a multi-stage deep learning workflow that integrates:
· Concept learning (discrepancy, displacement)
· Domain-specific attention (non-learnable morphological attention)
· Multi-scale feature fusion
Our workflow significantly reduces pseudo-change rates (from >40% to 16.7%) and outperforms both conventional rule-based methods and end-to-end deep models (including Transformers), especially in small-data scenarios.
The workflow consists of three main sub-tasks:
1. Local Discrepancy Discriminator – identifies significant visual differences.
2. Global Displacement Discriminator – detects cartographic displacement.
3. Change Classifier – fuses local and global features for final change detection.
Domain-specific attention is implemented via morphological operations to guide the model toward meaningful regions without additional learned parameters.
├── models/ # Implementations of CNN backbones (AlexNet, GoogLeNet, ResNet, etc.)
├── training/ # Multi-stage training scripts for discrepancy, displacement, and change tasks
├── inference/ # Scripts to run the full workflow on new data
├── utils/ # Helper functions (attention mechanisms, sampling, evaluation)
└── configs/ # Configuration files for training and evaluation
1. Install Dependencies
pip install torch torchvision opencv-python scikit-learn
2. Prepare Data
All the dataset have been published in figshare: Building Dataset
3. Train the Workflow
Stage-by-stage training:
python training/trainDiifNet.py --config configs/config_diff.py
python training/trainShiftNet.py --config configs/config_shift.py
python training/trainClassify.py
4. Run Inference
python inference/predict.py --model_path ./save_models/ --input_dir ./test_pairs/
If you use this code or find the paper helpful, please cite:
@article{zhang2025workflow,
title={A workflow of deep models with concept learning and domain-specific attention for change detection in vector building footprints},
author={Zhang, Xiang and Li, Ruolan and Shen, Yilang},
journal={Transactions in GIS},
year={2025},
doi ={10.1111/tgis.70172},
url ={http://dx.doi.org/10.1111/tgis.70172}}