# Forgery Localization Eval

> Evaluates pixel-level localization accuracy for detecting AI-generated and traditionally tampered image forgeries. It probes a model's ability to distinguish manipulated regions from authentic content by measuring spatial overlap and detection trade-offs against ground-truth masks. Use when the user wants to benchmark on OpenSDID, GIT10K, CocoGlide, Inpaint32K, IMD2020, NIST16, CASIA, or asks about evaluating this task. Reports F1-score.

- Skill: `qhjqhj00/forgery-localization-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/forgery-localization-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/forgery-localization-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/forgery-localization-eval

---


# forgery-localization-eval

> Detecting AI-Generated Forgeries via Iterative Manifold Deviation Amplification — Jiangling Zhang et al. (2026) (arXiv:2602.18842, 2026)

## What this evaluates

Evaluates pixel-level localization accuracy for detecting AI-generated and traditionally tampered image forgeries. It probes a model's ability to distinguish manipulated regions from authentic content by measuring spatial overlap and detection trade-offs against ground-truth masks.

## Datasets

- **OpenSDID** — total ?; splits: train (-1), test (-1)
- **GIT10K** — total 10000; splits: test (-1)
- **CocoGlide** — total ?; splits: test (-1)
- **Inpaint32K** — total ?; splits: test (-1)
- **IMD2020** — total 2010; splits: test (-1)
- **NIST16** — total ?; splits: test (-1)
- **CASIA** — total ?; splits: test (-1)

## Metrics

- `F1-score` **(primary)** — range: [0, 1]
  - Harmonic mean of precision and recall: 2 * (precision * recall) / (precision + recall). Reflects the trade-off between detection precision and recall.
- `IoU` — range: [0, 1]
  - Intersection over Union: |predicted_mask ∩ ground_truth_mask| / |predicted_mask ∪ ground_truth_mask|. Quantifies spatial overlap between predicted and ground-truth masks.

## Input / output format

**Input**: RGB images resized to 512×512 pixels. The model processes a dual-stream input combining the original image and MAE reconstruction residuals.

**Output**: Pixel-level binary/soft masks indicating the spatial location of manipulated/forged regions.

## Scoring recipe

```python
def compute_metrics(pred_mask, gt_mask):
    pred = (pred_mask > 0.5).astype(bool)
    gt = (gt_mask > 0.5).astype(bool)
    intersection = np.logical_and(pred, gt).sum()
    union = np.logical_or(pred, gt).sum()
    iou = intersection / union if union > 0 else 0.0
    tp = intersection
    fp = pred.sum() - tp
    fn = gt.sum() - tp
    precision = tp / (tp + fp) if (tp + fp) > 0 else 0.0
    recall = tp / (tp + fn) if (tp + fn) > 0 else 0.0
    f1 = 2 * precision * recall / (precision + recall) if (precision + recall) > 0 else 0.0
    return iou, f1
```

## Common pitfalls

- Models are pretrained on OpenSDID and fine-tuned per dataset, so reported scores reflect fine-tuned performance rather than zero-shot generalization.
- All inputs are resized to 512×512, which may artificially inflate or deflate IoU/F1 on high-resolution benchmarks like NIST16 compared to native-resolution evaluation.
- Metrics are averaged across datasets in the paper (GIT-AVG, TT-AVG), but individual dataset performance varies significantly due to differing manipulation types and mask complexities.

## Evidence (verbatim from paper)

> Following common practice, we report F1-score and Intersection-over-Union (IoU). F1 reflects the trade-off between precision and recall, indicating the overall detection capability, while IoU quantifies the spatial overlap between the predicted and ground-truth masks, highlighting localization accuracy.

## Citation

```bibtex
@misc{zhang2026detecting,
  title={Detecting AI-Generated Forgeries via Iterative Manifold Deviation Amplification},
  author={Jiangling Zhang et al. (2026)},
  year={2026},
  note={arXiv:2602.18842}
}
```

- arXiv: 2602.18842

