小区门口,张大爷的快递不翼而飞。王阿姨调出整整 24 小时的监控录像,要回答两个问题:快递在“几点几分”被拿走(when),拿快递的动作“是什么”(what)。她不能只看某一帧——先快进浏览,圈出几个可疑时间段;再逐秒回放,确认每一秒画面里在发生什么;最后把自己圈的时间段和回放确认的事实对一对,看圈得准不准。这套流程,就是视频动作检测与密集时序预测在做的事:AI 在一条没有剪辑过的长视频里,逐帧判断画面内容,圈出每个动作发生的时间区间,并给出类别和置信度。这篇文章就带你把这个过程拆开看明白。
学完这部分,你能理解视频 AI 如何从“看懂一帧”升级到“看懂一段”,这对从事视频理解、安防监控、内容审核的 AI 从业者是核心基本功。
目录
可视化演示
展示布谷鸟哈希使用两个哈希表和两个哈希函数的插入过程,冲突时踢出已有元素到其备选位置。
本节配有交互动效(进入视口后自动加载,约 3KB)。
布谷鸟哈希 每个键有两个哈希位置,分别在T1和T2中 冲突时踢出已有元素,让其寻找备选位置 最坏情况下可能陷入无限循环
时序动作定位:在时间轴上锁定“那一刻”
王阿姨要找出快递被拿走的事件,最关心的第一件事是:它发生在几点几分?她不会说“大概是下午”,而是要准确说出“15:02 到 15:05”这样的起止时刻。这个从 24 小时录像中把“一次事件”抠出来的过程,就是时序动作定位(Temporal Action Localization)。它的输入是一条没有修剪过的长视频,输出是若干动作实例。
一个动作实例在计算机里就是一个四元组:起始时刻、结束时刻、动作类别、置信度。类别回答“是什么”(取件、路过、争吵),起止时刻回答“在什么时候”,置信度回答“模型多有把握”。如果把图像目标检测比作“在画面里用框圈出物体”,那时序动作定位就是“在时间轴上用区间圈出动作”——把二维的空间框换成一维的时间框。
难点在于动作边界天然模糊:人是慢慢靠近的,没有像素级的“从第几帧开始算取件”的绝对标准;动作时长也差异悬殊,挥手一瞬间不到 1 秒,蹲地拆包裹可能持续 5 分钟。模型必须同时精细感知“何时开始”和“何时结束”。
王阿姨最终在时间轴上写下“15:02–15:05,取件,高把握”,这条笔记就是 $S_i$ 的现实版。她圈得越准、类别报得越对,这份笔记就越有用——评估系统要做的,就是量化这份“圈得准不准”。
- 动作实例索引$S_i$ 表示模型预测出的第 $i$ 个动作实例,一条视频会输出若干个这样的实例。
- 起始时刻$t_s^{(i)}$ 是模型预测的动作开始时刻,单位通常是帧序号或秒。
- 结束时刻$t_e^{(i)}$ 是动作结束时刻,与 $t_s^{(i)}$ 一起构成时间区间。
- 类别与置信度$c^{(i)}$ 是动作类别(如“取件”),$p^{(i)}$ 是模型对该区间判定为该类别的置信度得分。
密集时序预测:一秒一秒地给画面盖章
王阿姨知道大致时间还不够,她会把那段录像逐秒回放:3 点 00 秒画面没人,3 点 01 秒有人影,3 点 02 秒弯腰……每一秒,她心里都在给画面盖一个章:“无异常”或“有人”。这种在时间轴的每一个位置上都输出判断的做法,就是密集时序预测(Dense Temporal Prediction)——不是给整段视频一个结论,而是对每一帧(每一秒)都给一个预测。
技术上,密集预测最常见的形态是逐帧分类:模型提取第 $t$ 帧的特征,通过分类网络得到该帧属于每个类别的原始得分,再用 softmax 把这些得分转换为概率分布。概率最大的类别,就是“当前帧正在发生什么”的预测结果。
softmax 有两个让工程师放心的性质:所有类别的概率相加等于 1,且每个概率都在 0 到 1 之间,可以直接当置信度用。不过逐帧预测也有麻烦:相邻帧内容几乎一样,预测却可能来回抖动,所以实际系统还会加时序平滑(例如滑窗投票、时序卷积),让“盖章”更加稳定。
每一帧都被盖上一个“概率章”,把这些章连起来看,就能看到“先无异常、有人、取件、再无异常”的连续故事。这正是王阿姨逐秒盯屏幕时心里发生的事。
- 原始得分$z_{t,c}$ 是模型给第 $t$ 帧打出的、属于类别 $c$ 的原始得分(logit),可正可负。
- 指数放大$e^{z_{t,c}}$ 把得分变成正数,同时拉大差距,让“有把握”的类别更突出。
- 归一化分母 $\sum_{k=1}^{C} e^{z_{t,k}}$ 是所有类别的指数和,相除后概率落在 $[0,1]$ 且总和为 $1$。
- 概率解释$P(c \mid \mathbf{f}_t)$ 表示给定第 $t$ 帧特征时属于类别 $c$ 的概率,取最大者即为该帧预测。
模型架构:保安室里的智能看片装备
王阿姨不是靠肉眼硬看的。保安室里有一套联动装备:先放大画面看清细节,再把连续几十秒的画面串起来理解,最后把结论分成两条线——“这是什么动作”和“动作从哪到哪”。这套“看清→串联→下结论”的流程,正好对应视频动作检测模型的三大部件。
第一件是视频编码器:输入一小段原始视频帧,输出紧凑的语义特征。常见实现是 3D 卷积网络或视频 Transformer,它们一次能“看”一个包含多帧的片段,捕捉短时运动。第二件是时序建模层:沿着时间轴整合上下文,常见有时序卷积、循环网络(LSTM/GRU)和自注意力,让模型在判断某一帧时能“参考前后文”。第三件是预测头:通常分成两条分支,一条负责类别预测(分类头),一条负责起止边界回归(定位头)。
为了应对动作时长差异大,模型还会借鉴图像里的特征金字塔思路,在不同时间粒度上做多尺度特征;短动作用细粒度特征,长动作用粗粒度特征,各自有合适的“尺子”。
王阿姨的“看清画面”对应编码器,“结合前后几分钟”对应时序建模,“分别回答是什么和从哪到哪”对应两个预测头。装齐这套装备,她才能从“看到有人”升级到“判断这是取件还是寄件”。
- 输入片段$v_{t-\Delta}, \dots, v_{t+\Delta}$ 是以第 $t$ 帧为中心、左右各取 $\Delta$ 帧的输入窗口。
- 编码器$\Phi(\cdot; \theta)$ 是带可学习参数 $\theta$ 的视频编码网络,负责把原始像素变成语义特征。
- 语义特征$\mathbf{f}_t$ 是编码后的特征向量,包含了这一小段时间内的运动与外观信息。
候选框生成:先圈出可疑时间段
王阿姨不会把 24 小时一秒不落地看完。她会先快进,捕捉到“有人影晃动”的瞬间就停下来,把“下午 3 点前后”圈成可疑时间段,再多圈几个,比如“中午 12 点 20 分附近”“傍晚 6 点那会儿”。这个“先圈出一批可疑时间段”的动作,就是候选框生成(Temporal Proposal Generation)。之后的分类和边界精修,都只在这些候选段上进行。
候选框生成有两条主流路线。自底向上:先用密集时序预测得到逐帧“是不是动作”的前景概率,再把连续的、概率高的帧合并成候选段,按得分排序送后续模块。自顶向下:类似图像检测的锚点法,在时间轴上预先摆放一批不同长度的“时间锚点窗口”,让一个小网络预测每个窗口里有没有动作,再回归修正左右边界。
锚点法在时间轴上每隔固定步长放一个中心点,每个中心配一组宽度呈倍数增长的窗口。比如步长 16 帧,基础宽度 8 帧,下一档宽 16 帧、32 帧……长短动作都有对应的“尺码”。生成的候选段非常多,最后用分类置信度排序,再用非极大值抑制(NMS)去掉互相高度重叠的低分候选,保留少量高质量片段。
王阿姨圈出的可疑时间段有长有短、有松有紧,最后她划掉明显不对劲的、合并重叠的——这就是候选框生成加 NMS 的直觉版。
- 锚点中心$c_i$ 是第 $i$ 个锚点的中心位置,按步长 $\delta$ 等距排列在时间轴上。
- 步长$\delta$ 是相邻锚点中心的间隔,控制候选的密度,越小越密、计算量越大。
- 窗口档位$w_k$ 是第 $k$ 档窗口宽度,由基础宽度 $w_0$ 乘以尺度倍率 $\alpha$ 的 $k$ 次方得到。
- 多尺度覆盖不同 $k$ 对应不同长度,保证短动作(小窗口)和长动作(大窗口)都被覆盖。
时序IoU:两段时间重合的“数学尺子”
王阿姨圈的是“下午 3 点 10 分到 3 点 30 分”,而真实案发是“3 点 22 分到 3 点 25 分”。她心里得有个判断:我圈得准不准?一个客观的数学尺子就是时序 IoU(Temporal IoU):两段时间重叠的长度,占它们合并起来总长度的比例。
时序 IoU 与图像检测里的 IoU 思路完全一致,只是把二维区域的“面积”换成一维区间的“长度”。交集是两段时间互相重叠的部分,并集是两段时间覆盖的总长度。完全重合时 IoU = 1,毫无重叠时 IoU = 0。评估中,候选段与某个真实动作段的 IoU 超过阈值(通常取 0.5)才算匹配成功,计为正例;否则计为错误预测。
计算时注意边界:先求交集长度——用两段结束时刻的较小值减去开始时刻的较大值,如果结果是负数,说明两段根本没重叠,直接记 IoU = 0。并集长度等于两段自身长度之和减去交集长度,因为交集被重复计算了一次。
如果王阿姨圈的时间段和真实案发时间高度重合,IoU 接近 1,这份“可疑圈画”才值得信任;IoU 只有 0.2,说明她只是“沾了个边”,几乎等于没圈准。
- 定义区间$[s_a, e_a]$ 与 $[s_b, e_b]$ 分别代表两个时间段,$s$ 为开始、$e$ 为结束。
- 交集长度$|[s_a,e_a] \cap [s_b,e_b]|$ 是两段重叠部分的长度,等价于 $\min(e_a,e_b) - \max(s_a,s_b)$,为负时取 0。
- 并集长度$|[s_a,e_a] \cup [s_b,e_b]|$ 是两段合起来覆盖的总长度,等于两段长度之和减去交集长度。
- 比值范围因为交集永远不大于并集,所以 $IoU_T \in [0,1]$,越接近 1 重合度越高。
标注与数据:给监控录像写注释
王阿姨的“火眼金睛”不是天生的,是长期照着前辈的注释学出来的:过去的监控录像上标着“×分×秒到×分×秒:取件”“×分×秒:有人争吵”。对 AI 来说,这些注释就是数据集里的标注,是训练时用来对照的“标准答案”。
时序动作定位最常使用的是区间级强标注:每一个动作实例记录三样东西——类别、起始时刻、结束时刻;密集逐帧预测则可以用帧级标注:每一帧标一个类别。标注越细,模型学得越准,但人工成本也越高——一个 3 分钟的片段逐帧标注可能要花几个小时。
为了降成本,出现了弱监督方式:只告诉模型“这段视频里有取快递这个动作”,却不给具体的起止时间。模型只好学会把“注意力”放到视频里真正发生该动作的片段上,自己去推断时间边界。典型的数据集如 THUMOS、ActivityNet 就提供了不同粒度的标注。此外,不同标注者标出的边界本身就有差异,这种标注噪声也是实际工程要处理的。
就像“弹幕注释”写得越细,新保安学得越快,但写注释的人力也越贵——弱监督就是只写“这里有大事件”,把精确时刻留给模型自己去悟。
- 强标注集合$\mathcal{A}$ 是区间级标注的集合,第 $i$ 个元素记录起始 $s_i$、结束 $e_i$、类别 $c_i$,共 $N$ 个动作实例。
- 弱标注集合$\mathcal{B}$ 是视频级标注,第 $v$ 个视频只给类别 $c_v$,共 $M$ 个视频,不含任何起止时间。
- 两种粒度强标注信息量大、标注贵;弱标注信息少、标注便宜,催生了弱监督定位方法。
评估指标:给“找茬”打分的试卷
一个月后,物业要考核王阿姨:给一批她没看过的监控,让她圈出所有可疑事件,再对照真实记录判卷。圈对了加分,圈错了扣分,圈的时间对不上也算错。这套判卷标准,对应时序动作定位最常用的评估指标——mAP(mean Average Precision,平均精度均值)。
评估流程有四步。第一步,模型输出所有候选段,每段带类别和置信度。第二步,按置信度从高到低排序,形成“最有把握的先看”的顺序。第三步,把候选段与真实段做时序 IoU 匹配,超过阈值(如 0.5)才算命中,对应一次正确圈画;一个真实段只匹配一个候选段,剩下没命中的都算误圈。第四步,按顺序累计计算精度和召回,画出“精度—召回曲线”,求曲线下的面积得到 AP;对每个类别都算一个 AP,再取平均就是 mAP。
AP 综合了“圈得准不准”(精度)和“圈得全不全”(召回),mAP 则是所有类别的综合表现。论文里常见的 mAP@0.5 表示 IoU 阈值取 0.5,mAP@0.75 则严格得多。阈值怎么选要看业务:安防宁可多报几个可疑段(低阈值)也不愿漏掉真案件;自动剪辑则追求高精度(高阈值),避免集锦里出现无关片段。
mAP 就是王阿姨这份“监控找茬”试卷的总分,IoU 阈值是阅卷的严格程度:阈值越高考得越严,分数自然越难看,但也越能反映真实的定位精度。
- 排序把所有候选段按置信度从高到低排序,这是 AP 计算的前提,排序越合理分数越高。
- 召回增量$R_n - R_{n-1}$ 是加入第 $n$ 个候选后召回率的变化量,用来给每个新增候选“加权”。
- 当前精度$P_n$ 是排到第 $n$ 个候选时的累计精度,即目前命中数除以已处理候选数。
- 按类平均$AP_c$ 是第 $c$ 类的平均精度,$mAP$ 再对所有 $C$ 个类别取平均。
AI 应用场景
智能安防监控的事件检索
阶段:视频离线分析 / 实时告警
解决的问题:传统保安回看 24 小时录像耗时且极易漏看;AI 先做密集时序预测逐帧判断“摔倒、争执、偷盗”等事件,再把连续可疑帧合并成候选段,按置信度排序推送给保安复核,把“人海战术”变成“算法初筛+人工确认”。
具体案例:某园区部署算法后,丢件找回从 2 小时人工回放缩短到 10 分钟:系统自动圈出“有人靠近快递架”的三个时间段,保安只看这三段就锁定了嫌疑人。这正是王阿姨查监控的自动化版本。
体育赛事精彩集锦自动剪辑
阶段:视频内容结构化
解决的问题:剪辑师逐场比赛找“进球、扣杀、得分”镜头极其耗时;时序动作定位在整场比赛中定位每个精彩动作的时间区间和类别,自动拼接集锦,并允许编辑按类别筛选。
具体案例:足球赛事直播中,系统实时检测“射门、扑救、进球”三类动作,进球后 30 秒内自动生成回放片段推送,编辑只需确认即可上线,显著缩短了集锦生产链路。
短视频内容合规审核
阶段:内容安全筛查
解决的问题:审核员需在长视频中定位违规片段(如危险动作、不雅画面),逐段排查效率低;密集时序预测逐帧分类加上时序定位,自动圈出可疑区间,再交由人工复核,降低漏审风险。
具体案例:短视频平台对用户上传的骑行视频做“危险驾驶”识别,在 3 分钟片段中定位出 8 秒危险加速区间并触发人工复核,避免了整条视频一刀切下架。
Python 演示
import numpy as np class FrameFeature: """合成视频:T帧特征,含两个动作片段""" def __init__(self, T=300, seed=42): rng = np.random.RandomState(seed) self.T = T self.feats = rng.randn(T, 32).astype(np.float32) self.gt = [(120, 181, 1), (220, 251, 2)] # (起始, 结束, 类别) for s, e, c in self.gt: self.feats[s:e, c - 1] += 2.0 self.gt_labels = np.zeros(T, dtype=np.int64) for s, e, c in self.gt: self.gt_labels[s:e] = c @staticmethod def softmax(X): X = X - X.max(axis=1, keepdims=True) E = np.exp(X) return E / E.sum(axis=1, keepdims=True) def dense_predict(self, mu): """逐帧softmax: 返回(T, C)概率""" return self.softmax(self.feats @ mu.T) def merge_proposals(self, probs, min_len=8): """连续同类帧合并为候选段""" labels = probs.argmax(axis=1) props, s = [], None for t in range(self.T + 1): active = t < self.T and labels[t] > 0 if active and s is None: s = t elif s is not None and not active: if t - s >= min_len: props.append((s, t, labels[s])) s = None return props def temporal_iou(a, b): """一维区间交并比""" inter = min(a[1], b[1]) - max(a[0], b[0]) if inter <= 0: return 0.0 return inter / ((a[1] - a[0]) + (b[1] - b[0]) - inter) def compute_map(props, gt, threshold=0.5): """简化版mAP: 按区间长度代替置信度排序""" ranked = sorted(props, key=lambda p: p[1] - p[0], reverse=True) matched = [False] * len(gt) tp = fp = 0 precisions = [] for p in ranked: best_iou, best_idx = 0.0, -1 for j, g in enumerate(gt): if matched[j] or p[2] != g[2]: continue iou = temporal_iou((p[0], p[1]), (g[0], g[1])) if iou > best_iou: best_iou, best_idx = iou, j if best_iou >= threshold: tp += 1 matched[best_idx] = True else: fp += 1 precisions.append(tp / (tp + fp)) return sum(precisions) / len(precisions) if precisions else 0.0 def main(): video = FrameFeature() # 用真实标注统计类别原型, 模拟训练好的分类器 mu = np.zeros((3, 32), dtype=np.float32) for c in (0, 1, 2): idx = np.where(video.gt_labels == c)[0] mu[c] = video.feats[idx].mean(axis=0) probs = video.dense_predict(mu) pred = probs.argmax(axis=1) print("逐帧预测准确率: %.1f%%" % ((pred == video.gt_labels).mean() * 100)) props = video.merge_proposals(probs) print("候选框: %s" % [(s, e, c) for s, e, c in props]) best = max(temporal_iou((p[0], p[1]), g) for p in props for g in video.gt) print("候选框与真实段最佳IoU: %.3f" % best) for thr in (0.3, 0.5, 0.7): print("IoU=%.1f 时 mAP: %.3f" % (thr, compute_map(props, video.gt, thr))) if __name__ == "__main__": main()
self.feats[s:e, c - 1] += 2.0把动作帧的对应特征维度抬高,模拟“动作帧与背景帧可区分”。mu[c] = video.feats[idx].mean(axis=0)用真实标注统计每类特征中心,模拟训练好的分类器原型。return self.softmax(self.feats @ mu.T)对每一帧做 softmax 密集预测,输出逐帧类别概率。labels = probs.argmax(axis=1)取出每帧概率最大的类别,完成逐帧分类。props.append((s, t, labels[s]))把连续同类帧合并成时间段,生成候选框。inter = min(a[1], b[1]) - max(a[0], b[0])计算两个时间段的交集长度,是时序 IoU 的核心。matched[best_idx] = True一个真实段只匹配一个候选框,防止重复计正例。precisions.append(tp / (tp + fp))累计计算每个排序位置的精度,用于最终 AP。
常见误区
误区“视频动作检测不就是对每一帧跑一遍图像分类吗?帧分对了,动作不就知道了吗?我刚接触时就是这么想的,反正一个视频就是一串图片。”
正解逐帧分类只是密集时序预测这一中间环节。真正的动作检测要在时间轴上输出连续且完整的动作区间:需要把相邻帧的同类预测合并成段、填平抖动缝隙、去掉碎片,还要对时间边界做回归。只做逐帧分类会产生大量“一会儿有、一会儿没有”的碎片预测,就像王阿姨一秒一个结论却连不成一句完整的话,没法交付给业务使用。
为何常见:图像分类深入人心,视频又由帧组成,新手自然把“看懂视频”简单理解成“看懂每一帧”,忽略了时序维度的合并与定位。
误区“反正后续还有分类器把关,候选框多生成一些,覆盖全一点,总不会吃亏吧?”
正解候选框不是越多越好。过多的低质量候选会成倍增加后续分类和 NMS 的计算量,还会引入大量假正例(FP),拉低 mAP。评估时未匹配的候选都算误报,宁可候选少而精,也别多而滥。锚点法的采样密度、自底向上合并的前景阈值,都需要按动作时长分布精细调。
为何常见:直觉上“覆盖全 = 召回高”,但忽略了高召回可以靠边界回归和阈值调整获得,而盲目堆量带来的 FP 代价是实打实的。
误区“评估时把 IoU 阈值设到 0.9,定位必须极度精准才算对,这样模型不是更厉害吗?”
正解阈值是评估的“阅卷严格程度”,不是模型能力本身。阈值设太高,正样本急剧减少,大量定位稍偏的预测全被记为 FP,mAP 会很难看,且无法区分“基本圈对”和“完全没圈到”。常用 0.5 作基准、0.75 作严格档;实际业务按“宁可多查还是宁可少报”来选,而不是一味求高。
为何常见:人们容易把“指标数值高”和“标准严格”混为一谈,实际上不同阈值下的 mAP 不可直接比较。
误区“图像 IoU 算二维面积,时序 IoU 算一维长度,换一下公式不就行了吗?”
正解思路同源,但工程差异很大:图像目标有清晰像素边界,动作起止却天然模糊,标注噪声大;时序 IoU 的一维区间没有“面积”,匹配时还要考虑类别一致、一个真实段只匹配一个候选等策略。把两者混用,评估结果会失真。时序定位场景必须用专门的时序评测流程。
为何常见:名词相似、公式同构,初学者容易只看到“交并比”的相似,忽略边界模糊与匹配策略的本质差别。
误区“弱监督学习嘛,就是把原始视频丢给模型,什么标注都不要,让它自己看。”
正解弱监督时序动作定位依然需要“视频级”类别标注——告诉模型“这段视频里有取快递动作”,只是不给起止时间。模型借助注意力机制自己定位时间区间。完全没有标签属于无监督/自监督,定位稳定性差很多,目前产品落地仍以强监督或弱监督为主。
为何常见:“弱”字容易让人联想到“少/零”,加上一些科普夸大弱监督能力,造成误解。
面试题
Q1. 时序动作定位的核心目标是什么?
- A.识别视频中每一帧的物体类别
- B.在未修剪视频中定位动作起止时刻← 正确答案
- C.将整段视频压缩为单一向量表示
- D.对视频画面做风格转换处理
答案:B。时序动作定位的任务是在未修剪的长视频里找到每个动作的起止时刻并分类,就像王阿姨在 24 小时监控里锁定“15:02–15:05,取件”。识别每帧物体属于图像检测,压缩为单一向量属于视频分类,风格转换与定位无关,只有 B 正确。
Q2. 与图像IoU相比,时序IoU计算的是什么的交并比?
- A.像素区域与像素区域的重叠面积
- B.两段时间重叠长度与并集长度之比← 正确答案
- C.两个特征向量之间的余弦相似度
- D.预测框中心点与真实框的距离
答案:B。时序 IoU 把时间区间当成一维对象,交集长度除以并集长度,衡量两个时间段的重合程度。面积重叠是图像 IoU,余弦相似度度量方向,中心点距离度量位置偏差,都与“时间段重合”不是一回事。
Q3. 在密集时序预测中,模型通常对每一帧输出什么?
- A.该帧属于各类别的概率分布← 正确答案
- B.该帧在整段视频中的帧序号
- C.该帧所在镜头的光流均值
- D.该帧画面的像素级分割掩码
答案:A。密集时序预测对每一帧输出一个类别概率分布,取概率最大的类别作为该帧预测,就像给每一秒画面盖一个“事件章”。帧序号是位置信息,光流均值是运动特征,分割掩码是像素级输出,均不是逐帧分类的产物。
Q4. 时序候选框生成中“锚点法”的核心思路是?
- A.在时间轴上预设多尺度窗口再回归调整← 正确答案
- B.用分类网络直接输出最终的动作起止点
- C.在空间区域做滑窗检测提取目标物体
- D.用聚类算法对帧特征做无监督分组
答案:A。锚点法参考图像检测的 anchor 思想,在时间轴等距放中心点,每个中心配多档宽度的窗口,再用网络回归修正边界。直接输出起止点属于端到端回归思路,空间滑窗针对图像,聚类是自监督手段,都不是锚点法核心。
Q5. 在 mAP@0.5 评估中,IoU 为 0.4 的候选段会被如何处理?
- A.计为真正例并参与精度计算
- B.计为假正例使检测精度下降← 正确答案
- C.被忽略且不参与任何统计
- D.自动微调边界后重新打分
答案:B。mAP@0.5 要求候选段与真实段的时序 IoU 达到 0.5 才匹配为真正例,0.4 不满足,未匹配的候选一律计为假正例导致精度下降。评估不会忽略任何候选,也不会自动修正边界,所以 A、C、D 均错。
Q6. 弱监督时序动作定位通常只使用什么标注信息?
- A.每一帧的密集像素分割标签
- B.视频级别的动作类别标签← 正确答案
- C.每个动作实例的精确起止时间
- D.演员的人体骨骼关键点
答案:B。弱监督只给视频级类别标签,不标起止时间,模型靠注意力自己定位动作区间,省标注但难度更高。像素级分割标签和骨骼关键点属于其他任务的标注,精确起止时间属于强监督,A、C、D 均不对。
Q7. 将逐帧预测的连续同类帧合并成候选段时,主要依据是什么?
- A.帧之间的颜色直方图差异
- B.帧分类概率的时序连贯性← 正确答案
- C.帧与帧的拍摄时间戳间隔
- D.帧的分辨率是否保持一致
答案:B。合并连续同类帧依靠的是逐帧分类概率的时序连贯性——相邻帧大概率属于同一类别,所以把连续同类帧串成候选段。颜色直方图用于图像分割,时间戳间隔是录制元数据,分辨率一致性是预处理问题,都与“同类连续性”无关。
Q8. 下列哪些属于时序动作定位输出的动作实例信息?
- A.动作的类别标签← 正确答案
- B.动作的起止时间区间← 正确答案
- C.模型给出的置信度得分← 正确答案
- D.每帧计算得到的光流图
答案:ABC。动作实例由三要素构成:类别回答“是什么”,区间回答“何时”,置信度回答“多可靠”,对应公式中的 $c$、$t_s/t_e$、$p$。光流图是模型的输入特征之一,不是输出信息,所以 D 排除。
Q9. 关于时序IoU匹配与mAP评估,下列说法正确的有?
- A.IoU阈值越高对定位精度要求越严格← 正确答案
- B.一个真实动作段只能匹配一个候选框← 正确答案
- C.mAP是对所有类别AP取平均得到的← 正确答案
- D.IoU阈值越高mAP数值一定会越高
答案:ABC。阈值越高匹配越严格,mAP 通常下降而不是升高,D 错误;一个真实段只匹配一个候选段,避免重复计正例;mAP 是所有类别 AP 的平均,A、B、C 均正确。
Q10. 视频动作检测需要回答“何时发生了什么”,其输出通常包含?
- A.动作发生的时间区间← 正确答案
- B.动作的类别标签← 正确答案
- C.模型对该区间的置信度← 正确答案
- D.视频拍摄设备的型号
答案:ABC。视频动作检测的输出围绕“何时、发生了什么”:时间区间、类别标签、置信度得分三件套,正好是动作实例四元组去掉“编号”后的内容。拍摄设备型号是与任务无关的拍摄元数据,模型不需要输出它。