物业经理老王接到报案:小区门口的一件包裹不见了。他面前的屏幕正回放一整天的监控录像——10 个小时的画面压成一条长长的进度条。老王的活儿是:找出行窃发生在哪一刻——小偷几点几分走进画面,几点几分离开。这就是“时序动作检测”。 以前的办法像是设陷阱:先在录像里划出一大堆“可疑时间段”,再逐个排查。而 ActionFormer 的做法更像资深侦探:先把录像用不同倍速各看一遍(多尺度特征金字塔),再把相隔很远的可疑线索在脑中串起来(时序自注意力),最后不依赖任何预设模板,直接下结论:“动作从第 4 分 02 秒开始,到第 7 分 35 秒结束”(无锚点预测)。

岗位关联

掌握 ActionFormer,等于掌握了视频理解领域的“破案心法”:它在 ActivityNet 等基准上稳居榜首,其纯净的 Transformer 设计思路,能直接迁移到各类时间序列推理任务中,是走向视频算法工程师的必经一站。

目录
  1. 可视化演示
  2. 任务定义:从录像里找“出没时刻”
  3. 技术演进:从设陷阱到直接破案
  4. 多尺度特征:三副眼镜看录像
  5. 自注意力机制:跨时刻的线索串联
  6. 无锚点预测:不看模板,直接报时
  7. 训练与推理:师父带徒弟
  8. 评估与应用:考核与上岗
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示ActionFormer无锚点时序动作定位、局部自注意力窗口机制与多尺度特征金字塔,切换模式交互探索TAD流程。

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

无锚点时序动作定位 视频特征序列输入Transformer编码器 每个时刻预测动作起止边界与类别 无需预设锚框尺度超参 预测 = {start, end, class} = f(features) 无锚点设计简化后处理流程

任务定义:从录像里找“出没时刻”

老王把一天 10 小时监控从头到尾看一遍,心里只有一个问题:包裹到底是几点几分被拿走的?任何一帧都不能放过,但也不是每一帧都要仔细看。时序动作检测问的正是这个问题:在一段未裁剪的原始视频里,把每一个“动作”发生的时间段精确地圈出来。

具体来说,模型要输出三类信息:动作类别 c(在做什么)、开始时刻 s(从哪一秒开始)、结束时刻 e(到哪一秒结束)。这与“行为识别”只回答“这一刻在干嘛”完全不同。检测要求模型对时间边界负责——多报一秒、少报一秒,都算不准确。整个任务属于视频理解的分支,核心是“定位 + 分类”双输出。

如何衡量“准不准”?工程师们借用了目标检测里的交并比(IoU),把时间区间当成一维的“方框”,定义出时序交并比 tIoU:它直接度量“模型说的时段”和“标准答案的时段”重合了多少。

就像老王复盘时和监控录像“对表”,他说“小偷 4 点 02 分进门、7 点 35 分离开”,标准答案记录“4 点 05 分进门、7 点 32 分离开”,重叠度越高,说明他看监控的水平越高——tIoU 就是这张“对表成绩单”。

tIoU(A,B)=∣A∩B∣∣A∪B∣\displaystyle \text{tIoU}(A, B) = \frac{|A \cap B|}{|A \cup B|}
时序交并比把两个时间区间各自看成一截线段,重叠长度除以总覆盖长度,得到一个 0 到 1 的重合度分数。
  1. 区间表示A 是模型预测的区间,B 是真实标注区间,各含开始与结束两个端点。
    A=[s,e],B=[sgt,egt]A = [s, e], \quad B = [s_{gt}, e_{gt}]
  2. 交集长度两个区间同时覆盖的那一段时长,取两端较晚的开始与较早的结束之差。
    ∣A∩B∣=max⁡(0,min⁡(e,egt)−max⁡(s,sgt))|A \cap B| = \max(0, \min(e, e_{gt}) - \max(s, s_{gt}))
  3. 并集长度从最早起点到最晚终点的总跨度。
    ∣A∪B∣=max⁡(e,egt)−min⁡(s,sgt)|A \cup B| = \max(e, e_{gt}) - \min(s, s_{gt})
  4. 求比值交集除以并集,数值越大代表预测边界越精确。
    tIoU∈[0,1]\text{tIoU} \in [0, 1]

技术演进:从设陷阱到直接破案

早期的视频检测算法像在楼道里布设“捕兽夹”:先假设小偷可能经过的每个位置,放上一堆夹子(候选区间),过一会儿再去检查哪些夹子被踩中了。这套流程有效,但夹子放得太多,检查起来费时费力;放得太少,又会漏掉目标。

两阶段方法正是如此——先用一个“提议网络”生成大量候选时间区间(相当于布置捕兽夹),然后对每个候选区间做分类与边界微调。后来出现的单阶段方法干脆扔掉候选提议,直接在时间轴上逐帧预测,像巡逻一样边走边判断。在单阶段方法内部,“锚点”曾是重要设计:一组预设好的时间宽度,模型预测时在锚点基础上做偏移修正。但锚点尺度需要手工设定,动作时长千差万别,很难覆盖所有情况。

ActionFormer 的突破在于完全去掉锚点。它的输出格式统一为动作实例集合,每个实例包含类别、开始时间、结束时间、置信度。因为不再依赖预设锚点,后处理只需一次阈值筛选和局部去重,流程大幅精简,也更容易训练。

如果说老前辈靠“广撒网”碰运气,那 ActionFormer 就是练出了火眼金睛——不需要先摆一堆夹子,看到可疑身影当场就能报出“从 4:02 到 7:35”。

D={(ci,si,ei,pi)}i=1N\displaystyle \mathcal{D} = \{(c_i, s_i, e_i, p_i)\}_{i=1}^{N}
检测结果是一个集合:每个元素描述“一个动作在什么时候发生、是什么动作、有多确定”。
  1. 结果集合模型最终输出的所有动作实例,数量 N 不固定,由视频内容决定。
    D={⋯ }i=1N\mathcal{D} = \{ \cdots \}_{i=1}^{N}
  2. 类别标签c_i 表示动作类别,比如偷窃、奔跑、握手。
    ci∈{1,2,…,C}c_i \in \{1, 2, \ldots, C\}
  3. 时间边界s_i 是开始时刻,e_i 是结束时刻,位于整条视频的时长范围内。
    0≤si<ei≤T0 \le s_i < e_i \le T
  4. 置信度p_i 是模型对这个实例的把握程度,用于排序去重。
    pi∈[0,1]p_i \in [0, 1]

多尺度特征:三副眼镜看录像

监控里的动作时长千奇百怪:小偷伸手够包裹只要 2 秒,站在门口观察却要 2 分钟。如果只看单一分辨率的画面,要么漏掉快动作,要么看不清慢动作。老王有三副眼镜:广角镜扫全局、中焦镜看场景、显微镜盯细节。

这就是多尺度特征金字塔的直觉来源。ActionFormer 从骨干网络拿到一条长度为 T 的特征序列后,并不直接做预测,而是逐层把时间长度减半,生成一组分辨率从高到低的特征层。浅层保留精细的时间结构,适合精确卡边界;深层的时间跨度大,适合感知动作的整体语境。

在具体实现中,每一层都使用一维卷积沿时间轴滑动,把两个相邻时刻的特征压缩成一个。所有层共享同一个 Transformer 编码器参数,每层独立编码后再融合预测。这套“多尺度看全、单尺度看细”的设计,正是无锚点方法能精确回归起止边界的关键支撑。

三副眼镜各司其职,老王才能在报告里既写得出“4 点 02 分进门”这种精确时刻,又描述得出“这是一次有预谋的入室盗窃”这种全局判断。

Fl+1=Conv1Dk=3,s=2(Fl)\displaystyle F_{l+1} = \text{Conv1D}_{k=3, s=2}(F_l)
一维卷积以步长 2 滑动,把特征序列的时间分辨率逐层减半,形成由细到粗的金字塔。
  1. 层特征F_l 是第 l 层的特征序列,长度为 T_l,通道数为 C。
    Fl∈RTl×CF_l \in \mathbb{R}^{T_l \times C}
  2. 一维卷积卷积核只在时间轴上滑动,参数 k=3 表示一次看相邻 3 个时刻。
    Conv1Dk=3,s=2(⋅)\text{Conv1D}_{k=3, s=2}(\cdot)
  3. 步长下采样步长 s=2 让输出长度减半,相当于每两步合成一步。
    Tl+1=⌊Tl/2⌋T_{l+1} = \lfloor T_l / 2 \rfloor
  4. 层层堆叠层数越深,时间分辨率越低、感受野越大。
    Tl=T/2l−1T_l = T / 2^{l-1}

自注意力机制:跨时刻的线索串联

老王看监控有个绝活:他脑中有张透明的“线索网”。第 3 分钟那个低头走路的背影,和第 5 分钟门被推开的声音,会在他脑中瞬间连通。别人看监控是顺着时间轴一帧帧看,而他是跳着看、连着想。

自注意力机制干的就是这件事。对特征序列中的任意一个时刻,它都能直接访问整条时间线上所有其他时刻的信息,并按照“相关性”加权汇总。CNN 只能看局部卷积窗口,RNN 只能一步步传递记忆,而自注意力一步到位,天然适合捕捉远距离的时间依赖。

具体计算时,每个时刻生成三个角色:查询 Q(我在找什么)、键 K(我有什么线索)、值 V(线索的具体内容)。Q 与所有 K 做点积得到注意力分数,除以维度开方后经过 softmax 变成权重,再对 V 加权求和。除以 √d_k 是为了让分数尺度稳定,避免 softmax 输出过于尖锐。多个注意力头并行,还能同时捕捉“谁在先谁在后”“哪个片段最相似”等不同关系。

正因有这张线索网,老王才能得出“4 点到 7 点半之间发生了一整件事”的结论——不是孤立的可疑帧,而是前后呼应的完整动作。

Attention(Q,K,V)=softmax(QK⊤dk)V\displaystyle \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^{\top}}{\sqrt{d_k}}\right) V
自注意力让每一个时刻的输出都成为“整条时间线上所有时刻信息的加权和”。
  1. 三个投影Q、K、V 由特征变换而来,维度都是 d_k,T 是序列长度。
    Q,K,V∈RT×dkQ, K, V \in \mathbb{R}^{T \times d_k}
  2. 得分矩阵Q 与 K 的转置相乘,S_{i,j} 表示第 i 帧与第 j 帧的匹配程度。
    S=QK⊤,Si,j=qi⋅kjS = QK^{\top}, \quad S_{i,j} = q_i \cdot k_j
  3. 温度缩放除以 √d_k,把得分压回温和区间,防止 softmax 饱和。
    S~=Sdk\tilde{S} = \frac{S}{\sqrt{d_k}}
  4. 概率归一化softmax 把每行分数变成和为 1 的注意力权重。
    Ai,:=softmax(S~i,:)A_{i,:} = \text{softmax}(\tilde{S}_{i,:})
  5. 加权聚合用权重对 V 加权求和,得到携带全局信息的输出。
    Output=AV\text{Output} = A V

无锚点预测:不看模板,直接报时

传统锚点法像裁缝店里只挂 S、M、L 三款样衣:顾客来了,只能挑最接近的款式,再修修改改。而无锚点预测是高级定制——裁缝看一眼身形,直接量出肩宽、袖长,裁出合身的衣服。

ActionFormer 就是那个“高级裁缝”。对每一个时间位置 t,分类分支先判断“这里是不是动作、是什么动作”;回归分支则直接预测两个跨度:动作起点离当前帧有多远(Δs),终点离当前帧有多远(Δe)。

因为是逐点直接预测,不需要预设任何锚点集合,每个位置都可以“量身定制”任意长度的动作区间。预测时,起点等于当前时刻减去左跨度,终点等于当前时刻加上右跨度。推理阶段,只需按置信度排序、设定阈值、用简单的局部极大值抑制去掉互相重叠的重复预测,即可得到最终结果,后处理非常干净。

老张不再依赖“常见小偷身形”的模板,面对两秒的伸手和两分钟的观察,都能直接报出准确时间——这正是无锚点带来的自由度。

s^t=t−Δst,e^t=t+Δet\displaystyle \hat{s}_t = t - \Delta s_t, \qquad \hat{e}_t = t + \Delta e_t
每个时间点都直接报出“动作从我往前多远开始、往后多远结束”,从而拼出完整区间。
  1. 逐点扫描t 是当前时刻的索引,模型沿时间轴逐点做预测。
    t∈{1,2,…,T}t \in \{1, 2, \ldots, T\}
  2. 左右跨度Δs_t 与 Δe_t 是模型预测的正数偏移,分别表示起点离当前帧多远、终点离当前帧多远。
    Δst>0,Δet>0\Delta s_t > 0, \quad \Delta e_t > 0
  3. 起点推导当前时刻减去左跨度,得到动作开始时间。
    s^t=t−Δst\hat{s}_t = t - \Delta s_t
  4. 终点推导当前时刻加上右跨度,得到动作结束时间。
    e^t=t+Δet\hat{e}_t = t + \Delta e_t
  5. 区间合成两者组合成一个完整的预测区间。
    [s^t,e^t][\hat{s}_t, \hat{e}_t]

训练与推理:师父带徒弟

老王不是天生有火眼金睛。他跟着师父练了三个月:师父拿着历史档案(视频加标注),让老王说出案发时间,说错了就纠正。训练就是不断“说错—纠正”的过程,直到判断越来越准。

模型训练同样需要“师父”——标注好的视频数据。每段真实动作区间内的帧被标记为正样本,之外的帧是负样本。由于监控视频里 99% 的时间都是平静的,负样本远多于正样本,分类损失必须特别处理。Focal Loss 通过调制因子压低“已经分对的简单样本”的权重,把学习重点压到“还分不对的困难样本”上。回归部分则用 Smooth L1 损失,只对正样本计算起止时间误差。

推理时,各金字塔层的预测先融合,再统计置信度并排序,用非极大抑制去掉重叠的区间。整个过程分为分类判类别、回归卡时间两条线,最后合成完整的动作列表。

师父的每一次纠正,最终都变成了老王脑中那张线索网的“走线习惯”;对模型来说,就是那几千万个参数的不断微调。

L=Lcls+λLreg\displaystyle \mathcal{L} = \mathcal{L}_{cls} + \lambda \mathcal{L}_{reg}
总损失 = 分类损失 + 回归损失,一个负责“判得准”,一个负责“卡得准”。
  1. 分类损失用 Focal Loss 计算,缓解正负样本严重不平衡。
    Lcls=−α(1−p)γlog⁡(p)\mathcal{L}_{cls} = -\alpha (1-p)^{\gamma} \log(p)
  2. 预测概率p 是模型对正样本预测的概率,越接近 1 表示越自信。
    p∈[0,1]p \in [0, 1]
  3. 调制因子(1-p)^γ 让难样本贡献更大,γ 通常取 2。
    γ=2\gamma = 2
  4. 回归损失用 Smooth L1 度量预测边界与真实边界的差距。
    Lreg=SmoothL1(s^−sgt)+SmoothL1(e^−egt)\mathcal{L}_{reg} = \text{SmoothL1}(\hat{s} - s_{gt}) + \text{SmoothL1}(\hat{e} - e_{gt})
  5. 权重系数λ 控制两项损失的相对重要性,默认设为 1。
    λ=1\lambda = 1

评估与应用:考核与上岗

老张学成出师,参加年度考核:考官给他十段从未看过的监控,让他标出所有案发时段,然后与标准答案比对——时间重合度越高,得分越高。这就是 mAP 的考法。

评估时序动作检测的标准指标是 mAP(均值平均精度)。先在某个 tIoU 阈值(如 0.5)下,把所有预测按置信度排序,画出精确率-召回率曲线并计算曲线下面积 AP;然后把多个阈值下的 AP 取平均,得到综合得分。ActivityNet-1.3 上通常对 0.5 到 0.95、间隔 0.05 共 10 个阈值取平均;THUMOS14 则常用 0.3 到 0.7、间隔 0.1。ActionFormer 在这两个基准上都达到了当时领先的精度。

考核之外,老王被派到三个岗位:小区安防——自动盯梢异常行为;体育直播——自动剪辑进球集锦;网络内容审核——自动定位违规片段。ActionFormer 的纯 Transformer 加无锚点设计,让这些应用从“事后翻录像”走向“实时读秒”。

mAP=1K∑k=1KAPτk,τk∈{0.5,0.55,…,0.95}\displaystyle \text{mAP} = \frac{1}{K} \sum_{k=1}^{K} \text{AP}_{\tau_k}, \quad \tau_k \in \{0.5, 0.55, \ldots, 0.95\}
mAP 是多个 tIoU 阈值下平均精度 AP 的平均值,综合衡量“宽松匹配”和“严格匹配”两种考核标准。
  1. 阈值门槛每个 τ 是一个 tIoU 匹配阈值,越高要求越严苛。
    τ∈[0.5,0.95]\tau \in [0.5, 0.95]
  2. 单阈值精度AP_τ 是在该阈值下的精确率-召回率曲线面积。
    APτ=∫01p(r) dr\text{AP}_\tau = \int_0^1 p(r)\, dr
  3. 阈值数量共取 10 个均匀间隔的阈值,K = 10。
    K=10K = 10
  4. 求平均把这 10 个 AP 求平均,得到模型的综合定位评分。
    mAP∈[0,1]\text{mAP} \in [0, 1]

AI 应用场景

智能安防:从“翻录像”到“读秒报案”

阶段:模型推理与后处理

解决的问题:传统安防依赖保安手动回放数十小时录像,费时且易漏。ActionFormer 对长视频特征流直接预测异常动作的起止时间,十几分钟可处理数小时录像,并精确到秒。

具体案例:某园区在出入口部署摄像头,模型实时检测“人员闯入”“倒地求助”等动作。当检测到有人摔倒,系统自动截取 [14:02:11, 14:02:38] 片段推送给值班室,附带类别与置信度,值班员只看关键片段即可决策。

体育赛事自动剪辑

阶段:特征提取 + 时序检测

解决的问题:剪辑师需要在数小时比赛中找到所有进球、犯规时刻,人工拉片成本极高。ActionFormer 对整场比赛做时序检测,直接输出每个关键动作的起止时间,自动生成集锦初稿。

具体案例:篮球直播系统中,模型输入每帧的球员位置特征与语义特征,检测“三分出手”“扣篮”“犯规”等动作区间,自动拼接成 2 分钟高光集锦,剪辑师只需复核微调。

网络视频内容审核

阶段:长视频分析

解决的问题:审核人员需要逐帧检查长视频是否包含违规片段,人力成本极高。ActionFormer 能定位违规动作的精确时间段,审核员只需快速查看模型高亮区间。

具体案例:UGC 平台每天上传数百万小时视频,模型先做视频分类粗筛,再对可疑视频做动作定位,返回[违规开始秒, 违规结束秒],供人工复核与下架处理,审核效率提升数倍。

Python 演示

python49 行
import numpy as np T, C = 64, 8GT_S, GT_E = 24, 48 def build_features():    # 合成一段带噪声的特征序列,动作区间内信号更强    rng = np.random.default_rng(0)    X = rng.normal(0, 0.3, (T, C))    X[GT_S:GT_E] += 1.0    return X def scaled_attention(X):    # 简化版缩放点积自注意力:Q=K=V=X    d = X.shape[1]    S = X @ X.T / np.sqrt(d)    E = np.exp(S - S.max(axis=1, keepdims=True))    A = E / E.sum(axis=1, keepdims=True)    return A @ X def pyramid(X):    # 两层特征金字塔:第 2 层时间长度减半    X1 = scaled_attention(X)    X2 = scaled_attention(X[::2] + X[1::2])    return X1, np.repeat(X2, 2, axis=0)[:T] def t_iou(s1, e1, s2, e2):    # 时序交并比:交集长度 / 并集长度    inter = max(0, min(e1, e2) - max(s1, s2))    union = max(e1, e2) - min(s1, s2)    return inter / union def main():    X = build_features()    X1, X2 = pyramid(X)    # 融合两层特征得到逐帧置信度    score = (X1.mean(axis=1) + X2.mean(axis=1)) / 2    t = int(score.argmax())    # 阈值法提取连续动作区间(真实模型用回归分支直接输出偏移)    mask = score > score.max() * 0.5    idx = np.where(mask)[0]    s_pr, e_pr = int(idx[0]), int(idx[-1]) + 1    iou = t_iou(s_pr, e_pr, GT_S, GT_E)    print("峰值时刻: %d" % t)    print("预测区间: [%d, %d)  真实区间: [%d, %d)" % (s_pr, e_pr, GT_S, GT_E))    print("tIoU: %.2f" % iou) if __name__ == "__main__":    main()
目的:用 numpy 从零搭建一个简化版 ActionFormer 推理流程——合成带噪声的特征序列,经过自注意力与两层金字塔融合,得到逐帧置信度并提取出动作区间,最后用 tIoU 评估定位精度。
  1. X[GT_S:GT_E] += 1.0在真实动作区间内增强特征幅度,模拟“动作帧特征更强”的观测。
  2. S = X @ X.T / np.sqrt(d)计算缩放后的注意力得分矩阵。
  3. A = E / E.sum(axis=1, keepdims=True)用 softmax 将得分归一化为注意力权重。
  4. X2 = scaled_attention(X[::2] + X[1::2])相邻帧相加完成时间下采样,构成第 2 层金字塔。
  5. score = (X1.mean(axis=1) + X2.mean(axis=1)) / 2融合两尺度特征得到逐帧置信度。
  6. mask = score > score.max() * 0.5阈值化提取连续动作候选区间。
  7. iou = t_iou(s_pr, e_pr, GT_S, GT_E)用 tIoU 量化预测区间与真实区间的重合度。

常见误区

误区ActionFormer 是纯 Transformer 架构,视频又长,肯定比以前的候选区域方法慢很多,不可能用于工业落地。

正解特征金字塔把深层序列长度压缩到原来的 1/4 甚至 1/8,自注意力计算量大幅下降;同时无锚点设计免去了候选区域生成和大量冗余后处理。实际推理速度与主流单阶段方法相当,完全可部署在服务器端做离线视频分析。

为何常见:Transformer 在 NLP 里以“大模型、长文本、高算力”闻名,人们容易把这种印象迁移到视频场景,忽略了时序下采样带来的计算量红利。

误区既然叫无锚点,模型就是对每个帧凭空预测,不需要任何关于动作长度的先验知识。

正解无锚点的意思是不要手工预设的锚点集合,但先验仍然存在——多尺度金字塔本身就是一个“尺度先验”:每一层只看某一档时间粒度,相当于把常见动作时长分档隐式建模。它和锚点法的区别是:先验不再以离散框的形式存在,而是融入了网络结构。

为何常见:从“锚点”字面意思误解为“完全没有先验”,忽略了网络结构本身携带的归纳偏置。

误区自注意力能同时看到所有帧,全局信息都齐了,加位置编码只是锦上添花,可有可无。

正解自注意力的计算公式对输入顺序完全对称(置换不变性):把第 3 帧和第 50 帧交换位置,输出几乎不变。但动作检测极度依赖时间顺序——“先走近再伸手”和“先伸手再走近”完全不同。位置编码把“第几帧”的序号信息注入特征,模型才知道先后关系,才能分辨动作的方向性和因果逻辑。

为何常见:误以为“看得全 = 分得清顺序”,没有注意到注意力公式本身不含任何顺序信息。

误区模型预测的区间和真实标注的 tIoU 越高,就代表模型越强,其他指标都不用看。

正解tIoU 只是单个匹配的门槛。一个只预测“整段视频”的模型,在 tIoU=0.1 时可能拿高分,在 tIoU=0.7 时却几乎全错。因此业界用 mAP:在多个 tIoU 阈值下分别计算 AP 再平均,综合衡量宽松匹配和严格匹配下的表现。只看单阈值容易以偏概全。

为何常见:目标检测领域长期用 0.5 IoU 的 mAP,很多人把习惯带过来,忽略了时序检测对边界精度的更高要求。

面试题

Q1. 时序动作检测的核心输出是什么?

单选题 · easy

  • A.输出每帧类别
  • B.输出起止和类别← 正确答案
  • C.输出段落主题
  • D.输出物体位置

答案:B。时序动作检测要回答“什么动作、从哪一秒到哪一秒”,核心输出是动作类别加起止时间。按帧分类属于行为识别,段落主题属于视频摘要,物体位置属于目标检测,都不是时序检测的输出。

Q2. 哪个指标专门衡量预测区间与真实区间的重叠程度?

单选题 · mid

  • A.目标检测mAP
  • B.文本生成BLEU
  • C.时序交并比tIoU← 正确答案
  • D.图像相似SSIM

答案:C。tIoU 把动作区间看作一维框,交集除以并集,是时序动作检测最基础的定位指标。mAP 是整体评估指标而非原始重叠度量,BLEU 用于文本,SSIM 用于图像质量。

Q3. ActionFormer 的核心技术特征包括哪些?

多选题 · mid

  • A.纯注意力编码器← 正确答案
  • B.多尺度特征金字塔← 正确答案
  • C.基于候选区域设计
  • D.无锚点直接回归← 正确答案

答案:ABD。ActionFormer 用纯 Transformer(注意力)做编码,用金字塔覆盖多尺度,并做无锚点直接回归。基于候选区域是两阶段老路,恰恰是 ActionFormer 要革新的对象,因此不选 C。

Q4. 自注意力公式中除以 √d_k 的主要作用是什么?

单选题 · mid

  • A.增大模型参数
  • B.防止数值饱和← 正确答案
  • C.加快训练速度
  • D.生成多尺度

答案:B。QK^T 的数值随维度 d_k 增大而变大,softmax 在输入很大时梯度趋近 0(饱和),除以 √d_k 让分数保持温和,训练更稳定。它不增加参数,也不直接决定训练速度或尺度生成。

Q5. 特征金字塔主要解决什么问题?

单选题 · easy

  • A.解决视频偏色
  • B.应对时长差异← 正确答案
  • C.处理音频噪声
  • D.降低显存占用

答案:B。视频里动作时长差异巨大,单一时间分辨率的特征难以同时把握长动作的全局与短动作的细节。金字塔通过逐层下采样,让不同层各管一档时间粒度,从而应对时长差异。

Q6. ActionFormer 的边界回归分支直接预测什么?

单选题 · mid

  • A.动作类别概率
  • B.锚点的位置偏移
  • C.到起止点的跨度← 正确答案
  • D.输出像素的颜色

答案:C。回归分支对每个时刻预测两个跨度:动作起点离当前帧多远、终点离当前帧多远,再推出预测区间。锚点偏移是传统锚点法的思路,ActionFormer 并不使用;类别概率由分类分支负责。

Q7. 训练时分类损失用 Focal Loss 的主要原因是什么?

单选题 · hard

  • A.减少计算开销
  • B.缓解样本不平衡← 正确答案
  • C.替代回归损失
  • D.提升推理速度

答案:B。长视频中背景帧远多于动作帧,正负样本严重失衡。Focal Loss 通过调制因子压低易分负样本的损失贡献,让模型聚焦少数的困难动作样本。它不改变计算开销,也不替代回归损失,与推理速度无关。

Q8. 关于位置编码,下列说法正确的是?

多选题 · mid

  • A.注意力对顺序不敏感← 正确答案
  • B.编码提供时序信息← 正确答案
  • C.位置编码完全可省
  • D.编码只用于分类

答案:AB。自注意力是置换不变的,交换两帧位置输出不变,因此必须靠位置编码注入“第几帧”的顺序信息。位置编码在回归、分类中都会使用,完全可省的说法是错误的。

Q9. ActionFormer 在 ActivityNet 上的 mAP 是如何计算的?

单选题 · hard

  • A.仅取单个阈值
  • B.多阈值取平均← 正确答案
  • C.逐像素求平均
  • D.取最大召回率

答案:B。ActivityNet 采用 0.5 到 0.95、间隔 0.05 共 10 个 tIoU 阈值,分别计算各阈值下的 AP 再取平均得到 mAP。单阈值只能反映某一苛刻程度下的精度,不能全面衡量定位能力。

Q10. 相比锚点法,无锚点设计的优势有哪些?

多选题 · easy

  • A.后处理流程精简← 正确答案
  • B.免手工设计锚点← 正确答案
  • C.精度必然会更高
  • D.超参数数量更少← 正确答案

答案:ABD。无锚点直接预测起止跨度,不需要预设锚点集合,也不需要基于锚点的匹配后处理,超参数更少。精度更高不是必然结论,只能说在主流基准上达到了更强效果,因此不选 C。