# Dpflow Eval

> Evaluates optical flow estimation models on standard and high-resolution benchmarks to measure accuracy, generalization across input sizes, and robustness to resolution scaling without tiling. It tests how well adaptive pyramid architectures maintain prediction stability when input dimensions increase from 1K to 8K. Use when the user wants to benchmark on Spring, Middlebury-ST, VIPER, Kubric-NK, MPI-Sintel, KITTI 2015, or asks about evaluating this task. Reports EPE.

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

---


# dpflow-eval

> DPFlow: Adaptive Optical Flow Estimation with a Dual-Pyramid Framework — Morimitsu et al. (2025) (arXiv:2503.14880, 2025)

## What this evaluates

Evaluates optical flow estimation models on standard and high-resolution benchmarks to measure accuracy, generalization across input sizes, and robustness to resolution scaling without tiling. It tests how well adaptive pyramid architectures maintain prediction stability when input dimensions increase from 1K to 8K.

## Datasets

- **Spring** — total 8923; splits: train (4963), test (3960)
- **Middlebury-ST** — total 23; splits: train (23)
- **VIPER** — total 4954; splits: train (4954)
- **Kubric-NK** — total 2400; splits: test (2400)
- **MPI-Sintel** — total ?; splits: test (-1)
- **KITTI 2015** — total ?; splits: test (-1)

## Metrics

- `EPE` **(primary)** — range: other
  - Average Euclidean distance between predicted and ground truth flow vectors across all pixels. Lower is better.
- `1px` — range: percent
  - Percentage of pixels with endpoint error strictly less than 1 pixel. Higher is better.
- `Fl-All` — range: percent
  - Percentage of pixels with endpoint error greater than 3 pixels or relative error greater than 5%. Lower is better.
- `WAUC` — range: percent
  - Weighted Area Under the Curve of the error distribution, specific to the VIPER benchmark. Higher is better.

## Input / output format

**Input**: Paired consecutive frames (images) representing two time steps.

**Output**: 2-channel optical flow field (horizontal and vertical displacement maps) matching the input resolution.

## Scoring recipe

```python
def compute_metrics(pred_flow, gt_flow):
    # pred_flow, gt_flow: (H, W, 2) tensors
    err = torch.sqrt(torch.sum((pred_flow - gt_flow) ** 2, dim=-1))
    epe = err.mean().item()
    px1 = (err < 1.0).float().mean().item() * 100
    fl_all = ((err > 3.0) | (err / (gt_flow.norm(dim=-1) + 1e-5) > 0.05)).float().mean().item() * 100
    wauc = compute_viper_wauc(err) # VIPER-specific weighted curve
    return {'EPE': epe, '1px': px1, 'Fl-All': fl_all, 'WAUC': wauc}
```

## Common pitfalls

- High-resolution inputs often cause memory overflow, forcing tiling which loses global context and introduces boundary artifacts.
- Flow magnitude scales with resolution, causing naive models to show exponential error degradation at 4K/8K.
- Checkpoint selection is dataset-specific; using a single checkpoint across all benchmarks yields suboptimal results.
- WAUC and 1px metrics require specific error thresholding or weighting curves not covered by standard EPE.

## Evidence (verbatim from paper)

> We evaluate the results on each dataset using their official metrics. MPI-Sintel, Middlebury-ST, and Kubric-NK adopt the End-Point-Error (EPE). Spring is evaluated with the 1-pixel (1px) metric, KITTI 2015 uses the Fl-All metric, while VIPER*[[42]]* uses their proposed WAUC metric.

## Citation

```bibtex
@misc{morimitsu2025dpflow,
  title={DPFlow: Adaptive Optical Flow Estimation with a Dual-Pyramid Framework},
  author={Morimitsu et al. (2025)},
  year={2025},
  note={arXiv:2503.14880}
}
```

- arXiv: 2503.14880

