dineth18 commited on
Commit
a95dbce
·
verified ·
1 Parent(s): 0b6122c
Files changed (1) hide show
  1. README.md +0 -533
README.md CHANGED
@@ -982,523 +982,6 @@ We thank the authors of all included models for their open-source implementation
982
  - [timm](https://github.com/huggingface/pytorch-image-models) for pretrained backbone weights.
983
  - University of Peradeniya for computational resources.
984
 
985
- ## Audit Appendix: Dataset Config Facts
986
-
987
- ### Dataset Fact 1
988
- Config `custom_cd` is defined in `configs/datasets/custom_cd.yaml`.
989
- Root pattern is `${DATA_ROOT}/Custom-CD`.
990
- Image size is `256`.
991
- Channels are `3`.
992
- Mask folder is `Mask`.
993
- Pre-change folder is `A`.
994
- Post-change folder is `B`.
995
- Splits are `train`, `val`, and `test`.
996
- Batch size is `8`.
997
- Workers are `4`.
998
- Evaluation threshold is `0.5`.
999
-
1000
- ### Dataset Fact 2
1001
- Config `dsifn_cd` is defined in `configs/datasets/dsifn_cd.yaml`.
1002
- Root pattern is `${DATA_ROOT}/DSIFN-CD/DSIFN`.
1003
- Image size is `256`.
1004
- Channels are `3`.
1005
- Mask folder is `mask`.
1006
- Pre-change folder is `t1`.
1007
- Post-change folder is `t2`.
1008
- Splits are `train`, `val`, and `test`.
1009
- Batch size is `8`.
1010
- Workers are `4`.
1011
- Evaluation threshold is `0.5`.
1012
-
1013
- ### Dataset Fact 3
1014
- Config `kate_cd` is defined in `configs/datasets/kate_cd.yaml`.
1015
- Root pattern is `${DATA_ROOT}/KATE-CD-256`.
1016
- Image size is `256`.
1017
- Channels are `3`.
1018
- Mask folder is `label`.
1019
- Pre-change folder is `A`.
1020
- Post-change folder is `B`.
1021
- Splits are `train`, `val`, and `test`.
1022
- Batch size is `8`.
1023
- Workers are `4`.
1024
- Evaluation threshold is `0.5`.
1025
-
1026
- ### Dataset Fact 4
1027
- Config `levir_cd` is defined in `configs/datasets/levir_cd.yaml`.
1028
- Root pattern is `${DATA_ROOT}/LEVIR-CD-plus-256`.
1029
- Image size is `256`.
1030
- Channels are `3`.
1031
- Mask folder is `Mask`.
1032
- Pre-change folder is `A`.
1033
- Post-change folder is `B`.
1034
- Splits are `train`, `val`, and `test`.
1035
- Batch size is `8`.
1036
- Workers are `4`.
1037
- Evaluation threshold is `0.5`.
1038
-
1039
- ### Dataset Fact 5
1040
- Config `levir_cd_test_as_val` is defined in `configs/datasets/levir_cd_test_as_val.yaml`.
1041
- Root pattern is `${DATA_ROOT}/LEVIR-CD-plus-256-test-as-val`.
1042
- Image size is `256`.
1043
- Channels are `3`.
1044
- Mask folder is `Mask`.
1045
- Pre-change folder is `A`.
1046
- Post-change folder is `B`.
1047
- Splits are `train`, `val`, and `test`.
1048
- Protocol is `test_as_val_literature`.
1049
- Batch size is `8`.
1050
- Workers are `4`.
1051
-
1052
- ### Dataset Fact 6
1053
- Config `sysu_cd` is defined in `configs/datasets/sysu_cd.yaml`.
1054
- Root pattern is `${DATA_ROOT}/SYSU-CD-folders`.
1055
- Image size is `256`.
1056
- Channels are `3`.
1057
- Mask folder is `Mask`.
1058
- Pre-change folder is `A`.
1059
- Post-change folder is `B`.
1060
- Splits are `train`, `val`, and `test`.
1061
- Batch size is `8`.
1062
- Workers are `4`.
1063
- Evaluation threshold is `0.5`.
1064
-
1065
- ### Dataset Fact 7
1066
- Config `whu_cd` is defined in `configs/datasets/whu_cd.yaml`.
1067
- Root pattern is `${DATA_ROOT}/WHU-CD`.
1068
- Image size is `256`.
1069
- Channels are `3`.
1070
- Mask folder is `OUT`.
1071
- Pre-change folder is `A`.
1072
- Post-change folder is `B`.
1073
- Splits are `train`, `val`, and `test`.
1074
- Batch size is `8`.
1075
- Workers are `4`.
1076
- Evaluation threshold is `0.5`.
1077
-
1078
- ### Dataset Fact 8
1079
- Config `wildfire_s2` is defined in `configs/datasets/wildfire_s2.yaml`.
1080
- Root pattern is `${DATA_ROOT}/WildFireS2`.
1081
- Image size is `256`.
1082
- Channels are `3`.
1083
- Mask folder is `label`.
1084
- Pre-change folder is `A`.
1085
- Post-change folder is `B`.
1086
- Splits are `train`, `val`, and `test`.
1087
- Batch size is `8`.
1088
- Workers are `4`.
1089
- Evaluation threshold is `0.5`.
1090
-
1091
- ## Audit Appendix: Model Config Facts
1092
-
1093
- ### Model Fact 1
1094
- Model `bifa` is registered in `configs/models/registry.yaml`.
1095
- Config path is `configs/models/bifa.yaml`.
1096
- Training script is `train/train_bifa.py`.
1097
- Source path is `BiFA`.
1098
- Framework is `pytorch`.
1099
- Backbone is `MixTransformer`.
1100
- Optimizer is `adam`.
1101
- Learning rate is `0.0001`.
1102
- Epochs are `200`.
1103
- Loss is `ce_dice`.
1104
-
1105
- ### Model Fact 2
1106
- Model `bit_cd` is registered in `configs/models/registry.yaml`.
1107
- Config path is `configs/models/bit_cd.yaml`.
1108
- Training script is `train/train_bit_cd.py`.
1109
- Source path is `BIT_CD`.
1110
- Framework is `pytorch`.
1111
- Backbone is `ResNet-18 + base_transformer_pos_s4_dd8`.
1112
- Optimizer is `sgd`.
1113
- Learning rate is `0.01`.
1114
- Epochs are `200`.
1115
- Loss is `cross_entropy`.
1116
-
1117
- ### Model Fact 3
1118
- Model `cdmamba` is registered in `configs/models/registry.yaml`.
1119
- Config path is `configs/models/cdmamba.yaml`.
1120
- Training script is `train/train_cdmamba.py`.
1121
- Source path is `CDMamba`.
1122
- Framework is `pytorch`.
1123
- Backbone is `Mamba`.
1124
- Optimizer is `adam`.
1125
- Learning rate is `0.0001`.
1126
- Epochs are `200`.
1127
- Loss is `ce_dice`.
1128
-
1129
- ### Model Fact 4
1130
- Model `cgnet` is registered in `configs/models/registry.yaml`.
1131
- Config path is `configs/models/cgnet.yaml`.
1132
- Training script is `train/train_cgnet.py`.
1133
- Source path is `model_repos/CGNet-CD`.
1134
- Framework is `pytorch`.
1135
- Backbone is `null` in YAML and implemented by upstream CGNet.
1136
- Optimizer is `adam`.
1137
- Learning rate is `0.0001`.
1138
- Epochs are `200`.
1139
- Loss is `original_cgnet_loss`.
1140
-
1141
- ### Model Fact 5
1142
- Model `change3d` is registered in `configs/models/registry.yaml`.
1143
- Config path is `configs/models/change3d.yaml`.
1144
- Training script is `train/train_change3d.py`.
1145
- Source path is `Change3D`.
1146
- Framework is `pytorch`.
1147
- Backbone is `X3D-L`.
1148
- Optimizer is `adam`.
1149
- Learning rate is `0.0002`.
1150
- Epochs are `200`.
1151
- Loss is `bce_dice`.
1152
-
1153
- ### Model Fact 6
1154
- Model `changeformer` is registered in `configs/models/registry.yaml`.
1155
- Config path is `configs/models/changeformer.yaml`.
1156
- Training script is `train/train_changeformer.py`.
1157
- Source path is `ChangeFormer`.
1158
- Framework is `pytorch`.
1159
- Backbone is `MiT-b4`.
1160
- Optimizer is `adamw`.
1161
- Learning rate is `0.00006`.
1162
- Epochs are `200`.
1163
- Loss is `cross_entropy`.
1164
-
1165
- ### Model Fact 7
1166
- Model `changemamba` is registered in `configs/models/registry.yaml`.
1167
- Config path is `configs/models/changemamba.yaml`.
1168
- Training script is `train/train_changemamba.py`.
1169
- Source path is `model_repos/ChangeMamba`.
1170
- Framework is `mmsegmentation`.
1171
- Backbone is `VMamba`.
1172
- Optimizer is `adamw`.
1173
- Learning rate is `0.00006`.
1174
- Epochs are `200`.
1175
- Loss is `mmseg_decode_head_loss`.
1176
-
1177
- ### Model Fact 8
1178
- Model `changer` is registered in `configs/models/registry.yaml`.
1179
- Config path is `configs/models/changer.yaml`.
1180
- Training script is `train/train_changer.py`.
1181
- Source path is `model_repos/open-cd`.
1182
- Framework is `mmsegmentation`.
1183
- Backbone is `ResNet-18`.
1184
- Optimizer is `adamw`.
1185
- Learning rate is `0.00006`.
1186
- Epochs are `200`.
1187
- Loss is `mmseg_decode_head_loss`.
1188
-
1189
- ### Model Fact 9
1190
- Model `dsamnet` is registered in `configs/models/registry.yaml`.
1191
- Config path is `configs/models/dsamnet.yaml`.
1192
- Training script is `train/train_dsamnet.py`.
1193
- Source path is `model_repos/DSAMNet`.
1194
- Framework is `pytorch`.
1195
- Backbone is `ResNet`.
1196
- Optimizer is `adam`.
1197
- Learning rate is `0.0001`.
1198
- Epochs are `200`.
1199
- Loss is `contrastive_triplet_bce_original`.
1200
-
1201
- ### Model Fact 10
1202
- Model `dsifn` is registered in `configs/models/registry.yaml`.
1203
- Config path is `configs/models/dsifn.yaml`.
1204
- Training script is `train/train_dsifn.py`.
1205
- Source path is `IFNet`.
1206
- Framework is `pytorch`.
1207
- Backbone is `VGG-16`.
1208
- Optimizer is `adam`.
1209
- Learning rate is `0.0001`.
1210
- Epochs are `200`.
1211
- Loss is `dsifn_original`.
1212
-
1213
- ### Model Fact 11
1214
- Model `elgcnet` is registered in `configs/models/registry.yaml`.
1215
- Config path is `configs/models/elgcnet.yaml`.
1216
- Training script is `train/train_elgcnet.py`.
1217
- Source path is `model_repos/elgcnet`.
1218
- Framework is `pytorch`.
1219
- Backbone is `ResNet-18`.
1220
- Optimizer is `sgd`.
1221
- Learning rate is `0.01`.
1222
- Epochs are `200`.
1223
- Loss is `cross_entropy`.
1224
-
1225
- ### Model Fact 12
1226
- Model `fc_ef` is registered in `configs/models/registry.yaml`.
1227
- Config path is `configs/models/fc_ef.yaml`.
1228
- Training script is `train/train_fc_variants.py`.
1229
- Source path is `model_repos/fully_convolutional_change_detection`.
1230
- Framework is `pytorch`.
1231
- Backbone is `null`.
1232
- Optimizer is `adam`.
1233
- Learning rate is `0.0001`.
1234
- Epochs are `200`.
1235
- Loss is `bce_dice`.
1236
-
1237
- ### Model Fact 13
1238
- Model `fc_siam_conc` is registered in `configs/models/registry.yaml`.
1239
- Config path is `configs/models/fc_siam_conc.yaml`.
1240
- Training script is `train/train_fc_variants.py`.
1241
- Source path is `model_repos/fully_convolutional_change_detection`.
1242
- Framework is `pytorch`.
1243
- Backbone is `null`.
1244
- Optimizer is `adam`.
1245
- Learning rate is `0.0001`.
1246
- Epochs are `200`.
1247
- Loss is `bce_dice`.
1248
-
1249
- ### Model Fact 14
1250
- Model `fc_siam_diff` is registered in `configs/models/registry.yaml`.
1251
- Config path is `configs/models/fc_siam_diff.yaml`.
1252
- Training script is `train/train_fc_variants.py`.
1253
- Source path is `model_repos/fully_convolutional_change_detection`.
1254
- Framework is `pytorch`.
1255
- Backbone is `null`.
1256
- Optimizer is `adam`.
1257
- Learning rate is `0.0001`.
1258
- Epochs are `200`.
1259
- Loss is `bce_dice`.
1260
-
1261
- ### Model Fact 15
1262
- Model `hanet` is registered in `configs/models/registry.yaml`.
1263
- Config path is `configs/models/hanet.yaml`.
1264
- Training script is `train/train_hanet.py`.
1265
- Source path is `model_repos/HANet-CD`.
1266
- Framework is `pytorch`.
1267
- Backbone is `null` in YAML and implemented by upstream HANet.
1268
- Optimizer is `adam`.
1269
- Learning rate is `0.0001`.
1270
- Epochs are `200`.
1271
- Loss is `original_hanet_loss`.
1272
-
1273
- ### Model Fact 16
1274
- Model `ifnet` is registered in `configs/models/registry.yaml`.
1275
- Config path is `configs/models/ifnet.yaml`.
1276
- Training script is `train/train_ifnet.py`.
1277
- Source path is `IFNet`.
1278
- Framework is `pytorch`.
1279
- Backbone is `VGG-16`.
1280
- Optimizer is `adam`.
1281
- Learning rate is `0.0001`.
1282
- Epochs are `200`.
1283
- Loss is `dsifn_cd_loss`.
1284
-
1285
- ### Model Fact 17
1286
- Model `rsm_cd` is registered in `configs/models/registry.yaml`.
1287
- Config path is `configs/models/rsm_cd.yaml`.
1288
- Training script is `train/train_rsm_cd.py`.
1289
- Source path is `RSM-CD/change_detection_mamba`.
1290
- Framework is `pytorch`.
1291
- Backbone is `VMamba/RSM-CD tiny`.
1292
- Optimizer is `adamw`.
1293
- Learning rate is `0.001`.
1294
- Epochs are `200`.
1295
- Loss is `fccdn_loss_without_seg`.
1296
-
1297
- ### Model Fact 18
1298
- Model `schanger` is registered in `configs/models/registry.yaml`.
1299
- Config path is `configs/models/schanger.yaml`.
1300
- Training script is `train/train_schanger.py`.
1301
- Source path is `SChanger`.
1302
- Framework is `pytorch`.
1303
- Backbone is `SChanger-base`.
1304
- Optimizer is `adamw`.
1305
- Learning rate is `0.00006`.
1306
- Epochs are `200`.
1307
- Loss is `bce_deep_supervision`.
1308
-
1309
- ### Model Fact 19
1310
- Model `siam_nestedunet` is registered in `configs/models/registry.yaml`.
1311
- Config path is `configs/models/siam_nestedunet.yaml`.
1312
- Training script is `train/train_siam_nestedunet.py`.
1313
- Source path is `Siam-NestedUNet`.
1314
- Framework is `pytorch`.
1315
- Backbone is `UNet++`.
1316
- Optimizer is `adam`.
1317
- Learning rate is `0.00015`.
1318
- Epochs are `200`.
1319
- Loss is `cross_entropy`.
1320
-
1321
- ### Model Fact 20
1322
- Model `stanet` is registered in `configs/models/registry.yaml`.
1323
- Config path is `configs/models/stanet.yaml`.
1324
- Training script is `train/train_stanet.py`.
1325
- Source path is `STANet`.
1326
- Framework is `pytorch`.
1327
- Backbone is `ResNet-18 + PAM`.
1328
- Optimizer is `adam`.
1329
- Learning rate is `0.001`.
1330
- Epochs are `200`.
1331
- Loss is `bcl_contrastive`.
1332
-
1333
- ### Model Fact 21
1334
- Model `tinycd` is registered in `configs/models/registry.yaml`.
1335
- Config path is `configs/models/tinycd.yaml`.
1336
- Training script is `train/train_tinycd.py`.
1337
- Source path is `model_repos/Tiny_model_4_CD`.
1338
- Framework is `pytorch`.
1339
- Backbone is `EfficientNet-B4`.
1340
- Optimizer is `adamw`.
1341
- Learning rate is `0.0001`.
1342
- Epochs are `200`.
1343
- Loss is `bce_dice`.
1344
-
1345
- ## Audit Appendix: Utility Roles
1346
-
1347
- ### Utility Fact 1
1348
- `utils/config.py` provides generic YAML and JSON loading.
1349
- It also provides `deep_merge`.
1350
- It exposes a simple model registry loader.
1351
- It does not expand `${DATA_ROOT}`.
1352
-
1353
- ### Utility Fact 2
1354
- `utils/config_loader.py` provides the current dataset and model config API.
1355
- It expands `${DATA_ROOT}`.
1356
- It checks `/new-home/buddhiw/Datasets` by default.
1357
- It checks the sibling `mamba-cd/datasets` fallback.
1358
- It attaches `_config_path` and `_dataset_name`.
1359
-
1360
- ### Utility Fact 3
1361
- `utils/dataset_list_generator.py` writes `list/train.txt`, `list/val.txt`, and `list/test.txt`.
1362
- It scans image folders such as `A`, `T1`, `t1`, `img`, `images`, or `image`.
1363
- It is idempotent unless `overwrite=True`.
1364
-
1365
- ### Utility Fact 4
1366
- `utils/env_checker.py` checks imports for torch, torchvision, numpy, Pillow, OpenCV, PyYAML, tqdm, timm, einops, mmengine, mmcv, mmseg, and gdown.
1367
- It prints install hints.
1368
- It does not auto-install packages.
1369
-
1370
- ### Utility Fact 5
1371
- `utils/legacy_config_writer.py` prepares list-based generated views for legacy trainers.
1372
- It writes generated JSON configs for BiFA and CDMamba.
1373
- It converts `0/1` masks to lossless `0/255` PNG data where needed.
1374
-
1375
- ### Utility Fact 6
1376
- `utils/metrics.py` implements binary metrics.
1377
- It supports class-logit tensors.
1378
- It supports thresholded probability maps.
1379
- It returns F1, IoU, OA, precision, recall, kappa, and confusion counts.
1380
-
1381
- ### Utility Fact 7
1382
- `utils/results.py` writes JSON and append-only CSV-like result files.
1383
- It adds a UTC timestamp when appending a result row.
1384
-
1385
- ### Utility Fact 8
1386
- `utils/results_writer.py` writes `metrics_<split>.json`.
1387
- It scans `results/*/*/metrics_test.json`.
1388
- It regenerates `results/comparison_table.csv`.
1389
-
1390
- ### Utility Fact 9
1391
- `utils/weight_downloader.py` manages VMamba Zenodo/GDrive downloads.
1392
- It warms timm models.
1393
- It warms torchvision models.
1394
- It logs downloads to `results/download_log.jsonl`.
1395
-
1396
- ## Audit Appendix: Wrapper Modes
1397
-
1398
- ### Wrapper Fact 1
1399
- `bifa` uses the shared wrapper and launches `BiFA/train_cd.py` for non-default datasets.
1400
- It writes generated JSON through `utils/legacy_config_writer.py`.
1401
- It is subprocess mode.
1402
-
1403
- ### Wrapper Fact 2
1404
- `bit_cd` uses the shared wrapper and launches `BIT_CD/main_cd.py`.
1405
- It uses generated legacy list views for non-default datasets.
1406
- It is subprocess mode.
1407
-
1408
- ### Wrapper Fact 3
1409
- `cdmamba` uses the shared wrapper and launches `CDMamba/train_cd.py`.
1410
- It writes generated JSON through `utils/legacy_config_writer.py`.
1411
- It is subprocess mode.
1412
-
1413
- ### Wrapper Fact 4
1414
- `changeformer` uses the shared wrapper and launches `ChangeFormer/main_cd.py`.
1415
- It uses generated legacy list views.
1416
- It is subprocess mode.
1417
-
1418
- ### Wrapper Fact 5
1419
- `dsamnet` launches `model_repos/DSAMNet/train.py`.
1420
- It passes direct train and validation folder paths.
1421
- It warms torchvision ResNet weights before training.
1422
- It is subprocess mode.
1423
-
1424
- ### Wrapper Fact 6
1425
- `cgnet` launches `model_repos/CGNet-CD/train_CGNet.py`.
1426
- It builds matched split views under `generated_dataset_views/`.
1427
- It warms torchvision ResNet-50 weights before training.
1428
- It is subprocess mode.
1429
-
1430
- ### Wrapper Fact 7
1431
- `hanet` launches `model_repos/HANet-CD/trainHCX.py`.
1432
- It writes a generated metadata JSON.
1433
- It builds matched split views under `generated_dataset_views/`.
1434
- It is subprocess mode.
1435
-
1436
- ### Wrapper Fact 8
1437
- `tinycd` launches `model_repos/Tiny_model_4_CD/training.py`.
1438
- It builds TinyCD list views.
1439
- It warms timm EfficientNet-B4.
1440
- It is subprocess mode.
1441
-
1442
- ### Wrapper Fact 9
1443
- `changer` launches `model_repos/open-cd/tools/train.py`.
1444
- It writes an Open-CD config under `generated_configs/`.
1445
- It requires mmengine, mmcv, and mmsegmentation.
1446
- It is subprocess mode.
1447
-
1448
- ### Wrapper Fact 10
1449
- `changemamba` launches `model_repos/ChangeMamba/changedetection/script/train_MambaBCD.py`.
1450
- It builds ChangeMamba `T1`, `T2`, and `GT` views.
1451
- It uses VMamba-Tiny weights from Zenodo record `14037770`.
1452
- It is subprocess mode.
1453
-
1454
- ### Wrapper Fact 11
1455
- `fc_ef`, `fc_siam_conc`, and `fc_siam_diff` use `train/fc_adapter.py`.
1456
- They train directly in this repository process.
1457
- They use `datasets/cd_dataset.py`.
1458
- They save validation metrics to `results/<model>/<dataset>/metrics_val.json`.
1459
-
1460
- ### Wrapper Fact 12
1461
- `run_training.py` skips missing dataset roots before launching wrappers.
1462
- It skips completed model-dataset pairs when `metrics_test.json` exists.
1463
- It supports `--dry-run`, `--resume`, `--eval-only`, `--gpu`, and `--force`.
1464
-
1465
- ### Wrapper Fact 13
1466
- `evaluate.py` can resolve datasets and checkpoints.
1467
- It regenerates the comparison CSV.
1468
- It still needs architecture-specific model loaders.
1469
-
1470
- ## Audit Appendix: Clone Status
1471
-
1472
- ### Cloned External Repositories
1473
- `model_repos/CGNet-CD` exists.
1474
- `model_repos/ChangeMamba` exists.
1475
- `model_repos/DSAMNet` exists.
1476
- `model_repos/HANet-CD` exists.
1477
- `model_repos/TinyCD` exists.
1478
- `model_repos/Tiny_model_4_CD` exists.
1479
- `model_repos/elgcnet` exists.
1480
- `model_repos/fully_convolutional_change_detection` exists.
1481
- `model_repos/open-cd` exists.
1482
-
1483
- ### Root-Level Model Repositories
1484
- `BIT_CD` exists.
1485
- `BiFA` exists.
1486
- `CDMamba` exists.
1487
- `Change3D` exists.
1488
- `ChangeFormer` exists.
1489
- `IFNet` exists.
1490
- `RSM-CD` exists.
1491
- `SChanger` exists.
1492
- `Siam-NestedUNet` exists.
1493
- `STANet` exists.
1494
-
1495
- ### Missing or Unconfirmed Clone Targets
1496
- `model_repos/DSIFN` is not present.
1497
- The official DSIFN URL for that exact clone target was not confirmed from audited files.
1498
- `setup.py` therefore does not guess it.
1499
- `SChanger` has a root-level copy, but the setup script marks its clone URL as unconfirmed.
1500
-
1501
- ## Audit Appendix: Command Reference
1502
 
1503
  ### Setup Commands
1504
  `python setup.py`
@@ -1534,22 +1017,6 @@ Fetches managed pretrained weights.
1534
  `python utils/weight_downloader.py --list`
1535
  Lists managed VMamba weight files.
1536
 
1537
- ## Audit Appendix: Result Provenance
1538
-
1539
- ### Current Result State
1540
- No `metrics_test.json` files were found during the audit.
1541
- `results/comparison_table.csv` contains only a header row.
1542
- Fresh benchmark numbers must therefore be produced by new training and evaluation runs.
1543
-
1544
- ### Historical Result State
1545
- The old README contained WildFire-S2 checkpoint numbers for `change3d`, `bit_cd`, `changeformer`, and `stanet`.
1546
- Those numbers remain in this README only with a dagger marker.
1547
- They are not presented as current unified-harness results.
1548
-
1549
- ### Reporting Rule
1550
- A number in the Results section must come from either `metrics_test.json` or a daggered historical note.
1551
- Unknown values are shown as `—`.
1552
- Empty cells are avoided.
1553
 
1554
  ## Audit Appendix: Environment Snapshot
1555
 
 
982
  - [timm](https://github.com/huggingface/pytorch-image-models) for pretrained backbone weights.
983
  - University of Peradeniya for computational resources.
984
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
985
 
986
  ### Setup Commands
987
  `python setup.py`
 
1017
  `python utils/weight_downloader.py --list`
1018
  Lists managed VMamba weight files.
1019
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1020
 
1021
  ## Audit Appendix: Environment Snapshot
1022