optical-flow-epe-eval
OAS-Net: Occlusion Aware Sampling Network for Accurate Optical Flow — Kong et al. (2021) (arXiv:2102.00364, 2021)
What this evaluates
Evaluates the accuracy of predicted optical flow fields against ground truth displacements between consecutive video frames. It probes a model's ability to handle occlusions, non-rigid motion, and large displacements in both synthetic and real-world driving scenarios.
Datasets
- Sintel — total ?; splits: train (-1), test (-1), clean (-1), final (-1)
- KITTI 2012 — total ?; splits: train (-1), test (-1)
Metrics
end point error(primary) — range: other (pixels)- Computes the L2 distance between the predicted flow vector and the ground truth flow vector for each pixel, then averages over all valid pixels. Lower values indicate better accuracy.
Input / output format
Input: Pairs of consecutive frames (images) from a video sequence.
Output: A 2D optical flow field (H × W × 2 displacement map) and an occlusion awareness map (H × W).
Scoring recipe
def compute_epe(pred_flow, gt_flow, valid_mask=None):
diff = pred_flow - gt_flow
epe_per_pixel = torch.sqrt(torch.sum(diff**2, dim=-1))
if valid_mask is not None:
epe_per_pixel = epe_per_pixel[valid_mask]
return epe_per_pixel.mean().item()
Common pitfalls
- EPE is a lower-is-better metric; confusing it with accuracy (higher-is-better) leads to incorrect model selection.
- Sintel has 'Clean' and 'Final' test splits with different noise levels and motion characteristics; results must be reported separately.
- KITTI 2012 and KITTI 2015 use different training/test splits and evaluation protocols; mixing them invalidates comparisons.
Evidence (verbatim from paper)
Optical flow accuracy is measured by end point error.
Citation
@misc{kong2021oasnet,
title={OAS-Net: Occlusion Aware Sampling Network for Accurate Optical Flow},
author={Kong et al. (2021)},
year={2021},
note={arXiv:2102.00364}
}
- arXiv: 2102.00364