# Skeleton Anomaly Detection Eval

> Probes a model's ability to detect abnormal events in pedestrian videos by analyzing skeleton sequences. It measures how well the model distinguishes normal from anomalous motion patterns through reconstruction or prediction errors, evaluated via frame-level anomaly scoring. Use when the user wants to benchmark on Avenue, HR-Avenue, HR-STC, UBnormal, HR-UBnormal, or asks about evaluating this task. Reports AUC.

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

---


# skeleton-anomaly-detection-eval

> Frequency-Guided Diffusion Model with Perturbation Training for Skeleton-Based Video Anomaly Detection — Xiaofeng Tan et al. (arXiv:2412.03044, 2024)

## What this evaluates

Probes a model's ability to detect abnormal events in pedestrian videos by analyzing skeleton sequences. It measures how well the model distinguishes normal from anomalous motion patterns through reconstruction or prediction errors, evaluated via frame-level anomaly scoring.

## Datasets

- **Avenue** — total 30000; splits: train (16), test (21)
- **HR-Avenue** — total ?; splits: train (-1), test (-1)
- **HR-STC** — total 270000; splits: train (330), test (107)
- **UBnormal** — total 236902; splits: train (116087), val (28175), test (92640)
- **HR-UBnormal** — total ?; splits: train (-1), test (-1)

## Metrics

- `AUC` **(primary)** — range: [0, 1]
  - Area Under the Receiver Operating Characteristic (ROC) curve. Computed by varying the threshold on the aggregated anomaly scores against ground-truth anomaly labels to plot True Positive Rate vs False Positive Rate.

## Input / output format

**Input**: Skeleton sequences (keypoint coordinates over time) extracted from video frames.

**Output**: Frame-level anomaly scores, aggregated and smoothed per video/clip.

## Scoring recipe

```python
def compute_auc(predictions, labels):
    # predictions: smoothed anomaly scores per frame
    # labels: binary ground-truth anomaly masks per frame
    fpr, tpr, _ = roc_curve(labels, predictions)
    return auc(fpr, tpr)
```

## Common pitfalls

- Forgetting to apply the post-processing aggregation and smoothing steps to raw anomaly scores before computing AUC.
- Evaluating on full Avenue/UBnormal instead of the HR variants when comparing to methods that specifically filter non-human anomalies.
- Using pixel-space reconstruction error instead of skeleton-space error, which violates the modality constraint of the benchmark.

## Evidence (verbatim from paper)

> We evaluated our approach on five video anomaly detection benchmarks: Avenue, HR-Avenue, HR-STC, UBnormal, and HR-UBnormal. ... Following prior work[[30]], we adopt the Area Under the Curve (AUC) as the evaluation metric. The higher AUC values indicate superior anomaly detection performance.

## Citation

```bibtex
@misc{tan2024frequencyguided,
  title={Frequency-Guided Diffusion Model with Perturbation Training for Skeleton-Based Video Anomaly Detection},
  author={Xiaofeng Tan et al.},
  year={2024},
  note={arXiv:2412.03044}
}
```

- arXiv: 2412.03044

