EVER-Z/torchange_xView2
Viewer • Updated • 7.69k • 379
ChangeOS with a Swin-T
backbone, trained on xView2/xBD with
torchange.
Scored with the official xView2 mixed metric,
0.3 * localization_F1 + 0.7 * harmonic_mean(damage_F1s), including the single-map constraint and
the unlabelled-pixel (255) exclusion rule.
Protocol: train on train+tier3 → select the checkpoint on test → report on hold.
These weights are the test-selected checkpoint, evaluated once on hold.
| split | Overall F1 | Localization F1 | Damage F1 | no-damage | minor | major | destroyed |
|---|---|---|---|---|---|---|---|
hold (reported) |
76.91 | 85.03 | 73.43 | 89.39 | 58.03 | 72.75 | 81.25 |
test (selection) |
76.68 | 84.67 | 73.26 | 89.92 | 56.27 | 73.55 | 82.56 |
| data | xView2 train (2,799) + tier3 (3,378), 512x512 tiles at stride 256 → 34,081 non-empty patches |
| augmentation | A.D4() (the tiling does the cropping), ImageNet normalisation |
| backbone | swin_t, ImageNet-1k initialised |
| decoder | dual FPN + AssymetricDecoder, 256 ch, fusion_type='2mlps' |
| heads | localization 1 class, damage 5 classes, both upsampled 4x |
| losses | BCE + Tversky (localization); cross-entropy + Dice with ignore_index=255 (damage) |
| optimizer | AdamW, weight decay 0.01 |
| LR | poly, base 6e-5, power 0.9 |
| schedule | 60,000 iters, effective batch 16, bf16, sync BN |
| hardware | 2x A100-SXM4-40GB, 3 h 16 min |
Reproduction config and commands: examples/xview2_project/ in the torchange repo.
import torchange # noqa: F401
from torchange.models.changeos import ChangeOS
model = ChangeOS.from_pretrained("EVER-Z/torchange_example_changeos_swint_on_xview2_best42k").eval()
# bitemporal input: pre- and post-event RGB stacked on the channel axis -> (B, 6, H, W)
# eval output: ChangeDetectionModelOutput with
# change_prediction (B, 5, H, W) softmax damage probabilities
# t1_semantic_prediction (B, 1, H, W) sigmoid building footprint
out = model(images)
loc = out['t1_semantic_prediction'] > 0.5
dam = loc * out['change_prediction'].argmax(dim=1) # single-map constraint; needs B=1
@article{zheng2021changeos,
title={Building damage assessment for rapid disaster response with a deep object-based semantic change detection framework: From natural disasters to man-made disasters},
author={Zheng, Zhuo and Zhong, Yanfei and Wang, Junjue and Ma, Ailong and Zhang, Liangpei},
journal={Remote Sensing of Environment},
volume={265},
pages={112636},
year={2021},
publisher={Elsevier}
}
@software{zheng2024torchange,
author = {Zheng, Zhuo},
title = {torchange: A Unified Change Representation Learning Benchmark Library},
url = {https://github.com/Z-Zheng/pytorch-change-models},
year = {2024}
}
@article{gupta2019xbd,
title={xBD: A dataset for assessing building damage from satellite imagery},
author={Gupta, Ritwik and Hosfelt, Richard and Sajeev, Sandra and Patel, Nirav and Goodman, Bryce and Doshi, Jigar and Heim, Eric and Choset, Howie and Gaston, Matthew},
journal={arXiv preprint arXiv:1911.09296},
year={2019}
}