小区门口的广场上,阿姨们在跳舞。你远远望去,想判断她们跳的是不是《最炫民族风》。你会怎么看?先扫一眼定格的画面——她们穿什么、手举到哪、队形怎么摆;可光看这一眼还不够,你得再看一会儿——看手是怎么挥的、脚步是往前还是往后、节奏是快是慢。瞬间画面告诉你“是什么”,连续运动告诉你“怎么动”,两者合起来,你才敢下结论。 Two-Stream 双流网络正是模仿了这个过程。它是视频动作识别领域的经典模型:一条“空间流”盯着单帧 RGB 图像,用卷积神经网络认清楚画面里有什么;另一条“时序流”盯着光流图——一种专门描述“像素往哪个方向、以多快速度移动”的特征图——来感知运动。两条流各干各的,最后把结论合在一起,输出动作类别。这套“外观 + 运动”的分工理念,源自人脑视觉的双通路结构,也成了后来所有视频理解模型的底层心智模型。

岗位关联

对 AI 从业者来说,双流网络是进入视频理解世界的第一扇门。搞懂它,后面再看 3D 卷积、I3D、时序 Transformer 都会轻松很多;它那种“外观与运动分而治之”的思路,至今仍是视频模型设计的通用范式。

目录
  1. 可视化演示
  2. 视频识别难点:动作是时间的艺术
  3. 双流整体架构:两个各司其职的助手
  4. 空间流外观建模:左眼盯住瞬间
  5. 时序流运动建模:右眼盯住轨迹
  6. 光流计算原理:从两帧画面反推风场
  7. 双流融合策略:领导如何拍板
  8. 训练与优化:把两个助手培训上岗
  9. 双流影响与局限:广场舞领队的遗产
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

动态演示Two-Stream双流网络的核心机制,通过架构/数据/状态/性能四种模式展示关键概念与交互流程。

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

Two-Stream双流网络:视频动作 视频动作识别挑战与双流动机 空间流RGB外观特征建模 核心机制可视化 Two-Stream双流网络整体架构与关键组件

视频识别难点:动作是时间的艺术

你去看广场舞,随手拍了张照片。照片里阿姨们正举着手。你能凭这张照片说出她们跳的是哪支舞吗?几乎不能——“举手”这个瞬间既可能出现在《最炫民族风》里,也可能出现在《小苹果》里,甚至可能只是她在赶蚊子。动作识别的第一个难点就在这:动作本质上是时间的艺术,而单帧照片把它凝固成了空间的化石。

早期的视频识别方法,无非就是把视频拆成帧,丢给图像分类器一帧一帧地打分,最后投票。但一帧 224×224 的 RGB 图像,只记录了那一刻的光线分布,运动的时间结构被完全丢弃了。于是研究者开始思考:能不能把“外观”和“运动”分开建模,让网络各管一摊?

这个想法其实来自神经科学。人脑的视觉皮层有两条分工明确的通路:腹侧通路负责“是什么”,处理颜色、形状、物体身份;背侧通路负责“在哪里、怎么动”,处理运动与空间位置。2014 年,Simonyan 等人正是把这个发现搬进深度学习,提出了 Two-Stream 双流网络:一条流管空间外观,一条流管时间运动,各做各的,最后合起来。这不是凭空拍脑袋的创新,而是把“人怎么看动作”翻译成了“网络怎么算动作”。

双流整体架构:两个各司其职的助手

要识别阿姨们跳的舞,你找来两个助手:一个拿着高清相机,专门拍瞬间照片;另一个拿着轨迹记录笔,专门描摹每个人手脚的运动轨迹。两个人同时开工,最后把两份报告拼在一起,才能得出靠谱的结论。双流网络的结构,就是这两个助手。

在实现上,双流网络用两条并行的 CNN 分支:

  • 空间流(Spatial Stream):输入一帧 RGB 图像,尺寸通常是 224×224×3,负责提取“画面里有什么”的外观特征,输出每个动作类别的概率。
  • 时序流(Temporal Stream):输入叠加的光流图,尺寸是 224×224×2L,负责提取“画面在怎么动”的运动特征,也输出每个动作类别的概率。

两条分支可以用同一种 CNN 骨干,也可以分别用 VGG、ResNet 等不同结构。它们的输入管线完全不同:一边走的是“像素的静态分布”,另一边走的是“像素的瞬时运动”。最后,融合层把两路的分数合成出最终答案。两个助手各写一份报告,领导把报告加权汇总,这就是决策级融合的朴素原型。

空间流外观建模:左眼盯住瞬间

专门拍照片的那个助手,就是空间流。他按下快门的瞬间,人眼一瞥就能认出来:这是一个正在挥手的人、场地是水泥地、背景里有几棵树。这些“长什么样”的信息,在计算机视觉里被称为外观信息。

空间流的做法很直接:把单帧 RGB 图像缩放到 224×224,送入一个在 ImageNet 上预训练过的 CNN。预训练给了网络强大的物体识别先验——它已经见过上百万张自然图片,知道人、球拍、树长什么样。网络最后接一个 softmax 分类头,输出“这一帧属于每个动作的概率”。有人会疑惑:为什么空间流只吃一帧,不是吃整段视频?因为它的定位就是“静态外观的专家”——它的能力上限是“通过静态姿势猜动作”。静止的“举杠铃”姿势容易被认出来,但“运球”这种高度依赖连续运动的动作,靠单帧几乎猜不着。这正是时序流存在的意义。

照片助手眼神虽好,但记性只有一帧——他看不见“手之前在哪里”。没关系,另一个助手专门管这件事。

时序流运动建模:右眼盯住轨迹

轨迹助手拿的不是秒表,而是一叠“光流图”。光流图是什么?你可以把它想象成气象台的风场图:气象图上的箭头表示风往哪吹、风速多大;光流图里的箭头则表示每个像素往哪个方向移动、移动多快。阿姨的手在舞动,光流图就在手的位置画出一簇朝上的箭头;她往左转身,光流图就在全身位置画出向左的箭头。

时序流的输入不是连续 RGB 帧,而是光流场的通道堆叠。具体做法是:对视频的相邻帧用光流算法算出每个像素的运动向量 $(\omega_x, \omega_y)$,取连续 $L$ 帧的流场按通道叠在一起,得到一张多通道的“运动图”,公式可以写成:

运动变化越剧烈,光流图中箭头的长度和密度就越大,时序流的“运动特征”也就越强。对“运球”“挥拍”这类动作,时序流比空间流敏锐得多。

F=[ ω1x, ω1y, ω2x, ω2y, …, ωLx, ωLy ]∈RH×W×2L\displaystyle F = [\,\omega_1^x,\ \omega_1^y,\ \omega_2^x,\ \omega_2^y,\ \dots,\ \omega_L^x,\ \omega_L^y\,] \in \mathbb{R}^{H \times W \times 2L}
  1. 光流分量$\omega_t^x$ 表示第 $t$ 帧光流场在 x 方向(水平)的运动分量,$\omega_t^y$ 表示 y 方向(竖直)的运动分量,单位是“像素/帧”。
  2. 堆叠帧数$L$ 是取多少帧光流场叠在一起,实验中通常取 $L = 10$,既覆盖了约半秒的运动,又不会引入太多噪声。
  3. 通道数翻倍$2L$ 是因为每帧光流都有 x、y 两个分量,所以通道数等于帧数的两倍,空间尺寸 $H \times W$ 保持不变。
  4. 整体含义CNN 看到的输入不再是“颜色”,而是“画面里每一小块正在往哪个方向、以多快速度移动”——这就是时序流眼中的世界。

光流计算原理:从两帧画面反推风场

风场图是气象学家根据无数观测点的气压和风速数据反推出来的。光流图呢?算法工程师从相邻两帧画面反推出来。核心假设特别朴素,叫亮度恒定假设:同一个物体表面上的点,只要光照基本不变,它在相邻帧里的像素亮度就不变。基于这个假设,可以写出光流约束方程:

一个方程有两个未知数 $u, v$,解不唯一。这被称为孔径问题:透过一个小窗口看运动,只能看到沿纹理方向的分量,垂直方向的信息丢了。所以实际算法都会加一个平滑正则项,强迫相邻像素的运动不要太突兀。最经典的 TV-L1 光流算法就这样求解:

就像气象站用无数测风数据反推风场一样,光流算法用每个像素的亮度观测反推运动向量场。这张“风场图”,就是时序流眼里“动作的模样”。

Ixu+Iyv+It=0\displaystyle I_x u + I_y v + I_t = 0
  1. 数据项$(I_x u + I_y v + I_t)^2$ 逼着 $u, v$ 尽量满足亮度恒定方程,让估计的光流贴合真实运动。
  2. 平滑项$|\nabla u| + |\nabla v|$ 惩罚相邻像素运动速度的剧烈变化,相当于让“风场”在一个小区域内保持连续。
  3. 平衡权重$\lambda$ 调节数据项与平滑项的权重,图像噪声大就加大 $\lambda$,让运动场更平滑。
  4. 整体含义整个式子是在“相信观测”和“相信平滑”之间找平衡,解出来的 $u, v$ 就是每个像素的运动向量。

双流融合策略:领导如何拍板

两个助手交上来了各自的报告。照片助手说:“画面里的姿势像在挥拍,我打 70 分。”轨迹助手说:“手臂的运动方向和速度都像挥拍,我打 90 分。”领导怎么拍板?最简单的办法是加权平均——让更可靠的那一路多占一点权重。双流网络最经典的融合方式正是这种决策级加权:

除了决策级加权,还有一种做法是特征级融合:把两路在全连接层之前的特征向量拼接起来,再经过一个全连接层做分类。在 UCF101 动作识别数据集上,单空间流准确率约 73%,单时序流约 83%,双流简单融合能到 88% 以上。融合的收益来自两路信息的互补:空间流说“画面里有个人、场景像球场”,时序流说“手臂有剧烈摆动、方向向上”,两条证据都指向“挥拍”时,判断自然更可信。

两个助手一个认人、一个认动作,单独开会时偶尔争吵,一起汇报时反而从不犯大错——这就是融合的意义。

y=α yspatial+(1−α) ytemporal\displaystyle y = \alpha\, y_{\text{spatial}} + (1-\alpha)\, y_{\text{temporal}}
  1. 空间流输出$y_{\text{spatial}}$ 是空间流 softmax 层输出的概率向量,每个元素表示“这一帧属于某个动作类别的概率”。
  2. 时序流输出$y_{\text{temporal}}$ 是时序流 softmax 层输出的概率向量,表示“这段运动属于某个动作类别的概率”。
  3. 融合权重$\alpha$ 是两路结果的比例系数,通常取 0.5 附近,也可以在验证集上搜索,或者用一个小分类器学习出最优权重。
  4. 整体含义当 $\alpha = 0.5$ 时就是简单平均,两路意见各占一半;当某一路更可靠时,把 $\alpha$ 偏过去,最终分数就由更可信的那一路主导。

训练与优化:把两个助手培训上岗

两个助手不是天生会干活。你得先送他们去培训班打基础,再让他们在海量广场舞片段上反复练手,还要防着他们“背答案”(过拟合)。双流网络的训练,同样遵循这几条经验。

第一,分路独立训练。空间流用 ImageNet 预训练初始化,然后在 RGB 帧上微调;时序流也借用 ImageNet 预训练,但要把第一个卷积层的输入通道从 3 改成 2L,做法是把预训练权重在通道维度上取平均后复制,再在光流数据上训练。第二,数据增强。随机裁剪(从视频帧里随机取 224×224 的区域)、水平翻转、时间抖动,都能大幅提升泛化能力。第三,防止过拟合。两路都会在分类头前加 Dropout,随机丢弃部分神经元。

损失函数用标准的 softmax 交叉熵:

两路也可以联合微调,把损失写成 $L = L_{\text{spatial}} + L_{\text{temporal}}$,即两路损失求和,让两路的梯度互相补充。在 UCF101 和 HMDB51 上,这些技巧通常能再带来 2~4 个百分点的提升。培训得当的双助手组合,比两个各干各的助手靠谱得多。

L=−1N∑n=1N∑c=1Cyn,c log⁡pn,c\displaystyle L = -\frac{1}{N} \sum_{n=1}^{N} \sum_{c=1}^{C} y_{n,c}\, \log p_{n,c}
  1. 样本数$N$ 是一个 batch 里的视频样本个数,损失对所有样本取平均。
  2. 类别数$C$ 是动作类别总数,比如 UCF101 数据集的 101 类动作。
  3. 真实标签$y_{n,c}$ 是第 $n$ 个样本的 one-hot 标签,如果它属于第 $c$ 类则为 1,否则为 0。
  4. 预测概率$p_{n,c}$ 是模型对第 $n$ 个样本属于第 $c$ 类的预测概率。
  5. 整体含义当模型对正确类别的预测概率越接近 1,损失越小——训练就是在逼模型“对正确类别越来越自信”。

双流影响与局限:广场舞领队的遗产

双流网络就像广场舞的领队——它带火了一整片舞池,后来者纷纷跟着它的步伐编排新花样。在它之前,视频动作识别基本是“把视频当图像分类”;在它之后,“外观 + 运动分而治之”成了视频理解的标准开场白。

但领队也有力不从心的地方。双流的局限同样明显:

  • 光流计算开销大:光流是独立的前处理步骤,计算慢、占存储,而且梯度无法回传到光流部分,导致整体不能完全端到端训练。
  • 时间窗口短:时序流通常只看 10 帧左右,约半秒,难以建模“爬山”“跑步”这类几十秒的长程运动依赖。
  • 交互不足:两路直到最后融合才碰面,中间几乎没有信息交换,一些细微的时空关联抓不住。

后来的改进路线,最重要的一支是 I3D:把双流中的 2D 卷积替换成 3D 卷积,让每条流各自“看”一个视频片段,光流可以不再需要,模型可以直接端到端训练。再后来,时序 Transformer、VideoMAE 等把“空间 + 时间”的建模整合进单个骨干网络,但双流“外观与运动分而治之”的思想仍被广泛沿用。

从广场舞领队到整个舞池,双流网络留下的不是某段具体代码,而是一套“看动作要分两路”的思维方式。理解它的设计动机,就像学会了广场舞的基本步——后面的花式动作,都是在这个步子上长出来的。

AI 应用场景

智慧体育课堂:AI 教练自动计数

阶段:模型推理与动作事件检测

解决的问题:体育老师要给学生数俯卧撑、跳绳的次数,还要判断动作是否标准。人工数既累又不准,传统 pose 估计方案只能给出关节坐标,无法直接回答“刚才那一下算不算一个完整动作”。

具体案例:某智慧体育 App 采用双流思想:空间流以人体关键点热图替代 RGB 帧,识别“身体是否已下压”;时序流以关键点轨迹的速度与角度变化替代光流,判断“是否有连续的下压-推起周期”。两路融合后,系统能自动计数并给动作质量打分,体育老师只需看一眼手机就能完成全班评估。

智慧养老:跌倒检测告警

阶段:异常行为识别与实时告警

解决的问题:监控画面里老人突然摔倒,人工盯屏漏报率高,纯单帧检测容易把“弯腰捡东西”误判为跌倒。双流方案用空间流识别人体姿态异常(横躺、倒地),用时序流捕获“瞬间的快速位移与速度突变”,两者结合才能区分“慢慢弯腰”和“骤然倒地”。

具体案例:某养老院部署双流跌倒检测模型后,将跌倒召回率从单模型方案的 78% 提升到 93%,误报率下降一半。系统在老人倒地后的 0.5 秒内就能触发护理人员告警。

短视频审核:识别危险动作

阶段:内容安全审核与人工复核辅助

解决的问题:直播画面中“挥拳”“翻越护栏”等危险动作,靠单帧图像分类经常误判——有人比划一下、有人开玩笑,静态画面根本分不清。双流思想的优势在于同时看“画面里有什么”和“动作怎么发生”。

具体案例:某内容平台将双流网络与传统安全分类器并联:空间流识别武器类外观目标,时序流识别快速挥舞的运动模式,两路同时触发才转入人工复核队列,大幅减少无效审核工单。

Python 演示

python47 行
import numpy as np  def synthetic_frames(size=64, n=60):    ts = np.linspace(0.0, 2.0 * np.pi, n)    frames = []    for t in ts:        frame = np.zeros((size, size), dtype=np.float32)        cx = int(size // 2 + 18 * np.cos(t))        cy = int(size // 2)        y, x = np.ogrid[:size, :size]        frame[(x - cx) ** 2 + (y - cy) ** 2 <= 9] = 1.0        frames.append(frame)    return np.stack(frames)  def optical_flow_least_squares(f1, f2):    Ix, Iy = np.gradient(f1)    It = f2 - f1    A = np.stack([Ix.ravel(), Iy.ravel()], axis=1)    b = -It.ravel()    u, v = np.linalg.lstsq(A, b, rcond=None)[0]    return float(u), float(v)  def motion_score(video):    speeds = []    for i in range(len(video) - 1):        u, v = optical_flow_least_squares(video[i], video[i + 1])        speeds.append(np.hypot(u, v))    return min(1.0, float(np.mean(speeds)) * 6.0)  def main():    waving = synthetic_frames()    standing = np.repeat(waving[:1], len(waving), axis=0)     spatial = 0.85    for name, video in [("waving", waving), ("standing", standing)]:        temporal = motion_score(video)        fused = 0.5 * spatial + 0.5 * temporal        label = "waving" if fused >= 0.72 else "standing"        print(f"{name:8s} temporal={temporal:.2f} fused={fused:.2f} -> {label}")  if __name__ == "__main__":    main()
目的:用 numpy 合成两段“伪视频”(一段挥手、一段静止),用最小二乘光流估计运动向量,再模拟双流融合判断该视频属于“挥手”还是“静止”。
  1. frame[(x - cx) ** 2 + (y - cy) ** 2 <= 9] = 1.0按照圆心距离公式画出一个半径 3 像素的亮斑,模拟视频里“手”的位置
  2. Ix, Iy = np.gradient(f1); It = f2 - f1亮度恒定假设的核心三件套:x 方向梯度、y 方向梯度、时间方向差分
  3. np.linalg.lstsq(A, b, rcond=None)[0]用最小二乘解光流约束方程,得到整体运动向量 $(u, v)$
  4. min(1.0, float(np.mean(speeds)) * 6.0)把平均运动速度映射到 0~1 区间,作为时序流的“运动置信度”
  5. 0.5 * spatial + 0.5 * temporal双流融合:空间流与时序流各占一半权重,对应 $\alpha=0.5$ 的决策级加权
  6. fused >= 0.72融合分数超过阈值才判定为“挥手”;静止视频运动分数低、融合分被拉低,不会被误判

常见误区

误区“光流不复杂,把两帧画面对应像素做差,看哪些地方变了,那就是光流。”

正解帧差只是“哪些区域在时间上有变化”的一维信号;光流要估计的是每个像素的运动矢量,包含方向(x、y 两个分量)和大小,是二维矢量场。就好比帧差告诉你“这里有风”,光流告诉你“风往东北方向吹、风速每秒 5 米”。帧差只能给出一个模糊的响应图,光流则给出完整的运动场,信息量完全不同。

为何常见:光流的可视化图(颜色编码图)乍看像差分热力图,初学者容易把两者混为一谈。

误区“空间流不是应该看所有帧吗?时序流只看运动信息,应该输入几张连续帧。”

正解恰恰相反。空间流只输入一帧 RGB 图像,它的任务是单帧静态外观建模;时序流输入的是多帧光流叠加而成的 2L 通道特征图。空间流名字里的“空间”指单帧图像内的空间结构,时序流名字里的“时序”指帧与帧之间的运动变化。把输入搞反,整个双流的意义就没了。

为何常见:大家习惯性地认为“空间”对应“整段视频的全局信息”,忽略了它指的是帧内空间而非时间空间。

误区“空间流和时序流单独都很废,只有融合在一起才能做动作识别。”

正解两路各有专长,单独也能干活。在 UCF101 上,单空间流约 73%,单时序流约 83%,都已经远超随机猜测;融合后提升到 88% 以上。空间流擅长静态姿势明显的动作(举重、站立),时序流擅长运动特征突出的动作(跑步、挥手)。融合的意义是互补,不是“从零到一”的救赎。

为何常见:论文里的消融实验通常强调融合后的收益,读者容易忽略单路基线也不差。

误区“给网络看几帧连续图像,它自己就能把光流学出来,时序流不需要外部算光流。”

正解经典 Two-Stream 的时序流输入就是预计算好的光流图,光流是由 TV-L1、Farneback 等传统算法在预处理阶段算出来的,网络只负责从光流图里提特征,梯度不会回传到光流计算过程。这正是双流网络的一个局限,也是后来 I3D 想解决的问题。

为何常见:深度学习时代“端到端学习”的观念太深入人心,容易默认所有前端处理都能被网络替代。

面试题

Q1. Two-Stream 网络的空间流输入是什么?

单选题 · easy

  • A.多帧连续的 RGB 序列
  • B.单帧的 RGB 彩色图像← 正确答案
  • C.预计算好的光流图像
  • D.视频片段的灰度图像

答案:B。空间流负责静态外观建模,输入是单帧 RGB 图像,尺寸通常为 224×224×3。光流图像是时序流的输入,连续 RGB 序列是 3D 卷积网络的输入风格。选项 B 准确对应双流网络中“空间流只看一张照片”的设计。

Q2. 时序流输入的光流主要编码什么信息?

单选题 · easy

  • A.像素的颜色分布
  • B.物体的轮廓形状
  • C.像素的运动方向与大小← 正确答案
  • D.图像的纹理细节

答案:C。光流是一个矢量场,每个像素对应一个运动向量,包含方向和大小两重信息,类似风场图。颜色、轮廓、纹理都属于静态外观信息,是空间流的建模对象。

Q3. 光流约束方程中,符号 u 代表什么?

单选题 · mid

  • A.x 方向图像梯度分量
  • B.x 方向运动的速度分量← 正确答案
  • C.y 方向的图像梯度分量
  • D.时间方向的变化分量

答案:B。光流约束方程 $I_x u + I_y v + I_t = 0$ 中,$u$ 表示像素在 x 方向(水平)的运动速度,$v$ 表示 y 方向(竖直)的运动速度,两者是需要求解的未知数。$I_x$、$I_y$、$I_t$ 分别是 x 梯度、y 梯度和时间差分。

Q4. 双流网络常用的融合方式包括哪些?

多选题 · mid

  • A.决策级加权平均← 正确答案
  • B.特征级拼接融合← 正确答案
  • C.光流叠加融合
  • D.循环神经网络融合

答案:AB。决策级加权平均是对两路 softmax 分数做加权求和,特征级拼接是在全连接前把两路特征向量拼起来再过分类器,这两种都是双流网络论文中验证过的有效融合方式。光流叠加是时序流的输入预处理,不是融合手段;循环神经网络不属于双流融合的常规做法。

Q5. 光流估计中的亮度恒定假设指的是什么?

单选题 · mid

  • A.物体点运动前后亮度保持不变← 正确答案
  • B.相邻帧的所有像素亮度相同
  • C.整段视频的亮度始终不变
  • D.光流场中运动速度恒定不变

答案:A。亮度恒定假设认为,同一个物体表面上的点在相邻帧之间移动时,其像素亮度基本不变。正是基于这个假设才能写出 $I_x u + I_y v + I_t = 0$,把运动速度与图像梯度联系起来。它不要求相邻帧或整段视频亮度相同。

Q6. 为什么单靠一张 RGB 帧做动作识别不够?

单选题 · easy

  • A.静态帧缺少运动的信息← 正确答案
  • B.颜色信息有过多的冗余
  • C.单帧图像分辨率比较低
  • D.卷积网络无法处理图像

答案:A。动作本质上依赖时间变化,单帧静态图像只记录了瞬间的外观,丢失了运动轨迹、速度和方向等信息。比如“挥手”和“招手”在某一帧上可能完全相同,只有看连续运动才能区分。分辨率、颜色冗余不是关键障碍。

Q7. 关于 Two-Stream 网络的训练技巧,正确的说法有哪些?

多选题 · hard

  • A.两路常用 ImageNet 预训练初始化← 正确答案
  • B.时序流需把首层通道数改为 2L← 正确答案
  • C.空间流与时序流必须联合训练
  • D.Dropout 可用于防止两路过拟合← 正确答案

答案:ABD。两路都可以用 ImageNet 预训练初始化,时序流因为输入通道从 3 变为 2L,需要通过通道平均复制的方式适配首层权重。两路通常分路独立训练,也可以联合微调,但不是“必须”。Dropout 是双流论文中明确使用的防过拟合手段。

Q8. 时序流输入通道数为 2L,其中数字 2 的含义是什么?

单选题 · mid

  • A.空间流和时序流两个分支
  • B.光流包含 x 和 y 两个分量← 正确答案
  • C.每帧图像被采样两次
  • D.网络使用了两个卷积核

答案:B。每一帧光流场都由水平方向分量 $\omega^x$ 和竖直方向分量 $\omega^y$ 组成,所以堆叠 L 帧光流后通道数为 2L。2 与网络分支数、采样次数和卷积核数无关。

Q9. 双流网络的局限性包括哪些?

多选题 · hard

  • A.光流预计算开销比较大← 正确答案
  • B.难以建模长时间的运动依赖← 正确答案
  • C.只能识别单个静态动作类别
  • D.光流部分不能端到端训练← 正确答案

答案:ABD。光流需要独立预处理,计算与存储开销大,且梯度无法流入光流计算,所以不能完全端到端训练。时序流只覆盖约 10 帧窗口,难以建模长程运动。双流恰恰能识别动态动作,说它“只能识别静态动作”是错误的。

Q10. 关于光流估计的孔径问题,正确的是哪项?

单选题 · extreme

  • A.窗口内梯度信息完整时运动仍不可解
  • B.纹理沿单一方向时垂直方向运动不可知← 正确答案
  • C.TV-L1 平滑约束可以彻底消除孔径问题
  • D.孔径问题只在彩色图像中出现

答案:B。当局部窗口内的纹理沿单一方向(如水平条纹)时,光流约束只提供该方向的信息,垂直方向的运动分量无法确定,这就是孔径问题。梯度信息完整(两个方向都有纹理)时运动可解;TV-L1 的平滑约束只是缓解而非消除该问题;孔径问题与颜色无关。