视频美学评分(DOVER)
更新时间:2026-07-29
简介
DOVER 视频美学质量评分算子,复用 DOVER 官方美学分支(aesthetic branch),对输入视频输出 0-9 分的美学质量分数。用于 SILA §5 步骤 ④ 视频美学质量过滤。
功能描述
• 从视频中按 num_clips × num_frames_per_clip 均匀采样帧,送入 DOVER 美学分支推理。
• 输出 pa.float32() 0-9 分(DOVER 原生 0-1 输出经 sigmoid 标准化后线性映射到 0-9,对齐 SILA 论文口径)。
• 支持 GPU/CPU 自动选择,支持 float16/bfloat16/float32 多种精度。
• 权重需预置于 {model_path}/{model_name},不自动下载;单行推理失败时按 fail_on_error 决定抛异常或返回 None。
算子参数
输入
| 输入 | 含义 |
|---|---|
| videos | 视频(URL/base64/binary,由 video_src_type 决定),单个输入列 |
输出
| 输出 | 含义 |
|---|---|
| result | pa.float32(),视频美学质量分数,取值 0-9;失败为 None |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| video_src_type | str | "video_url" | 视频输入类型,可选 "video_url"/"video_base64"/"video_binary" |
| model_path | str | "/opt/aihc/models" | DOVER 权重根目录 |
| model_name | str | "dover/dover-aesthetic" | DOVER 美学分支权重子目录(相对 model_path) |
| num_clips | int | 1 | 采样 clip 数(对齐 DOVER 默认 1×32) |
| num_frames_per_clip | int | 32 | 每个 clip 采样的帧数 |
| dtype | str | "float32" | 推理精度,可选 "float16"/"bfloat16"/"float32" |
| rank | int | 0 | 多卡 rank |
| fail_on_error | bool | False | 单行出错是否立即抛异常,默认 False 返回 None |
调用示例
Python
1from __future__ import annotations
2
3import os
4
5import daft
6from daft import col
7
8from daft.aihc.common.udf import aihc_udf
9from daft.aihc.functions.video.dover_video_aesthetic import DOVERVideoAesthetic
10
11VIDEO = "bos://your-bucket/sample.mp4" # MOCK
12MODEL_PATH = "/opt/aihc/models" # MOCK
13
14os.environ.setdefault("BOS_ENDPOINT", "http://bj.bcebos.com")
15os.environ.setdefault("BOS_REGION", "bj")
16
17if __name__ == "__main__":
18 if os.getenv("DAFT_RUNNER", "native") == "ray":
19 import ray
20
21 ray.init(ignore_reinit_error=True)
22 daft.set_runner_ray()
23 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
24
25 samples = {"video": [VIDEO]}
26 ds = daft.from_pydict(samples)
27 ds = ds.with_column(
28 "result",
29 aihc_udf(
30 DOVERVideoAesthetic,
31 construct_args={
32 "video_src_type": "video_url",
33 "model_path": MODEL_PATH,
34 "model_name": "dover/dover-aesthetic",
35 "num_clips": 1,
36 "num_frames_per_clip": 32,
37 },
38 num_cpus=1,
39 num_gpus=1,
40 concurrency=1,
41 batch_size=1,
42 )(col("video")),
43 )
44 ds.show()
评价此篇文章
