视频安全性检测
更新时间:2026-05-18
视频安全性检测
简介
视频安全性检测算子基于 Transformers 模型实现,用于检测视频中是否存在不适宜在工作场所观看的内容。
功能描述
对视频内容进行安全性检测,通过采样视频帧并使用图像分类模型进行推理,返回安全性分数。支持多种视频输入方式和采样模式。分数越高表示内容越可能不适宜公开播放。
算子参数
输入
| 输入 | 含义 |
|---|---|
| videos | 视频路径/Base64/二进制列表 |
输出
| 输出 | 含义 |
|---|---|
| score | 安全性检测分数(0-1 之间,1 表示高风险) |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| video_src_type | str | "video_url" | 视频输入类型 |
| model_path | str | "/opt/aihc/models" | 模型路径 |
| model_name | str | "Falconsai/nsfw_image_detection" | 模型名称 |
| dtype | str | "float16" | 数据类型 |
| sample_mode | str | "by_count_uniform" | 采样模式 |
| start_time_sec | float | 0.0 | 起始时间(秒) |
| end_time_sec | float | None | 结束时间(秒) |
| count_k | int | None | 采样帧数 |
| interval_sec | float | None | 采样间隔(秒) |
| interval_frames | int | None | 帧间隔 |
| target_fps | float | None | 目标帧率 |
| timestamps_sec | list[float] | None | 指定时间戳列表 |
| max_frames | int | None | 最大采样帧数 |
| reduce_mode | str | "avg" | 结果聚合模式(avg/max/min) |
| video_format | str | "mp4" | 视频格式 |
| batch_size | int | 16 | 批处理大小 |
| rank | int | 0 | GPU 设备编号 |
视频输入类型
| 类型 | 说明 |
|---|---|
| video_url | 视频 URL 路径 |
| video_base64 | Base64 编码的视频数据 |
| video_binary | 二进制视频数据 |
采样模式
| 模式 | 说明 |
|---|---|
| by_count_uniform | 等间隔均匀采样指定帧数 |
| by_interval_time | 按时间间隔采样 |
| by_interval_frames | 按帧间隔采样 |
| by_fps | 按指定 FPS 采样 |
| by_timestamps | 按指定时间戳采样 |
结果聚合模式
| 模式 | 说明 |
|---|---|
| avg | 取平均值 |
| max | 取最大值 |
| min | 取最小值 |
调用示例
Plain Text
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.video_nsfw_detect import VideoNsfwDetect
10
11if __name__ == "__main__":
12 if os.getenv("DAFT_RUNNER", "native") == "ray":
13 import ray
14 ray.init(dashboard_host="0.0.0.0", ignore_reinit_error=True)
15 daft.set_runner_ray()
16 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
17
18 samples = {
19 "video_path": ["/tmp/test_video.mp4", "/tmp/test_video2.mp4"]
20 }
21 ds = daft.from_pydict(samples)
22
23 constructor_kwargs = {
24 "video_src_type": "video_url",
25 "sample_mode": "by_count_uniform",
26 "count_k": 5,
27 "reduce_mode": "avg",
28 }
29 ds = ds.with_column(
30 "safety_score",
31 aihc_udf(
32 VideoNsfwDetect,
33 construct_args=constructor_kwargs,
34 num_cpus=2,
35 concurrency=2,
36 use_gpu=True,
37 )(col("video_path")),
38 )
39 ds.show()
评价此篇文章
