# Change Detection Eval

> Evaluates a model's ability to detect semantic building changes between two temporally separated remote sensing images. It probes robustness to weak temporal supervision, label noise, and out-of-domain generalization in large-scale urban environments. Use when the user wants to benchmark on b-FLAIR-test, b-FLAIR-test-spot, LEVIR-CD, WHUCD, S2Looking, or asks about evaluating this task. Reports F1-score (F1), Intersection over Union (IoU).

- Skill: `qhjqhj00/change-detection-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/change-detection-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/change-detection-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/change-detection-eval

---


# change-detection-eval

> Remote Sensing Change Detection via Weak Temporal Supervision — Bou et al. (arXiv:2601.02126, 2026)

## What this evaluates

Evaluates a model's ability to detect semantic building changes between two temporally separated remote sensing images. It probes robustness to weak temporal supervision, label noise, and out-of-domain generalization in large-scale urban environments.

## Datasets

- **b-FLAIR-test** — total ?; splits: test (-1)
- **b-FLAIR-test-spot** — total ?; splits: test (-1)
- **LEVIR-CD** — total ?; splits: test (-1)
- **WHUCD** — total ?; splits: test (-1)
- **S2Looking** — total ?; splits: test (-1)

## Metrics

- `F1-score (F1)` **(primary)** — range: percent
  - Harmonic mean of precision and recall. F1 = 2TP / (2TP + FP + FN). Reported as a percentage.
- `Intersection over Union (IoU)` **(primary)** — range: percent
  - Ratio of the intersection to the union of predicted and ground truth change masks. IoU = TP / (TP + FP + FN). Reported as a percentage.
- `False Positive Rate (FPR)` — range: [0, 1]
  - Ratio of false positives to the total number of actual negative (unchanged) pixels. FPR = FP / (FP + TN).
- `Connected components count & size` — range: other
  - Number of pixel-connected components in the binary change map and their average area in square meters. Used to evaluate false alarms.

## Input / output format

**Input**: Bi-temporal remote sensing image pairs (I_t, I_t') captured at different times.

**Output**: Binary building change map indicating changed vs. unchanged pixels.

## Scoring recipe

```python
def compute_metrics(pred, gt):
    tp = np.sum((pred == 1) & (gt == 1))
    fp = np.sum((pred == 1) & (gt == 0))
    fn = np.sum((pred == 0) & (gt == 1))
    tn = np.sum((pred == 0) & (gt == 0))
    f1 = 2 * tp / (2 * tp + fp + fn) if (2 * tp + fp + fn) > 0 else 0.0
    iou = tp / (tp + fp + fn) if (tp + fp + fn) > 0 else 0.0
    fpr = fp / (fp + tn) if (fp + tn) > 0 else 0.0
    num_objs, avg_size = count_components(pred)
    return {'F1': f1, 'IoU': iou, 'FPR': fpr, 'Num_objs': num_objs, 'Avg_size': avg_size}
```

## Common pitfalls

- Temporal augmentation can introduce minor misalignments, causing dilated predictions and smoother boundaries that artificially lower IoU and F1 scores.
- The model's strong bias toward the no-change class means false negatives penalize IoU and F1 more heavily than false positives, skewing standard metrics.
- Component-level evaluation treats small isolated noise pixels equally to large false detections, though the latter are significantly harder to remove via simple post-processing like median filtering.

## Evidence (verbatim from paper)

> We adopt F1-score (F1) and intersection over union (IoU) as evaluation metrics for building change detection. These scores are reported as percentages. We also report the false positive rates (FPR), and the number and size of connected components to evaluate false alarms.

## Citation

```bibtex
@misc{bou2026remotesensing,
  title={Remote Sensing Change Detection via Weak Temporal Supervision},
  author={Bou et al.},
  year={2026},
  note={arXiv:2601.02126}
}
```

- arXiv: 2601.02126

