深度估计:平面视频隐藏的那条轴

视频是平面的,所以正对镜头或远离镜头的运动在屏幕上几乎看不出位移。Funscript 深度估计填补了这一空白:AutoScript Sync 在你的电脑上运行 MiDaS 模型,估计画面各部分的远近,并跟踪运动区域中远近的变化。其结果是又一个候选位置信号。深度是可选的,脚本仍然以光流为基础构建。

已于 2026 年 9 月 21 日对照应用代码核实。

为什么深度很重要

光流测量的是物体在画面中的移动:上、下、左、右。当行程沿镜头的视线方向进行时(例如 POV 画面),运动的物体主要是变大变小,而不是在画面中横向移动。光流几乎看不到这种变化。深度模型把同样的帧读作远和近,因此沿该轴的行程会表现为深度的变化。

Across-the-frame motion versus motion toward the camera Left: a stroke across the frame moves a long way on screen, which optical flow measures. Right: a stroke toward the camera barely moves on screen but changes depth, which the depth model measures. Across the frame Toward the camera Large on-screen shift: flow reads it Grows, barely moves: depth reads it Dashed: position at the start of a stroke. Teal: position at the end.
同样的行程长度,可能在画面上是一次很长的移动,也可能几乎没有移动,这取决于它相对于镜头的方向。

使用哪个 MiDaS 模型

AutoScript Sync 使用 ONNX 格式的 MiDaS v2.1 深度模型。它们给出的是相对深度,即同一画面中的较近和较远,而不是以厘米计的距离。

MiDaS 深度模型及各自的使用场合
模型大小使用场合
MiDaS small约 64 MBFast 和 Balanced,以及 CPU 上的所有档位。默认下载的模型。
MiDaS large~397 MBHigh,仅在 CUDA GPU 上,且需你已下载。建议使用 GPU。

该选择由 Auto-pick model tier from Accuracy 决定,它默认开启,且只能选择已经安装的模型。引擎接受你指定的任何相对深度 ONNX 模型,但应用只提供 MiDaS 的下载。

深度如何成为信号

深度每隔一个采样帧推理一次,在 320 px 宽的分析图像上进行,并在追踪区域内实际运动的像素上取平均。结果与区域中心和姿态关键点一起,作为位置轨迹的候选锚点。如果深度模型每帧耗时超过 3 秒,引擎会在本次运行的剩余部分关闭深度,而不是让一个慢模型拖住整个任务。

每个视频统一一个深度尺度,而不是每帧一个

深度模型的输出没有固定单位:每一帧都按各自的尺度返回。如果每帧单独归一化,尺度本身就会逐帧变化,而这种变化看起来就像是运动。AutoScript Sync 则根据深度读数的稳健百分位数为整个视频设定一个尺度,这样数值的变化就代表场景的变化。

逐帧与逐视频深度缩放的对比,在一部影片的 150 帧上测量
指标逐帧缩放逐视频缩放
深度变化的帧间相关性0.5940.963
出现虚假方向翻转的步数42%2%

这是开发者于 2026 年 9 月 10 日针对模型原始输出所做的一项范围很窄的工程测量。它表明逐视频缩放能防止深度信号自相矛盾;它并不衡量最终脚本的准确度。

影响深度的设置

行程设置中有两个名称带 Depth 的滑块。只有 Depth priority 会改变分析;Depth emphasis 在发往设备的途中塑造行程长度,与 MiDaS 模型无关。两者都不会开关深度模型;这取决于是否安装并选用了深度模型。

Depth priority
30 到 90,默认 85。它决定位置轨迹中有多少来自实测速度,而不是来自位置锚点(深度是锚点的候选之一):数值越高,锚点的权重越低。应用自带的提示说明,速度承载行程幅度,锚点能阻止漂移但会压平深度;如果脚本感觉太忙乱或太深,建议调低到 45–65。它会改变分析,因此需要重新生成。
Depth emphasis
100% 到 200%,默认 100%(中性)。深的行程会按比例走得更远。它塑造的是发送给设备的副本,因此更改后请重新发送脚本;保存的文件不会改变。在已发布的应用中,这种设备端塑形只用于 Autoblow AI Ultra 上传;对 Intiface 设备同样应用,以及将其写入 Export Script (as played),将在下一次更新中推出。

深度的开销

有 NVIDIA GPU 时,深度通过 CUDA 在 GPU 上运行,否则在 CPU 上运行;应用会报告实际使用的是哪一个。RTX 5080 测试电脑上的一条代码注释记录,MiDaS small 每次调用在 GPU 上约 25.8 ms,在 CPU 上则为 234 ms。每隔一个采样帧运行一次而不是每帧都运行,工作量减半。在 GPU 上,深度模型的 CUDA 内存池上限为 4 GB。

我们没有公布深度在整个分析中所占的时间比例,因为目前的估计值背后没有测量数据表支撑。基准测试页面列出了已测量的内容。

局限

  • 相对的,而非绝对的。MiDaS 说的是更近或更远,而不是有多远。行程幅度仍来自融合后的轨迹,而不是仅来自深度。
  • 在运动区域上取平均。深度在追踪区域内每个运动像素上取平均,因此区域内的其他运动也会与行程一起被平均进去。用 Set Motion Region… 或 Live Track 自己画出区域可以缩小范围。
  • 更大的模型未被证明更好。没有记录过 MiDaS small 与 MiDaS large 在行程准确度上的对比。
  • 行程幅度仍是弱点。对照开发者手工编写脚本的测试片段,在最快的两部影片上,引擎的行程幅度分别只有人工的四分之一和一半。目前没有以绝对单位计的深度误差的正式测量。

常见问题

我需要深度模型吗?

不需要。没有深度模型时,引擎依靠光流、区域中心以及(若已安装)姿态工作。除非你关闭自动下载,MiDaS small 会自动下载。

我应该下载 MiDaS large 吗?

只有当你在 NVIDIA GPU 上运行 High 时才需要;在 CPU 上或其他档位不会使用它。我们没有测量过它是否比 MiDaS small 生成更好的脚本。

脚本感觉太深或太忙乱,是深度的问题吗?

可能是速度与锚点之间的平衡问题。试着把 Depth priority 设在 45 到 65 之间,然后重新生成。如果只是觉得设备上的行程太长,Depth emphasis 为 100% 时是中性的。

深度估计适用于 VR 视频吗?

VR 画面会先还原为单眼的普通透视视图,深度在该视图上运行,与其他画面无异。布局检测是启发式的,基于少量采样帧。

延伸阅读

用你自己的视频试试

试用期为一天,在你自己的电脑上运行;你的视频在本地分析,从不上传。