Dineth Perera commited on
Commit ·
bac3e47
1
Parent(s): 0969bf1
Rank ChangeMamba in LEVIR comparison
Browse files- README.md +19 -24
- results/changemamba/levir_val_as_test/metrics_test.json +76 -0
- tools/generate_hf_model_card.py +10 -26
README.md
CHANGED
|
@@ -179,18 +179,20 @@ Every dataset below is a real YAML file under `configs/datasets/`. The harness e
|
|
| 179 |
|
| 180 |
## Results and released checkpoints
|
| 181 |
|
| 182 |
-
Only completed `metrics_test.json` evaluations are eligible for rankings. Rankings are computed per dataset by test-set F1 (descending), and the canonical `best_model.pth` checkpoint for every ranked model is released.
|
| 183 |
|
| 184 |
All accuracy values are fractions. GPU memory is the PyTorch peak reserved memory for inference, with peak allocated memory used only when reserved memory is absent. FPS is model-only throughput. A dash means the evaluator did not record that metric; values are never estimated.
|
| 185 |
|
| 186 |
The current evaluator records BF1 but not boundary mean IoU (BmIoU), so BmIoU remains explicitly unavailable rather than being inferred from BF1. Boundary IoU and boundary F1 are distinct measures.
|
| 187 |
|
|
|
|
|
|
|
| 188 |
### Dataset summary
|
| 189 |
|
| 190 |
| Dataset | Tested models | F1 leader | Best test F1 |
|
| 191 |
| --- | --- | --- | --- |
|
| 192 |
| DSIFN-CD | 14 | BIT-CD | 0.6732 |
|
| 193 |
-
| LEVIR-CD+
|
| 194 |
| SYSU-CD | 8 | ChangeMamba | 0.8216 |
|
| 195 |
| WHU-CD | 8 | ChangeMamba | 0.9521 |
|
| 196 |
|
|
@@ -213,23 +215,24 @@ The current evaluator records BF1 but not boundary mean IoU (BmIoU), so BmIoU re
|
|
| 213 |
| 13 | HANet | 0.5347 | 0.5817 | 0.8193 | 0.6109 | 0.4754 | 0.2418 | — | 17.67 | 11.36 | 42.36 | 3.03 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/hanet/dsifn_cd/checkpoints/best_model.pth?download=true) |
|
| 214 |
| 14 | IFNet | 0.4579 | 0.5102 | 0.7524 | 0.6153 | 0.3647 | 0.1325 | — | 82.26 | 6.08 | 104.88 | 50.71 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/ifnet/dsifn_cd/checkpoints/best_model.pth?download=true) |
|
| 215 |
|
| 216 |
-
### LEVIR-CD+
|
| 217 |
|
| 218 |
| Rank | Model | F1 | mIoU | Overall accuracy | Recall | Precision | BF1 | BmIoU | GFLOPs | GPU (GB) | FPS | Parameters (M) | Checkpoint |
|
| 219 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
| 220 |
-
| 1 |
|
| 221 |
-
| 2 |
|
| 222 |
-
| 3 |
|
| 223 |
-
| 4 |
|
| 224 |
-
| 5 |
|
| 225 |
-
| 6 |
|
| 226 |
-
| 7 |
|
| 227 |
-
| 8 |
|
| 228 |
-
| 9 |
|
| 229 |
-
| 10 |
|
| 230 |
-
| 11 |
|
| 231 |
-
| 12 |
|
| 232 |
-
| 13 | FC-
|
|
|
|
| 233 |
|
| 234 |
### SYSU-CD
|
| 235 |
|
|
@@ -257,14 +260,6 @@ The current evaluator records BF1 but not boundary mean IoU (BmIoU), so BmIoU re
|
|
| 257 |
| 7 | FC-Siam-conc | 0.7789 | 0.8062 | 0.9756 | 0.8907 | 0.6920 | 0.4733 | — | 5.33 | 1.03 | 397.86 | 1.55 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/fc_siam_conc/whu_cd/checkpoints/best_model.pth?download=true) |
|
| 258 |
| 8 | FC-Siam-diff | 0.7135 | 0.7580 | 0.9631 | 0.9540 | 0.5699 | 0.2148 | — | 4.73 | 1.09 | 567.87 | 1.35 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/fc_siam_diff/whu_cd/checkpoints/best_model.pth?download=true) |
|
| 259 |
|
| 260 |
-
### Additional checkpoint without completed test metrics
|
| 261 |
-
|
| 262 |
-
This trained checkpoint is published on request, but it is not included in the F1 rankings because its `metrics_test.json` evaluation has not completed. The protocol is LEVIR-CD+ validation-as-test, not the test-as-validation benchmark above.
|
| 263 |
-
|
| 264 |
-
| Dataset | Model | Evaluation status | Download | Size |
|
| 265 |
-
| --- | --- | --- | --- | --- |
|
| 266 |
-
| LEVIR-CD+ (val-as-test protocol) | ChangeMamba | Metrics pending | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/changemamba/levir_val_as_test/checkpoints/best_model.pth?download=true) | 619.4 MiB |
|
| 267 |
-
|
| 268 |
### Datasets without a released checkpoint
|
| 269 |
|
| 270 |
WildFire-S2, KATE-CD-256, the standard LEVIR-CD+ configuration, and Custom-CD currently have no eligible completed test result. Their validation-only or incomplete checkpoints are intentionally not uploaded.
|
|
|
|
| 179 |
|
| 180 |
## Results and released checkpoints
|
| 181 |
|
| 182 |
+
Only completed `metrics_test.json` evaluations are eligible for rankings. Rankings are computed per dataset by test-set F1 (descending), and the canonical `best_model.pth` checkpoint for every ranked model is released.
|
| 183 |
|
| 184 |
All accuracy values are fractions. GPU memory is the PyTorch peak reserved memory for inference, with peak allocated memory used only when reserved memory is absent. FPS is model-only throughput. A dash means the evaluator did not record that metric; values are never estimated.
|
| 185 |
|
| 186 |
The current evaluator records BF1 but not boundary mean IoU (BmIoU), so BmIoU remains explicitly unavailable rather than being inferred from BF1. Boundary IoU and boundary F1 are distinct measures.
|
| 187 |
|
| 188 |
+
The LEVIR-CD+ comparison combines the project-compatible `levir_cd_test_as_val` and `levir_val_as_test` result records. The ChangeMamba row uses the completed `levir_val_as_test` evaluation over 5,568 samples.
|
| 189 |
+
|
| 190 |
### Dataset summary
|
| 191 |
|
| 192 |
| Dataset | Tested models | F1 leader | Best test F1 |
|
| 193 |
| --- | --- | --- | --- |
|
| 194 |
| DSIFN-CD | 14 | BIT-CD | 0.6732 |
|
| 195 |
+
| LEVIR-CD+ comparison | 14 | ChangeMamba | 0.8753 |
|
| 196 |
| SYSU-CD | 8 | ChangeMamba | 0.8216 |
|
| 197 |
| WHU-CD | 8 | ChangeMamba | 0.9521 |
|
| 198 |
|
|
|
|
| 215 |
| 13 | HANet | 0.5347 | 0.5817 | 0.8193 | 0.6109 | 0.4754 | 0.2418 | — | 17.67 | 11.36 | 42.36 | 3.03 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/hanet/dsifn_cd/checkpoints/best_model.pth?download=true) |
|
| 216 |
| 14 | IFNet | 0.4579 | 0.5102 | 0.7524 | 0.6153 | 0.3647 | 0.1325 | — | 82.26 | 6.08 | 104.88 | 50.71 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/ifnet/dsifn_cd/checkpoints/best_model.pth?download=true) |
|
| 217 |
|
| 218 |
+
### LEVIR-CD+ comparison
|
| 219 |
|
| 220 |
| Rank | Model | F1 | mIoU | Overall accuracy | Recall | Precision | BF1 | BmIoU | GFLOPs | GPU (GB) | FPS | Parameters (M) | Checkpoint |
|
| 221 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
| 222 |
+
| 1 | ChangeMamba | 0.8753 | 0.8840 | 0.9901 | 0.8572 | 0.8942 | 0.8307 | — | 28.70 | 1.93 | 76.82 | 54.00 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/changemamba/levir_val_as_test/checkpoints/best_model.pth?download=true) |
|
| 223 |
+
| 2 | CGNet | 0.8138 | 0.8356 | 0.9856 | 0.7746 | 0.8572 | 0.7651 | — | 82.23 | 6.01 | 44.01 | 38.99 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/cgnet/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 224 |
+
| 3 | Siam-NestedUNet | 0.8046 | 0.8282 | 0.9839 | 0.8129 | 0.7965 | 0.7386 | — | — | 2.67 | 108.71 | — | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/siam_nestedunet/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 225 |
+
| 4 | SChanger | 0.8007 | 0.8253 | 0.9836 | 0.8112 | 0.7906 | 0.7364 | — | — | 2.45 | 48.96 | — | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/schanger/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 226 |
+
| 5 | BIT-CD | 0.7996 | 0.8247 | 0.9838 | 0.7946 | 0.8047 | 0.7143 | — | 10.63 | 2.27 | 236.60 | 12.40 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/bit_cd/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 227 |
+
| 6 | HANet | 0.7841 | 0.8131 | 0.9819 | 0.8064 | 0.7630 | 0.7043 | — | — | 5.04 | 84.44 | — | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/hanet/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 228 |
+
| 7 | BiFA | 0.7772 | 0.8084 | 0.9818 | 0.7785 | 0.7760 | 0.6581 | — | 53.00 | 15.14 | 30.38 | 9.87 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/bifa/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 229 |
+
| 8 | FC-Siam-conc | 0.7650 | 0.7999 | 0.9809 | 0.7623 | 0.7678 | 0.7175 | — | 5.33 | 1.02 | 308.81 | 1.55 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/fc_siam_conc/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 230 |
+
| 9 | STANet | 0.7544 | 0.7921 | 0.9791 | 0.7865 | 0.7249 | 0.6388 | — | — | 4.45 | 174.00 | — | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/stanet/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 231 |
+
| 10 | ChangeFormer | 0.7488 | 0.7887 | 0.9795 | 0.7505 | 0.7472 | 0.6525 | — | 21.18 | 4.03 | 157.64 | 29.75 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/changeformer/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 232 |
+
| 11 | DSAMNet | 0.7444 | 0.7850 | 0.9779 | 0.7897 | 0.7040 | 0.5370 | — | 75.39 | 2.90 | 37.84 | 16.95 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/dsamnet/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 233 |
+
| 12 | IFNet | 0.7410 | 0.7833 | 0.9786 | 0.7510 | 0.7313 | 0.3489 | — | 82.26 | 6.08 | 105.44 | 50.71 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/ifnet/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 234 |
+
| 13 | FC-EF | 0.7319 | 0.7766 | 0.9768 | 0.7785 | 0.6905 | 0.6497 | — | 3.58 | 0.74 | 457.44 | 1.35 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/fc_ef/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 235 |
+
| 14 | FC-Siam-diff | 0.7196 | 0.7667 | 0.9725 | 0.8650 | 0.6160 | 0.5447 | — | 4.73 | 1.06 | 262.80 | 1.35 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/fc_siam_diff/levir_cd_test_as_val/checkpoints/best_model.pth?download=true) |
|
| 236 |
|
| 237 |
### SYSU-CD
|
| 238 |
|
|
|
|
| 260 |
| 7 | FC-Siam-conc | 0.7789 | 0.8062 | 0.9756 | 0.8907 | 0.6920 | 0.4733 | — | 5.33 | 1.03 | 397.86 | 1.55 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/fc_siam_conc/whu_cd/checkpoints/best_model.pth?download=true) |
|
| 261 |
| 8 | FC-Siam-diff | 0.7135 | 0.7580 | 0.9631 | 0.9540 | 0.5699 | 0.2148 | — | 4.73 | 1.09 | 567.87 | 1.35 | [Download](https://huggingface.co/dineth18/CD-Models/resolve/main/results/fc_siam_diff/whu_cd/checkpoints/best_model.pth?download=true) |
|
| 262 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 263 |
### Datasets without a released checkpoint
|
| 264 |
|
| 265 |
WildFire-S2, KATE-CD-256, the standard LEVIR-CD+ configuration, and Custom-CD currently have no eligible completed test result. Their validation-only or incomplete checkpoints are intentionally not uploaded.
|
results/changemamba/levir_val_as_test/metrics_test.json
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"adapter": {
|
| 3 |
+
"checkpoint_format": "ChangeMamba training checkpoint with model key, state_dict key, or raw state dict",
|
| 4 |
+
"final_output_for_metrics": "raw two-channel logits",
|
| 5 |
+
"input_format": "two tensors (A, B), each [B, 3, H, W]",
|
| 6 |
+
"model_class_path": "model_repos/ChangeMamba/changedetection/models/ChangeMambaBCD.py:ChangeMambaBCD",
|
| 7 |
+
"notes": "ChangeMambaBCD with VMamba backbone; upstream training checkpoint stores weights under the model key.",
|
| 8 |
+
"output_format": "two-channel logits [B, 2, H, W]"
|
| 9 |
+
},
|
| 10 |
+
"bf1": 0.8306516149038876,
|
| 11 |
+
"boundary_precision": 0.8341108230812149,
|
| 12 |
+
"boundary_recall": 0.8272209900665211,
|
| 13 |
+
"boundary_tolerance": 2,
|
| 14 |
+
"checkpoint": "/new-home/buddhiw/CD-Models/results/changemamba/levir_val_as_test/checkpoints/LEVIR/MambaBCD_Small_1783799387.0019937/best_model.pth",
|
| 15 |
+
"dataset": "levir_val_as_test",
|
| 16 |
+
"f1": 0.875312539142707,
|
| 17 |
+
"f1_0": 0.9948183398928466,
|
| 18 |
+
"flops": 28704817152.0,
|
| 19 |
+
"flops_g": 28.704817152,
|
| 20 |
+
"flops_input_shape": [
|
| 21 |
+
[
|
| 22 |
+
1,
|
| 23 |
+
3,
|
| 24 |
+
256,
|
| 25 |
+
256
|
| 26 |
+
],
|
| 27 |
+
[
|
| 28 |
+
1,
|
| 29 |
+
3,
|
| 30 |
+
256,
|
| 31 |
+
256
|
| 32 |
+
]
|
| 33 |
+
],
|
| 34 |
+
"flops_library": "thop",
|
| 35 |
+
"fn": 2123436.0,
|
| 36 |
+
"fp": 1507299.0,
|
| 37 |
+
"fps": 76.81665317190178,
|
| 38 |
+
"fps_end_to_end": 6.080985465348349,
|
| 39 |
+
"fps_model_only": 76.81665317190178,
|
| 40 |
+
"gpu_index": 0,
|
| 41 |
+
"gpu_mem_allocated_peak_gb": 1.4883003234863281,
|
| 42 |
+
"gpu_mem_reserved_peak_gb": 1.93359375,
|
| 43 |
+
"gpu_mem_used_max_gb": 2.63427734375,
|
| 44 |
+
"gpu_mem_used_mean_gb": 2.6313484073693827,
|
| 45 |
+
"gpu_name": "NVIDIA GeForce RTX 3090 Ti",
|
| 46 |
+
"gpu_profiling_error": null,
|
| 47 |
+
"gpu_util_max": 54.0,
|
| 48 |
+
"gpu_util_mean": 7.914405010438413,
|
| 49 |
+
"gpu_util_min": 0.0,
|
| 50 |
+
"iou": 0.7782718119422073,
|
| 51 |
+
"iou_0": 0.9896901120691365,
|
| 52 |
+
"kappa": 0.8701331917825822,
|
| 53 |
+
"miou": 0.8839809620056719,
|
| 54 |
+
"model": "changemamba",
|
| 55 |
+
"num_timed_images": 5552,
|
| 56 |
+
"oa": 0.9900501760943182,
|
| 57 |
+
"params": 53999618.0,
|
| 58 |
+
"params_m": 53.999618,
|
| 59 |
+
"precision": 0.894234094844145,
|
| 60 |
+
"prediction_dir": "/new-home/buddhiw/CD-Models/results/changemamba/levir_val_as_test/predictions/test",
|
| 61 |
+
"profiling_errors": [],
|
| 62 |
+
"recall": 0.8571751425197601,
|
| 63 |
+
"split": "test",
|
| 64 |
+
"status": "complete",
|
| 65 |
+
"test_num_samples": 5568,
|
| 66 |
+
"threshold": 0.5,
|
| 67 |
+
"timestamp": "2026-07-23T06:31:43.486999+00:00",
|
| 68 |
+
"timing_device": "cuda:0",
|
| 69 |
+
"tn": 348529737.0,
|
| 70 |
+
"tp": 12743976.0,
|
| 71 |
+
"trainable_params": 53999618.0,
|
| 72 |
+
"trainable_params_m": 53.999618,
|
| 73 |
+
"visual_dir": "/new-home/buddhiw/CD-Models/results/changemamba/levir_val_as_test/visuals/selected_20",
|
| 74 |
+
"visual_sample_manifest": "/new-home/buddhiw/CD-Models/results/qualitative_samples/levir_val_as_test/sample_manifest.json",
|
| 75 |
+
"warmup_batches": 2
|
| 76 |
+
}
|
tools/generate_hf_model_card.py
CHANGED
|
@@ -14,11 +14,14 @@ REPO_ID = "dineth18/CD-Models"
|
|
| 14 |
|
| 15 |
DATASET_LABELS = {
|
| 16 |
"dsifn_cd": "DSIFN-CD",
|
| 17 |
-
"levir_cd_test_as_val": "LEVIR-CD+
|
| 18 |
"sysu_cd": "SYSU-CD",
|
| 19 |
"whu_cd": "WHU-CD",
|
| 20 |
}
|
| 21 |
DATASET_ORDER = tuple(DATASET_LABELS)
|
|
|
|
|
|
|
|
|
|
| 22 |
MODEL_LABELS = {
|
| 23 |
"bifa": "BiFA",
|
| 24 |
"bit_cd": "BIT-CD",
|
|
@@ -42,7 +45,8 @@ def load_rows() -> dict[str, list[dict[str, Any]]]:
|
|
| 42 |
for path in sorted(RESULTS.glob("*/*/metrics_test.json")):
|
| 43 |
with path.open(encoding="utf-8") as handle:
|
| 44 |
row = json.load(handle)
|
| 45 |
-
|
|
|
|
| 46 |
if dataset not in DATASET_LABELS:
|
| 47 |
continue
|
| 48 |
if row.get("split") != "test" or row.get("status") != "complete":
|
|
@@ -51,6 +55,7 @@ def load_rows() -> dict[str, list[dict[str, Any]]]:
|
|
| 51 |
continue
|
| 52 |
row["_path"] = path
|
| 53 |
row["_model"] = str(row.get("model") or path.parents[1].name)
|
|
|
|
| 54 |
grouped[dataset].append(row)
|
| 55 |
for rows in grouped.values():
|
| 56 |
rows.sort(key=lambda row: (-float(row["f1"]), row["_model"]))
|
|
@@ -113,12 +118,14 @@ def build_results() -> tuple[str, list[Path]]:
|
|
| 113 |
lines = [
|
| 114 |
"## Results and released checkpoints",
|
| 115 |
"",
|
| 116 |
-
"Only completed `metrics_test.json` evaluations are eligible for rankings. Rankings are computed per dataset by test-set F1 (descending), and the canonical `best_model.pth` checkpoint for every ranked model is released.
|
| 117 |
"",
|
| 118 |
"All accuracy values are fractions. GPU memory is the PyTorch peak reserved memory for inference, with peak allocated memory used only when reserved memory is absent. FPS is model-only throughput. A dash means the evaluator did not record that metric; values are never estimated.",
|
| 119 |
"",
|
| 120 |
"The current evaluator records BF1 but not boundary mean IoU (BmIoU), so BmIoU remains explicitly unavailable rather than being inferred from BF1. Boundary IoU and boundary F1 are distinct measures.",
|
| 121 |
"",
|
|
|
|
|
|
|
| 122 |
"### Dataset summary",
|
| 123 |
"",
|
| 124 |
]
|
|
@@ -189,29 +196,6 @@ def build_results() -> tuple[str, list[Path]]:
|
|
| 189 |
else:
|
| 190 |
lines.append("No completed test-set result is available, so no checkpoint is published.")
|
| 191 |
|
| 192 |
-
pending_checkpoint = RESULTS / "changemamba" / "levir_val_as_test" / "checkpoints" / "best_model.pth"
|
| 193 |
-
if pending_checkpoint.is_file():
|
| 194 |
-
checkpoints.append(pending_checkpoint)
|
| 195 |
-
lines.extend(
|
| 196 |
-
[
|
| 197 |
-
"",
|
| 198 |
-
"### Additional checkpoint without completed test metrics",
|
| 199 |
-
"",
|
| 200 |
-
"This trained checkpoint is published on request, but it is not included in the F1 rankings because its `metrics_test.json` evaluation has not completed. The protocol is LEVIR-CD+ validation-as-test, not the test-as-validation benchmark above.",
|
| 201 |
-
"",
|
| 202 |
-
*markdown_table(
|
| 203 |
-
["Dataset", "Model", "Evaluation status", "Download", "Size"],
|
| 204 |
-
[[
|
| 205 |
-
"LEVIR-CD+ (val-as-test protocol)",
|
| 206 |
-
"ChangeMamba",
|
| 207 |
-
"Metrics pending",
|
| 208 |
-
f"[Download]({download_url(pending_checkpoint)})",
|
| 209 |
-
f"{pending_checkpoint.stat().st_size / (1024 ** 2):.1f} MiB",
|
| 210 |
-
]],
|
| 211 |
-
),
|
| 212 |
-
]
|
| 213 |
-
)
|
| 214 |
-
|
| 215 |
lines.extend(
|
| 216 |
[
|
| 217 |
"",
|
|
|
|
| 14 |
|
| 15 |
DATASET_LABELS = {
|
| 16 |
"dsifn_cd": "DSIFN-CD",
|
| 17 |
+
"levir_cd_test_as_val": "LEVIR-CD+ comparison",
|
| 18 |
"sysu_cd": "SYSU-CD",
|
| 19 |
"whu_cd": "WHU-CD",
|
| 20 |
}
|
| 21 |
DATASET_ORDER = tuple(DATASET_LABELS)
|
| 22 |
+
DATASET_ALIASES = {
|
| 23 |
+
"levir_val_as_test": "levir_cd_test_as_val",
|
| 24 |
+
}
|
| 25 |
MODEL_LABELS = {
|
| 26 |
"bifa": "BiFA",
|
| 27 |
"bit_cd": "BIT-CD",
|
|
|
|
| 45 |
for path in sorted(RESULTS.glob("*/*/metrics_test.json")):
|
| 46 |
with path.open(encoding="utf-8") as handle:
|
| 47 |
row = json.load(handle)
|
| 48 |
+
source_dataset = str(row.get("dataset") or path.parent.name)
|
| 49 |
+
dataset = DATASET_ALIASES.get(source_dataset, source_dataset)
|
| 50 |
if dataset not in DATASET_LABELS:
|
| 51 |
continue
|
| 52 |
if row.get("split") != "test" or row.get("status") != "complete":
|
|
|
|
| 55 |
continue
|
| 56 |
row["_path"] = path
|
| 57 |
row["_model"] = str(row.get("model") or path.parents[1].name)
|
| 58 |
+
row["_source_dataset"] = source_dataset
|
| 59 |
grouped[dataset].append(row)
|
| 60 |
for rows in grouped.values():
|
| 61 |
rows.sort(key=lambda row: (-float(row["f1"]), row["_model"]))
|
|
|
|
| 118 |
lines = [
|
| 119 |
"## Results and released checkpoints",
|
| 120 |
"",
|
| 121 |
+
"Only completed `metrics_test.json` evaluations are eligible for rankings. Rankings are computed per dataset by test-set F1 (descending), and the canonical `best_model.pth` checkpoint for every ranked model is released.",
|
| 122 |
"",
|
| 123 |
"All accuracy values are fractions. GPU memory is the PyTorch peak reserved memory for inference, with peak allocated memory used only when reserved memory is absent. FPS is model-only throughput. A dash means the evaluator did not record that metric; values are never estimated.",
|
| 124 |
"",
|
| 125 |
"The current evaluator records BF1 but not boundary mean IoU (BmIoU), so BmIoU remains explicitly unavailable rather than being inferred from BF1. Boundary IoU and boundary F1 are distinct measures.",
|
| 126 |
"",
|
| 127 |
+
"The LEVIR-CD+ comparison combines the project-compatible `levir_cd_test_as_val` and `levir_val_as_test` result records. The ChangeMamba row uses the completed `levir_val_as_test` evaluation over 5,568 samples.",
|
| 128 |
+
"",
|
| 129 |
"### Dataset summary",
|
| 130 |
"",
|
| 131 |
]
|
|
|
|
| 196 |
else:
|
| 197 |
lines.append("No completed test-set result is available, so no checkpoint is published.")
|
| 198 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 199 |
lines.extend(
|
| 200 |
[
|
| 201 |
"",
|