视频区域修复
更新时间:2026-06-15
简介
视频区域修复
功能描述
- 智能修复:基于STTN时空记忆网络进行视频内容修复(去除水印、字幕等外来内容),支持设置默认修复区域
- 多区域支持:支持同时修复一个、多个指定区域或全屏处理
- 音频保留:视频修复不影响原始音频
- GPU加速:支持CUDA加速提升处理效率
- 多输入支持:支持路径输入和二进制输入
- 适用性强:支持音视频流不对齐场景
- 建议处理分辨率不超过1080p的视频
- 修复区域越小处理速度越快
- 长视频建议预先分段处理
- 时空一致性:保证修复区域的时间连续性
- 格式兼容:输出标准MP4格式视频
算子参数
输入
| 输入 | 含义 |
|---|---|
| video_paths | 视频文件路径列(本地、BOS、HTTP等),与video_binaries二选一 |
| video_binaries | 视频二进制数据列,与video_paths二选一 |
| video_formats | 视频格式字符串列,配合video_binaries使用 |
| inpaint_areas | 修复区域坐标列,List |
| output_basenames | 输出文件基础名称列(不含扩展名) 若为None则使用原文件名加"_inpainted"后缀 |
输出
| 输出 | 含义 |
|---|---|
| output_path | 修复后视频的BOS存储路径; |
| processed_frames | 实际处理的视频帧数; |
| processed_resolution | 处理后视频的分辨率[width, height] |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| output_tos_dir | str | 必填 | BOS输出目录(必需) 修复后视频的BOS存储路径 格式:"bos://bucket/path" |
| model_path | str | '/opt/aihc/models' | 模型存储路径 默认值:"/opt/aihc/models" |
| model_name | str | 'researchmm/STTN' | 模型名称 默认值:"researchmm/STTN" |
| neighbor_stride | int | 5 | 相邻帧步长 选择参考帧的间隔距离 较小值(3-5)适合慢动作视频,较大值(8-10)适合快动作视频 默认值:5 |
| reference_length | int | 10 | 参考帧数量 用于修复当前帧的参考帧总数 提供时序上下文信息,值越大修复质量越好但计算量增加 默认值:10 |
| max_load_num | int | 50 | 最大加载帧数 每次处理时最多同时加载到内存的视频帧数量 控制内存使用,避免长视频导致内存溢出 约束:max_load_num >= reference_length * neighbor_stride 默认值:50 |
| is_keep_audio | bool | True | 是否保留音频 修复视频时是否保留原始音频 默认值:True |
| is_set_default_inpaint_areas | bool | False | 是否设置默认修复区域 是否根据输入参数默认设置修复区域为画面最下方30% 默认值:False |
| rank | int | None | GPU设备编号 指定使用的GPU设备ID(多卡环境生效) None表示自动选择可用GPU 默认值: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.video_sttn_inpaint import VideoSttnInpaint
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 # TODO: 根据实际场景准备样本数据
19 samples = {
20 "video_paths": ["bos://bucket/test/aihc/test_data/test_video.mp4"],
21 }
22 ds = daft.from_pydict(samples)
23 constructor_kwargs = {
24 "model_path": '/opt/aihc/models',
25 "model_name": 'researchmm/STTN',
26 "neighbor_stride": 5,
27 "reference_length": 10,
28 }
29 ds = ds.with_column(
30 "result",
31 aihc_udf(
32 VideoSttnInpaint,
33 construct_args=constructor_kwargs,
34 num_cpus=1,
35 concurrency=4,
36 batch_size=8,
37 )(col("video_paths"), col("video_binaries"), col("video_formats")),
38 )
39 ds.show()
评价此篇文章
