37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
import torch
|
|
|
|
from fastvideo.eval.evaluator import create_evaluator
|
|
from fastvideo.eval.types import MetricResult
|
|
|
|
|
|
def evaluate(
|
|
generated: torch.Tensor | str | Path,
|
|
reference: torch.Tensor | str | Path | None = None,
|
|
metrics: list[str] | str = "all",
|
|
device: str = "cuda",
|
|
**kwargs,
|
|
) -> dict[str, MetricResult] | list[dict[str, MetricResult]]:
|
|
"""One-shot evaluation. For repeated use, prefer :func:`create_evaluator`.
|
|
|
|
Parameters
|
|
----------
|
|
generated : Tensor | str | Path
|
|
Generated video. Either a pre-loaded ``(T, C, H, W)`` tensor or a
|
|
path to an mp4/avi/etc. — paths are decoded by the worker.
|
|
reference : Tensor | str | Path | None
|
|
Reference video (same accepted shapes as *generated*).
|
|
metrics : list[str] | str
|
|
Metric names, or ``"all"``.
|
|
device : str
|
|
PyTorch device string.
|
|
"""
|
|
ev = create_evaluator(metrics=metrics, device=device)
|
|
kw: dict = {"video": generated, **kwargs}
|
|
if reference is not None:
|
|
kw["reference"] = reference
|
|
return ev.evaluate(**kw)
|