小时候你多半玩过那种翻页小人书:每一页角落画着一个奔跑的小人,手指快速一拨,小人就跑起来了。可一旦翻慢了,小人就一顿一顿的,像卡了壳。视频其实也是一摞高速翻动的图片,每一张叫一“帧”,每秒翻多少张就是“帧率”。当帧率太低时,画面就像慢速翻页书一样卡顿。AI视频帧插值想做的事,就是在你翻页太慢的时候,替你自动补画几页“中间动作”,让小人重新跑得顺滑。它的招数分三个台阶:最笨的是把前后两页半透明叠在一起充数,聪明一点的是先判断笔尖往哪儿移动再顺着轨迹补画,而如今最厉害的是让AI见过海量翻页书之后自动学会补页。这篇文章就沿着这本翻页书的轨迹,一步步看清AI补帧的原理、工具和常见坑。

岗位关联

对AI从业者来说,帧插值是“时序数据重建”的典型方法论,掌握它不仅能做视频补帧,还能迁移到视频生成、慢动作增强、老片修复等实用业务。

目录
  1. 可视化演示
  2. 帧插值基础——翻页书的“页”与“翻页速度”
  3. 传统插值方法——偷懒补画师的三种画法
  4. 光流原理——追踪笔尖的运动轨迹
  5. 光流计算——用多方线索锁定运动
  6. AI插帧模型——会学习的超级补画师
  7. 训练与监督——师父如何教AI补画
  8. 质量评估——给补画效果打分
  9. 挑战与应对——遮挡与伪影的攻防战
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示帧插值核心技术:光流估计运动向量场、双向光流扭曲合成中间帧、RIFE/DAIN/CAIN算法速度质量对比。

本节配有交互动效(进入视口后自动加载,约 3KB)。

光流估计:像素级运动向量 计算相邻帧间每个像素运动 运动向量刻画瞬时运动场 flow = argmin E(I0,I1,v) 光流是帧插值的核心基础

帧插值基础——翻页书的“页”与“翻页速度”

你小时候一定玩过翻页小人书,页面角落画着奔跑的小人,快速翻页时小人就跑了起来。可一旦手指慢下来,小人就像被按了暂停键一样一跳一跳的。决定“丝滑程度”的不是画得多精致,而是每秒翻了多少页——这就是帧率的直觉。

视频本质上是一台自动翻页机,每秒翻开若干张名叫“帧”的图片。帧率,即FPS(Frames Per Second),就是每秒翻动的页数。电影常见24帧每秒,电视剧25或30,电竞屏则冲上144甚至更高。帧率一低,快速摇镜的画面就会一顿一顿,因为相邻两帧之间隔得太久,运动轨迹缺了太多“中间页”。

帧插值要解决的正是“缺页”问题:已知第0秒和第1秒两张关键帧,把中间的0.3秒、0.5秒、0.7秒画面“无中生有”补出来。补到两帧之间叫插值,只根据过去帧猜未来叫外推。补帧通常用插值,因为前后两帧都能参考,信息最充分。帧率的数学定义如下:

翻页书每多补一页,小人动作就连贯一分。理解了“帧”和“帧率”,我们就能明白补帧到底在补什么。

FPS=NT\displaystyle \mathrm{FPS} = \frac{N}{T}
FPS = 总帧数 ÷ 总秒数。帧数越多或时间越短,每秒翻动的画面就越多,看起来越流畅。
  1. FPS(帧率)Frames Per Second 的缩写,表示每秒刷新多少张画面,FPS 越大画面越连贯。
    FPS\mathrm{FPS}
  2. 总帧数 N一段时间内视频包含的图像总数。例如一段2秒的视频有48帧,N就是48。
    N=FPS×TN = \mathrm{FPS} \times T
  3. 时间 T视频持续的秒数。把总帧数除以总秒数,就得到平均每秒翻了多少页。
    T=NFPST = \frac{N}{\mathrm{FPS}}

传统插值方法——偷懒补画师的三种画法

如果让一个完全不懂运动的补画师来补页,他大概会交三种作业:第一种偷懒,直接复印上一页;第二种省事,把前后两页半透明叠起来描一遍;第三种稍微讲究,按时间比例做透明渐变。

对应到视频上就是帧重复、帧平均和线性插值。帧重复的后果是画面依然跳,只是每帧停留更久;帧平均与线性插值在背景静止时效果尚可,可一旦有运动物体,就会叠出“重影”——前页的小人在左边,后页的小人已在右边,硬叠在一起就像《西游记》里妖怪显形时的两道残影。

线性混合的数学表达简洁,设前后两帧为 I_A 和 I_B,用权重 α 控制混合比例:

这种叠画法没有运动概念,重影严重,本质上只能算“伪补帧”。要想真正补得漂亮,必须搞懂画面里每个点往哪儿动——这就是光流。

It=(1−α) IA+α IB\displaystyle I_t = (1-\alpha)\, I_A + \alpha\, I_B
α 从 0 变到 1 时,输出从帧 A 逐渐过渡到帧 B。看起来是“中间帧”,实际只是两层画面的透明度渐变。
  1. I_A 与 I_B前后两个关键帧的像素亮度矩阵,代表翻页书里的前页和后页。
    IA, IBI_A,\ I_B
  2. 权重 α插值位置,取值在 0 到 1 之间,α=0.5 就是正中间。
    α∈[0,1]\alpha \in [0, 1]
  3. (1−α) 与 α控制两帧的贡献比例,α 越大越像后一帧。
    1−α, α1-\alpha,\ \alpha
  4. 合成帧 I_t两帧像素的加权求和,运动物体处会叠出重影。
    It=(1−α)IA+αIBI_t = (1-\alpha)I_A + \alpha I_B

光流原理——追踪笔尖的运动轨迹

真正懂行的补画师不会硬叠。他先盯住前一页的笔尖位置,再看后一页的笔尖位置,在心里估出“这个点往哪移动、移了多少”,然后顺着轨迹把中间页画上。这个“追踪运动”的过程,在图像处理里叫光流。

光流不是光,而是每一颗像素从上一帧到下一帧的位移矢量场。它依赖一条核心假设——亮度恒定:同一个物体点在极短的时间内,颜色亮度几乎不变。设图像亮度函数为 I(x, y, t),t 时刻的像素 (x, y) 经过 dt 后移动到 (x+dx, y+dy),亮度保持不变,展开并用微商表示,就得到光流约束方程:

这条方程是“追踪笔尖”的数学表达,但注意:一个方程要解两个未知数(u 和 v),线索还不够。要真正算出光流,还需要更多约束。

Ix u+Iy v+It=0\displaystyle I_x\, u + I_y\, v + I_t = 0
这是光流法的基石:亮度的空间变化乘上运动速度,加上亮度随时间的变化,总和为 0。它描述“滚动的亮度守恒”。
  1. I_x、I_y亮度在水平、垂直方向的变化率,即图像梯度,相当于画面里明暗变化的陡峭程度。
    Ix=∂I∂x,Iy=∂I∂yI_x = \frac{\partial I}{\partial x},\quad I_y = \frac{\partial I}{\partial y}
  2. u、v像素在 x、y 方向的运动速度,这就是我们要追的“笔尖轨迹”。
    u=dxdt,v=dydtu = \frac{dx}{dt},\quad v = \frac{dy}{dt}
  3. I_t亮度随时间的变化率,即同一位置在两帧间的亮度差。
    It=∂I∂tI_t = \frac{\partial I}{\partial t}
  4. 方程含义空间梯度 × 运动 + 时间变化 = 0,说明“亮度守恒”三个分量必须互相抵消。
    Ixu+Iyv+It=0I_x u + I_y v + I_t = 0

光流计算——用多方线索锁定运动

光流约束方程只有一条线索,却要同时解出水平速度 u 和垂直速度 v,就像在沙漠里只听到一阵风声,却判断不出风源在哪——这就是著名的“孔径问题”。

Lucas-Kanade 方法提出了一个聪明的解法:观察一个局部小窗口(比如 3×3 或 5×5),假设窗口内所有像素的运动一致。于是窗口里每个像素都能列一条方程,多条方程凑成一个超定方程组,再用最小二乘法求解。写成矩阵形式就是:

针对大位移,还有金字塔多尺度技巧:先把图像缩小,让大位移变成小位移,逐层精修光流场。有了光流地图,补画师就能顺着轨迹补页了。

[∑Ix2∑IxIy∑IxIy∑Iy2][uv]=[−∑IxIt−∑IyIt]\displaystyle\begin{bmatrix}\sum I_x^2 & \sum I_x I_y \\\sum I_x I_y & \sum I_y^2\end{bmatrix}\begin{bmatrix}u \\ v\end{bmatrix}=\begin{bmatrix}-\sum I_x I_t \\-\sum I_y I_t\end{bmatrix}
左边是一个 2×2 的累积梯度矩阵,右边是累积时间变化项。用线性代数解这个 2 元方程组,就得到窗口中心像素的光流 (u, v)。
  1. 窗口内像素把窗口里每个像素的梯度值累加起来,相当于让一小片邻居“投票表决”运动方向。
    ∑Ix2, ∑Iy2, ∑IxIy\sum I_x^2,\ \sum I_y^2,\ \sum I_x I_y
  2. 累积矩阵左侧 2×2 矩阵描述窗口内梯度的分布,梯度越丰富,矩阵越稳定,求解越可靠。
    [∑Ix2∑IxIy∑IxIy∑Iy2]\begin{bmatrix}\sum I_x^2 & \sum I_x I_y \\\sum I_x I_y & \sum I_y^2\end{bmatrix}
  3. 右侧向量由亮度时间变化与梯度的乘积累加而成,代表“变化”的驱动力。
    [−∑IxIt−∑IyIt]\begin{bmatrix}-\sum I_x I_t \\-\sum I_y I_t\end{bmatrix}
  4. 求解 u、v左乘矩阵的逆,就得到窗口中心像素的光流速度。
    [uv]=[∑Ix2∑IxIy∑IxIy∑Iy2]−1[−∑IxIt−∑IyIt]\begin{bmatrix}u \\ v\end{bmatrix}=\begin{bmatrix}\sum I_x^2 & \sum I_x I_y \\\sum I_x I_y & \sum I_y^2\end{bmatrix}^{-1}\begin{bmatrix}-\sum I_x I_t \\-\sum I_y I_t\end{bmatrix}

AI插帧模型——会学习的超级补画师

传统光流在纹理少、遮挡多的画面里容易翻车。近几年,AI补画师登场了——它们见过海量翻页书,懂得各种刁钻的运动模式,比如有人伸手挡脸、镜头快速晃动。

AI插帧模型的核心依然是“先算运动、再沿轨迹采样”,只不过光流由神经网络预测。RIFE(Real-Time Intermediate Flow Estimation)等模型甚至不显式输出光流图,直接回归中间帧,实时又稳定。设光流为 d,插值时刻为 t,运动补偿插值的做法是沿轨迹到前后帧分别取样再合成:

超级补画师也会利用多帧时间建模:把前后更多帧一起喂给网络,让时间信息更充足。补页又快又顺的秘密,正是这种“沿轨迹采样”的思维方式。

It(x)=(1−t) I0 ⁣(x+(1−t)d)+t I1 ⁣(x−t d)\displaystyle I_t(\mathbf{x}) = (1-t)\, I_0\!\left(\mathbf{x} + (1-t)\mathbf{d}\right) + t\, I_1\!\left(\mathbf{x} - t\,\mathbf{d}\right)
中间帧的每个像素,都从帧 0 和帧 1 沿着运动轨迹“取颜色”,再按时间比例加权。这就是运动补偿插值的核心。
  1. x 与 dx 是中间帧里待补的像素坐标,d 是该像素处的运动矢量(由网络或光流法估计)。
    x, d\mathbf{x},\ \mathbf{d}
  2. x + (1−t)d沿光流反向找它在前一帧的“前世”——把帧0的内容搬到中间位置。
    x+(1−t)d\mathbf{x} + (1-t)\mathbf{d}
  3. x − t d沿光流正向找它在后一帧的“来生”——把帧1的内容搬回中间位置。
    x−t d\mathbf{x} - t\,\mathbf{d}
  4. 加权合成前后两个采样值按 (1−t) 和 t 混合,t=0.5 时各取一半。
    (1−t) I0(⋅)+t I1(⋅)(1-t)\, I_0(\cdot) + t\, I_1(\cdot)

训练与监督——师父如何教AI补画

AI不是天生会补画的,需要师父手把手教。师父把一段真实视频拆成三页,拿出第0页和第2页当题目,第1页当标准答案(Ground Truth),让AI补第1页。补得像就加分,补得不像就扣分。

这个“分数”在机器学习里叫损失函数,最常用的是 L1 损失和 L2 损失。L2 对大的误差惩罚更狠,L1 则对个别大噪点更宽容。L1 损失的公式如下:

训练时还会做数据增强:翻转、裁剪、变速,让 AI 见过更多姿势。师父一对一严格批改,徒弟自然越补越准。有了能补帧的模型,下一个问题就是——补出来的帧到底好不好?

L=1N∑i=1N∣Iipred−Iigt∣\displaystyle \mathcal{L} = \frac{1}{N}\sum_{i=1}^{N} \left| I_{i}^{\text{pred}} - I_{i}^{\text{gt}} \right|
逐个像素比较 AI 预测的中间帧与真实中间帧,求绝对差再取平均。误差越大,损失越高,AI 就越“挨骂”。
  1. N 样本数一个训练批次里的像素总数,N 越大训练信号越稳定。
    NN
  2. I_pred模型预测出的中间帧,也就是 AI 补画的那一页。
    IpredI^{\text{pred}}
  3. I_gt真实存在的中间帧,即师父手里的标准答案。
    IgtI^{\text{gt}}
  4. 绝对差与平均逐像素相减取绝对值,再求和平均,得到整个批次的平均损失。
    ∣Ipred−Igt∣\left| I^{\text{pred}} - I^{\text{gt}} \right|

质量评估——给补画效果打分

补画出来的页怎么评分?行业内通常过三关:机器算分、结构看分、人眼定分。

第一关用客观指标 PSNR(峰值信噪比)衡量逐像素差异。MSE(均方误差)越小,PSNR 越高,说明预测帧与真实帧越接近。第二关用 SSIM(结构相似性)对比亮度、对比度和结构,比 PSNR 更贴近人眼。最后一关是主观盲测:让真人看补帧视频,凭观感打分。PSNR 的公式如下:

分高不代表一定看着舒服,人眼才是终极考官。在真实工程里还要看实时性——每秒能补多少帧,能否跑在直播推流机上。

PSNR=10 log⁡10(MAX2MSE)\displaystyle \mathrm{PSNR} = 10\, \log_{10}\left(\frac{\mathrm{MAX}^{2}}{\mathrm{MSE}}\right)
MAX 是像素最大值(8 位图为 255),MSE 是预测与真实的均方误差。MSE 越小,PSNR 越大,通常超过 30dB 就相当不错。
  1. MAX图像像素能取的最大值,8 位灰度图里就是 255。
    MAX=255\mathrm{MAX} = 255
  2. MSE预测帧与真实帧逐像素差值的平方再取平均。
    MSE=1N∑i=1N(Iipred−Iigt)2\mathrm{MSE} = \frac{1}{N}\sum_{i=1}^N (I^{\text{pred}}_i - I^{\text{gt}}_i)^2
  3. log10 与 10×把误差压缩到对数尺度,符合“感知差异”的直觉,MSE 减半时 PSNR 大约增加 3dB。
    10log⁡10(⋅)10 \log_{10}(\cdot)

挑战与应对——遮挡与伪影的攻防战

翻页书里最让补画师头疼的画面是:人物挥手时手挡住了脸——前一页还看得到眼睛,后一页眼睛就消失了。这种“信息消失”叫遮挡,是补帧的头号杀手。

遮挡区域的光流本来就不可靠,硬用双向往中间取值会拉出鬼脸。业界常用前后向一致性检查来识别遮挡:先算前向光流 d_f(从帧0指向帧1),把像素按 d_f 搬到帧1,再在帧1处算后向光流 d_b。正常区域的两次移动应该互相抵消,抵消不了的就是遮挡区或错误区:

应对大形变场景则需要多帧输入配合金字塔精修,伪影消除技巧还包括后处理滤波与对抗训练。真正的高手不怕遮挡,因为他知道何时该“半猜半画”。

df(x)+db ⁣(x+df(x))≈0\displaystyle \mathbf{d}_{f}(\mathbf{x}) + \mathbf{d}_{b}\!\left(\mathbf{x} + \mathbf{d}_{f}(\mathbf{x})\right) \approx \mathbf{0}
去的时候走一步,回来的时候应能原路返回。如果往返位移相加不为零,说明这一点在前后的“路途”上被别的东西挡住了。
  1. d_f(x)前向光流,表示像素 x 从帧0到帧1的位移。
    df(x)\mathbf{d}_f(\mathbf{x})
  2. x + d_f(x)沿着前向光流把点搬到帧1 的位置。
    x+df(x)\mathbf{x} + \mathbf{d}_f(\mathbf{x})
  3. d_b(·)在帧1 那个位置再算一次后向光流,试图“走回去”。
    db(⋅)\mathbf{d}_b(\cdot)
  4. ≈ 0 判断往返位移互相抵消则一致;不为零则说明该点被遮挡,应改用单侧可见信息或修复策略。
    df+db≈0\mathbf{d}_f + \mathbf{d}_b \approx \mathbf{0}

AI 应用场景

慢动作视频创作

阶段:视频生成与增强

解决的问题:普通手机只能拍 30/60fps 视频,想做慢动作必须提升到 120/240fps。传统做法是直接抽帧变速,结果帧不够用、画面卡顿破碎。AI 插帧先估计运动再补中间帧,从 30fps 素材生成 240fps 的丝滑慢动作。

具体案例:运动博主拍摄跑步动作,30fps 素材补帧到 240fps,0.25 倍速播放依然顺滑清晰,草丛里鞋底的纹理都连贯可见。

游戏录像与赛事转播补帧

阶段:内容增强

解决的问题:游戏录屏常是 30fps,赛事直播常用 24p,但在 144Hz 电竞屏上播放会肉眼可见卡顿。AI 补帧离线或实时生成中间帧,把视频提升到 60 甚至 120fps。

具体案例:电竞赛事导播用 RIFE 把 50fps 素材补到 100fps,在 240Hz 大屏上播放慢放回放时,选手技能特效不再撕裂。

老电影修复补帧

阶段:内容修复

解决的问题:老电影多为 24fps,且自带运动模糊,直接上高帧率屏一顿一顿。传统倍帧会丢失胶片质感,AI 插帧配合去隔行、去模糊,把老片提升到 60fps 且保持质感。

具体案例:某修复团队用 AI 补帧处理一部 80 年代文艺片,观众反馈“画面像新拍的纪录片,但胶片的颗粒感还在”。

Python 演示

python57 行
import numpy as np  def make_test_frames(size=96):    h, w = size, size    a = np.zeros((h, w, 3), dtype=np.uint8)    b = np.zeros((h, w, 3), dtype=np.uint8)    a[24:52, 24:52] = (220, 90, 90)    b[36:64, 36:64] = (60, 180, 120)    return a, b  def global_motion_est(a, b, max_shift=16):    a_g = a.mean(axis=2).astype(float)    b_g = b.mean(axis=2).astype(float)    h, w = a_g.shape    best_dx, best_dy = 0, 0    best_score = float('inf')    for dy in range(-max_shift, max_shift + 1):        for dx in range(-max_shift, max_shift + 1):            nb = np.roll(np.roll(b_g, dy, axis=0), dx, axis=1)            pa = a_g[16:h - 16, 16:w - 16]            pb = nb[16:h - 16, 16:w - 16]            score = np.abs(pa - pb).mean()            if score < best_score:                best_score = score                best_dx, best_dy = dx, dy    return best_dx, best_dy  def motion_compensated_interp(a, b, alpha=0.5, max_shift=16):    dx, dy = global_motion_est(a, b, max_shift)    wa = np.roll(np.roll(a.astype(float), int(round(alpha * dy)), axis=0),                 int(round(alpha * dx)), axis=1)    wb = np.roll(np.roll(b.astype(float), int(round(-(1 - alpha) * dy)), axis=0),                 int(round(-(1 - alpha) * dx)), axis=1)    out = (1 - alpha) * wa + alpha * wb    return np.clip(out, 0, 255).astype(np.uint8)  def naive_average_interp(a, b, alpha=0.5):    out = (1 - alpha) * a.astype(float) + alpha * b.astype(float)    return np.clip(out, 0, 255).astype(np.uint8)  def main():    a, b = make_test_frames()    alpha = 0.5    motion = motion_compensated_interp(a, b, alpha)    naive = naive_average_interp(a, b, alpha)    print('运动补偿插值中心像素:', motion[54, 54])    print('朴素平均插值中心像素:', naive[54, 54])    print('中间帧尺寸:', motion.shape)  if __name__ == '__main__':    main()
目的:演示“全局运动估计 + 运动补偿插值”的完整流程,用模拟的两帧方块运动对比朴素帧平均与运动补偿插值的差异。
  1. a[24:52, 24:52] = (220, 90, 90)生成前一帧的红色方块,作为翻页书的“前一页”。
  2. b[36:64, 36:64] = (60, 180, 120)生成后一帧的绿色方块,方块整体向下向右移动了 12 像素。
  3. a_g = a.mean(axis=2).astype(float)把彩色图转成灰度,方便计算匹配分数。
  4. nb = np.roll(np.roll(b_g, dy, axis=0), dx, axis=1)用 np.roll 平移后一帧,模拟“候选运动矢量”。
  5. score = np.abs(pa - pb).mean()平均绝对差衡量两帧重叠部分的相似度,分数越低越匹配。
  6. best_dx, best_dy = dx, dy记录全局最优位移,这就是“判断笔尖往哪移动”的简单版本。
  7. wa = np.roll(... int(round(alpha * dy)) ...)把前一帧按 alpha 比例平移一半位移,相当于沿轨迹补画。
  8. out = (1 - alpha) * wa + alpha * wb加权合成中间帧,完成运动补偿插值。

常见误区

误区我一直以为 AI 补帧就是把前后两张图半透明叠起来,透明度调一下就是中间帧,听起来很简单。

正解直接平均会让运动物体出现“重影”或“鬼影”——小人前一帧在左边、后一帧在右边,硬叠就是两道残影。真正的补帧要先估计运动(光流),再沿运动轨迹取值合成。同样的动作,帧平均像“叠画”,运动补偿才是“顺轨迹补画”。

为何常见:帧平均的数学形式简单直观,而且画面静止时确实有效,很多人用静止截图测试就误以为可行。

误区光流不是能精确算出每个像素移动多少吗?那按光流补帧应该完美无瑕。

正解光流是“估计”而非“实测”。在遮挡区域、无纹理区域、运动模糊区域,光流经常出错。所以工程上要配合前后向一致性检查、局部平滑约束、多帧信息来纠错,AI 模型也正是为了弥补经典光流的这些软肋。

为何常见:光流可视化的彩色箭头太有说服力,让人误以为每个箭头都是精确测量的结果。

误区既然能补帧,那 4 倍 8 倍还不够,直接冲击 16 倍 32 倍,画面不是更丝滑?

正解补帧倍数越高,运动估计的误差越容易累积,伪影越严重。真实项目常用“分级插值”:先补到 2 倍、再在结果上补 2 倍,而不是一口气补 16 倍。算力和质量要平衡,60fps 通常已足够流畅。

为何常见:厂商宣传“120fps 电竞体验”让人产生“帧率越高越先进”的错觉,忽略了算法误差与算力代价。

误区选补帧模型就看 PSNR,谁分数高选谁,数字不会骗人。

正解PSNR 只衡量逐像素误差,不反映结构、纹理和时序一致性。一个模糊但“像素接近”的结果可能 PSNR 很高,观感却很差。SSIM 更贴近人眼,但最终落地仍需主观盲测。数字是参考,人眼才是裁判。

为何常见:客观指标可量化、可自动跑分,给人“科学”的安全感,于是被过度依赖。

面试题

Q1. 关于视频帧率 FPS 的正确说法是?

单选题 · easy

  • A.每秒传输的比特数
  • B.每秒包含的图像帧数← 正确答案
  • C.每帧包含的像素数
  • D.视频总帧数的编号

答案:B。FPS 是 Frames Per Second,指每秒显示的图像帧数。比特率描述数据量,像素数描述分辨率,总帧数编号描述索引,都与“每秒帧数”无关。

Q2. 直接把两帧像素平均作为中间帧,最可能出现的瑕疵是?

单选题 · easy

  • A.画面过曝
  • B.运动重影← 正确答案
  • C.颜色偏移
  • D.噪点增多

答案:B。运动物体在前后帧位置不同,直接平均会让同一物体同时出现在两个位置,形成重影(鬼影)。过曝、偏色、噪点不是帧平均的特有症状。

Q3. 光流约束方程假设的核心前提是?

单选题 · easy

  • A.像素亮度保持恒定← 正确答案
  • B.运动速度保持恒定
  • C.光流方向保持不变
  • D.图像梯度保持不变

答案:A。光流约束方程从“亮度恒定”出发:同一物体点在极短时间内亮度不变,从而得到 I_x·u + I_y·v + I_t = 0。速度恒定、方向恒定、梯度恒定都不是它的前提。

Q4. 光流约束方程“一个方程两个未知数”无法直接求解,常用解法是?

单选题 · mid

  • A.增加窗口内一致性假设← 正确答案
  • B.直接求两变量的算术平均
  • C.假设全局运动速度为常数
  • D.只保留水平方向的分量

答案:A。Lucas-Kanade 法假设局部窗口内像素运动一致,从而凑出超定方程组用最小二乘求解。取均值、假设全局常数、丢掉一维信息都会破坏运动估计的准确性。

Q5. 运动补偿插值通常包含哪些步骤?

多选题 · mid

  • A.估计像素运动矢量← 正确答案
  • B.沿运动轨迹采样取值← 正确答案
  • C.加权混合生成中间帧← 正确答案
  • D.减少视频文件体积

答案:ABC。运动补偿插值先估计光流(运动矢量),再沿轨迹到前后帧采样,最后加权合成。D 是视频编码器的职责,与插值无关。

Q6. 下列哪些属于 AI 插帧模型常用的损失函数?

多选题 · mid

  • A.像素重建的 L1 损失← 正确答案
  • B.感知特征相似度损失← 正确答案
  • C.双向光流一致性损失← 正确答案
  • D.哈夫曼编码熵损失

答案:ABC。L1/L2 像素损失衡量逐像素误差,感知损失用预训练网络的特征相似度评估观感,光流一致性损失约束运动估计的稳定性。哈夫曼编码是有损压缩的熵编码手段,不属于插帧损失。

Q7. AI 插帧模型的训练样本通常如何构造?

单选题 · mid

  • A.用前后两帧预测中间帧← 正确答案
  • B.用随机两帧直接混合
  • C.单帧加噪声做自监督
  • D.人工标注运动轨迹图

答案:A。从真实视频中取连续三帧,用第 0 帧和第 2 帧做输入、第 1 帧做标准答案,这正是“监督学习”的典型构造。随机混合产生的图像没有真实运动,单帧自监督和人工标光流都不是主流做法。

Q8. 补帧出现伪影的常见原因有?

多选题 · hard

  • A.运动遮挡导致信息缺失← 正确答案
  • B.光流估计结果不准确← 正确答案
  • C.物体非线性形变剧烈← 正确答案
  • D.编码压缩噪声干扰光流← 正确答案

答案:ABCD。遮挡区域本身没有可见信息,光流易错;光流不准会拉错采样点;非刚性形变(如衣服飘动、水流)超出光流假设;压缩噪声会破坏亮度恒定假设。四者都会让补帧崩出伪影。

Q9. 前后向光流一致性检测的核心判据是?

单选题 · hard

  • A.前向光流值恒为零
  • B.前后向光流互为相反← 正确答案
  • C.前后向光流大小相等
  • D.后向光流方向固定

答案:B。正常的往返位移应互相抵消,即 d_f(x) + d_b(x+d_f(x)) ≈ 0,前后向光流互为相反数。光流恒零、大小相等、方向固定都不能区分遮挡与正常区域。

Q10. 在遮挡区域直接使用双向光流加权插值,最稳妥的替代策略是?

单选题 · extreme

  • A.只使用前向光流进行插值
  • B.只使用后向光流进行插值
  • C.引用单侧可见帧信息修复← 正确答案
  • D.直接删除遮挡区域像素

答案:C。遮挡意味着某一侧的信息“消失”,最稳策略是检测出遮挡后,引用仍然可见的那一侧信息来修复,或用网络生成合理内容。只取前向或后向相当于盲猜,直接删像素会让画面出现空洞。