边界精修指南:action-detection 中位置回归与提案评分机制详解

发布时间:2026/10/8 19:38:47

边界精修指南:action-detection 中位置回归与提案评分机制详解 边界精修指南action-detection 中位置回归与提案评分机制详解【免费下载链接】action-detectiontemporal action detection with SSN项目地址: https://gitcode.com/gh_mirrors/ac/action-detection时序动作检测Temporal Action Detection的目标是在未剪辑的长视频中同时回答两个问题动作在哪时间边界和动作是什么类别。而边界精修正是决定检测精度上限的关键一环。本文将带你深入 action-detection 项目基于 ICCV 2017 的 Structured Segment Networks简称 SSN的源码逐行拆解其中的位置回归与提案评分两大机制帮助你理解提案如何被粗筛、又如何被精修的完整链路。为什么需要边界精修粗提案的精度瓶颈任何两阶段检测器都遵循同一逻辑先用廉价手段生成大量时序提案proposal再用网络打分筛选。但无论是滑窗、还是基于 actionness 的 TAG 提案边界都只是大概齐——它们可能只覆盖了动作的中间部分也可能多框进了前后几秒的无关内容。评测指标 mAP 按 IoU 阈值衡量边界吻合度IoU 阈值越高如 0.5、0.7边界误差对分数的影响越大。SSN 的解决办法是双管齐下位置回归Location Regression让网络预测边界偏移量把提案推向真实动作区间提案评分Proposal Scoring用更丰富的结构化特征区分完整动作、不完整动作与纯背景。这两步分别对应 ssn_models.py 中的回归头与分类头下面逐一展开。三段式结构SSN 如何为精修建模SSN 把每个提案按比例切成三段起始段starting、主体段course、结束段ending。在 ssn_models.py 中默认配置为 2 段起始 5 段主体 2 段结束配合 ops/ssn_ops.py 中的 STPPStructured Temporal Pyramid Pooling做金字塔池化。结构上的精妙之处在于三路分支各司其职分支输入特征输出作用活动度分类器主体段特征背景 各类别概率判断是不是这个动作完整度分类器三段全量特征各类别完整度分数判断边界是否框准位置回归头三段全量特征各类别中心偏移 时长缩放修正时间边界这段结构化的粗到细设计是后续所有精修逻辑的基石。位置回归机制中心偏移与时长缩放回归目标的构造回归目标在 ssn_dataset.py 的compute_regression_targets中生成核心只有两行中心偏移loc_reg (gt_center - prop_center) / prop_size即真实动作中心相对提案中心的偏移量除以提案时长做归一化时长缩放size_reg log(gt_size / prop_size)真实时长与提案时长的对数比。这两者的物理意义很直观回归头输出的不是绝对帧号而是提案自身比例尺上的相对修正天然与提案长度解耦。在训练前ssn_dataset.py 还会统计所有前景提案的均值与标准差把回归目标标准化z-score避免量纲差异干扰训练。分类别回归与 Smooth L1 损失回归头输出维度为2 * num_class即每个类别预测一组 (中心偏移, 时长缩放)。ops/ssn_ops.py 中的ClassWiseRegressionLoss先按样本的真实标签取出对应类别的预测再用Smooth L1计算损失——它对离群点更鲁棒是边界回归任务的标准选择。推理时的边界重算评估阶段eval_detection_results.py 的perform_regression把预测值还原为新的边界new_center center duration * loc_score new_duration duration * exp(size_score)新的起止时间 新中心 ± 新时长的一半并裁剪回 [0, 1] 的相对坐标范围。注意这一精修发生在NMS 之后、对每个类别分别执行——先筛掉冗余再精修幸存者既省计算又稳。提案评分机制活动度 × 完整度的乘积融合三路分数如何合成最终得分SSN 在 eval_detection_results.py 中这样融合三路输出combined_scores softmax(activity_scores)[:, 1:] * exp(completeness_scores)softmax(activity_scores)剔除背景类后得到是某类动作的概率exp(completeness_scores)把完整度分数映射为正数作为边界吻合度的置信权重。两者相乘既要求类别正确又要求边界完整缺一不可。这也解释了为什么 SSN 能比单纯分类器在边界精度上高出一截。完整度分类器的 OHEM 训练完整度分类器要区分三种样本前景IoU 0.7、不完整0.01 IoU 0.3 且覆盖了动作的部分时段、背景IoU 极低。其中不完整样本最有教学价值——它告诉网络框只框了一半该给低分。ops/ssn_ops.py 中的OHEMHingeLoss实现了在线难例挖掘对每个批次的负样本按损失降序排序只回传前 17%默认ohem_ratio0.17的梯度让训练聚焦在最难区分的不完整提案上。双流分数融合RGB 与 Flow 两个模态各自产出分数后eval_detection_results.py 的merge_scores按权重加权求和这也是 THUMOS14 上 RGBFlow 能把 mAP0.5 从单流 22.50% 提升到 27.36% 的原因。关键阈值与采样配置精修的数据地基回归目标的质量取决于采样策略data/dataset_cfg.yaml 中为 THUMOS14 / ActivityNet v1.2 分别配置了关键阈值fg_iou_thresh: 0.7IoU 超过该值的提案才被视为前景并计算回归目标incomplete_iou_thresh: 0.3低于该值且覆盖动作主体部分的判为不完整样本bg_iou_thresh: 0.01低于该值视为纯背景。每个视频每批采样 8 个提案前景:背景:不完整 1:1:6可见不完整样本占比极高——这正是边界精修能学到东西的关键数据来源。在 ssn_dataset.py 中起始段和结束段还会向外扩展提案时长的 50% 并记录缩放系数scaling用于 STPP 池化时对齐不同长度的上下文。完整运行链路训练、测试与评估三步训练 SSN在 ssn_train.py 中总损失为三者加权loss act_loss comp_loss * weight reg_loss * weight启动训练以 THUMOS14、RGB 模态为例git clone --recursive https://gitcode.com/gh_mirrors/ac/action-detection python ssn_train.py thumos14 RGB -b 16 --lr_steps 20 40 --epochs 45测试与评估ssn_test.py 对每个提案输出活动度、完整度、回归三类分数eval_detection_results.py 随后完成分数融合、top-k 截断、时间维 NMS阈值 0.2、位置回归精修最后调用 ActivityNet 工具包计算各 IoU 阈值下的 mAP。如果想对比精修到底有多大用可以加--no_regression跑一遍直接感受位置回归对边界精度的提升。小结一条值得记住的精修公式把整条链路浓缩成一句话粗提案 → 三段结构化建模 → 活动度×完整度评分 → 位置回归重算边界 → NMS 输出。位置回归负责推边界评分机制负责筛好坏二者协同才构成完整的边界精修闭环。理解了这个机制再去看 ssn_models.py、ops/ssn_ops.py 和 eval_detection_results.py 的源码你会发现每个模块都严丝合缝地服务于同一目标——把时间边界修得更准。【免费下载链接】action-detectiontemporal action detection with SSN项目地址: https://gitcode.com/gh_mirrors/ac/action-detection创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/5 23:47:02

G-Helper性能调校五分钟搞定:华硕笔记本实用设置教程

G-Helper性能调校五分钟搞定:华硕笔记本实用设置教程 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Exp…

2026/10/8 19:37:43

Python NumPy实现数组排序与过滤示例分析讲解

前言 NumPy 是第三方库,不是标准库,使用前需要 pip install numpy。本机没有 Python 解释器也没有装 NumPy,所以本文的示例无法在本机运行验证,只能逐行人工推演;函数签名、返回值和版本差异一律以 NumPy 官方文档为准…

2026/10/8 19:37:43

【人工智能】知识库是你的消化系统

【人工智能】知识库是你的消化系统摘要:知识库不是仓库,而是你的消化系统——存进去的东西必须真正变成你自己的血肉。本文对比了「仓库式」与「消化系统式」两种用法,说明往知识库中丢什么、如何逼自己想清楚,并针对学生、上班族…

2026/10/8 19:37:43

信息论基础学习笔记

《信息论基础》翟明岳|第一章 绪论 学习笔记前言:信息论之父——克劳德香农克劳德艾尔伍德香农(Claude Elwood Shannon,1919—2001),美国数学家,信息论的创始人,被誉为“信息时代之父…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:02:17

自然数立方等于连续奇数之和:从证明到编程验证

十几年来我一直游走在数学科普和编程教学这两块内容之间,对“看起来像魔法、拆开全是数学”的结论总是格外敏感。最近翻资料时又撞见一句话:任何一个自然数 m 的立方,都可以写成 m 个连续奇数之和。2 的立方等于 3 加 5,3 的立方等…

2026/10/8 0:02:17

C#上位机SSH连接实战:用SSH.NET补齐超时、批量与密钥认证

简介:这是一份基于 C# 开发的 SSH 连接功能半成品工程,原本作为另一个主项目的子功能模块,现独立打包分享。工程采用 WinForms 界面,包含源码、解决方案、安装部署工程、NuGet 依赖包及说明文档,适合正在做远程连接、网…

2026/10/8 0:02:17

Java SpringBoot一体化智能售后系统设计与实现全解析

毕业设计年年做,Java Web 方向的题目翻来覆去就那么几个,但“一体化智能售后系统”这个题,每次看到我都觉得值得认真聊一聊。它不是一个简单 curd 堆出来的管理系统,而是把客户、工单、派单、处理、回访、统计整条链路串起来的一套…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑