BMN:Boundary-matching network for temporal action proposal generation

news2024/11/29 4:32:17

Video Analysis 相关领域解读之Temporal Action Detection(时序行为检测) - 知乎本文投稿于 @极视角 公众号,链接为 文章链接. 上一篇 Video Analysis相关领域解读之Action Recognition(行为识别) - 知乎专栏介绍了 Action Recognition 领域的研究进展。Action Recognition主要是用于给分割好的…https://zhuanlan.zhihu.com/p/26603387[ECCV 2018] 用于时序动作提名生成的边界敏感网络 - 知乎这篇笔记主要介绍我们录用于ECCV 2018上的论文: "BSN: Boundary-Sensitive Network for Temporal Action Proposal Generation"。这篇论文主要针对时序动作提名生成(temporal action proposal generation)…https://zhuanlan.zhihu.com/p/39327364[ICCV 2019][时序动作提名] 边界匹配网络详解 - 知乎这篇笔记主要介绍我们团队(百度视觉技术部VideoPlus组)发表于ICCV 2019上的工作:" BMN : Boundary-Matching Network for Temporal Action Proposal Generation"[1]。这篇论文主要针对我去年所发表的BSN…https://zhuanlan.zhihu.com/p/75444151

时序动作检测的应用是相当广泛的,包括动作剪辑,精彩片段检测,高光检测等等,目前我主要是用在智能剪辑上,对运动类,电商或者萌宠类的视频进行精彩镜头剪辑。

1.定义

temporal action detection是要在视频序列中确定动作发生的时间区间(包括开始时间与结束时间)以及动作的类别,一般分成两个步骤:(1) temporal action proposal generation: 即进行时序动作提名,产生候选的视频时序片段,即相当于Faster-RCNN中的RPN网络的作用;(2) action classification: 即判断候选视频时序片段的动作类别。两个部分结合在一起,即实现了视频中的时序动作检测。高质量的时序动作提名应该具备几点特质:(1)灵活的时序长度(2)精确的时序边界(3)可靠的置信度分数。

时序动作检测的难点:

  • 难点1:在目标检测中,物体目标的边界通常都是非常明确的,所以可以标注出较为明确的边界框。但时序行为的边界很多时候并不是很明确,什么时候一个行为算开始,什么时候行为算结束常常无法给出一个准确的边界(指精确的第几帧)。
  • 难点2:只使用静态图像的信息,而不结合时序信息在行为识别中是可以的(虽然结合时序信息效果会更好)。但在时序行为检测中,是无法只使用静态图像信息的。必须结合时序的信息,比如使用RNN读入每帧图像上用CNN提取的特征,或是用时序卷积等。
  • 难点3:时序行为片段的时间跨度变化可能非常大。比如在ActivityNet中,最短的行为片段大概1s左右,最长的行为片段则超过了200s。巨大的时长跨度,也使得检测时序动作非常难。

2.bsn

bsn包括三个部分,1.视频特征提取,2.边界敏感网络,生成时序动作提名,3.非极大值抑制。 

在特征提取上使用的是双流网络,双流最后的输出是将rgb和光流进行拼接,实际上,这块用光流是很少的,一般是rgb和audio特征的拼接。由于是有时序的,最终的输出是一个二维的矩阵。

边界敏感网络包括三个模块,第一块是时序评估模块TEM,用的3个卷积对视频序列中每个位置上动作开始的概率、动作结束概率和动作同时进行的概率进行预测。第二块是提名生成网络,基于上面得出的概率序列来生成提名,怎么生成呢?选择动作开始和动作结束要满足两点条件之一,1.概率高于一个阈值,2.该时间节点的概率高于前一时刻以及后一个时刻,也就是个概率峰值,以此来选择动作开始或者结束的概率点,将候选开始时间节点和候选结束节点两两结合,保留时长满足要求的提名。如下所示,红线是开始概率,蓝线是结束概率,这样就生成了很多的时序段。到这里时序已经产生了,但是预测的是开始概率,动作进行概率和结束概率,仅用这三个概率还是无法评估时序本身的score,因此第三步为每个候选时序动作提名生成对应的特征描述,对于每个提名,取其本身时序区间作为center region,取开始节点和结束节点附近一段区间作为starting region和ending region,对于每个区间,在动作概率序列上的对应位置采样N个点,拼接后得到一个特征,最终利用PEM模块,一个简单的mlp,得到每个提名的置信度分数,置信度分数越高,则保留。看到这里,有几个问题,第一时序生成和置信度生成是割裂的,这不是一个端到端的网络,生成的时序的三个概率又作为PEM的输入,因此后续的bmn正是在这个点上对其进行优化。

 nms的计算是提名和真实gt之间按照iou进行筛选。

3.bmn

bsn是一个多阶段的方法,提名特征提取以及置信度评估是对每个时序提名逐个进行的,这也是一个可优化的点,也就是一组视频输入,输出的n个提名都需要重新经过PEM提特征得到置信度,显然是没有必要的,那么可以不可以在一个统一的网络中同时高效的产生时序概率序列和时序提供的置信度分数。

bmn主要包括三个模块,首先进行特征提取,这一步可以很多样,用tsm做特征提取都可以,第一个模块是backbone,base moudle模块包括两个1维卷积,处理输入的特征时序,大多数的bmn都是基于提好的特征进行预测的,目前用的比较广泛的是activity的特征提取数据集,base module输出后续两个模块所共享的时序特征序列。时序评估模块TEM包括两个1d卷积层,输出开始概率序列和结束概率序列,提名评估模块PEM包括了BM layer,以及生成置信图的一个3d卷积和3个2d卷积,最终输出为BM置信度图,提名生成和bsn一样,都是基于开始和结束概率进行配对,不过不需要再去训练时序提名特征网络,只需要从同时生成的二维置信度图中取出时序提名对应的置信度分数即可。最终在采用softnms去重。

因此bmn的核心在于BM机制(Boundary-matching mechansim),首先介绍下什么是BM置信度图?一个时序提名定义为一个开始边界和一个结束边界所构成的边界匹配对。按照时序提名开始边界的位置以及时序提名的长度将所有可能存在的时序提名结合成一个二维的边界匹配图。

上图,可以表示所有潜在的时序提名,在BM置信度图中每个点所代表的的数值就是其所对应的时序提名的置信度分数。因此可以通过生成置信度图来同时给所有时序提名生成置信度分数,横轴是T输入时序特征序列的长度,纵轴是D,为最大的时序提名长度, 注意上图,相同的行表明时序提名具有相同的时序长度,纵轴是时序提名长度,相同的纵轴表明时序长度相同,相同的列表明输入时序特征的长度的起始点是一样的,则具有相同的开始时间,实际上这个二维的BM图上的每个点都代表了一个二维坐标,即起始时间和时序长度,那么就锁定了一个时序的置信度。如何生成这个置信度图呢?首先从时序特征序列中生成BM特征图,再从BM特征图生成BM置信度图。

上图是从时序特征序列到BM特征图生成过程,通过采样矩阵和特征序列的乘积获取BM特征图,选定一个start之后,同一个时序长度上采样N个点作为该提名的特征。这个从时序特征采样到BM特征图的过程角BM layer。

从BM特征图到BM置信度图采用了3D卷积和2D卷积的来提取,训练中,采用BM标签图作为BM置信度图的监督。

最后看一下bmn的网络结构图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

转铁蛋白修饰纳米载体(纳米颗粒,介孔硅,四氧化三铁,二氧化硅等)

转铁蛋白又名运铁蛋白(Transferrin,TRF、Tf),负责运载由消化管吸收的铁和由红细胞降解释放的铁。以三价铁复合物(Tf-Fe3)的形式进入骨髓中,供成熟红细胞的生成。转铁蛋白主要存在于血浆中&#…

vue 动态表单优秀案例

不同的下拉框 就会显示不同的表单&#xff0c;表单配置是灵活匹配的&#xff0c;还有就是 一定要知道都有哪些类型的数据做到兼容起来。 app.vue <template><a-select v-model:value"FormDataSelect" :options"FormDataSelectList" /><a-fo…

相控阵天线(五):稀疏阵列(概率密度稀疏法、多阶密度加权法、迭代傅里叶(IFT)法)

目录简介稀疏线阵概率密度稀疏法多阶密度加权法迭代傅里叶(IFT)综合法对称分布稀疏阵列建模仿真简介 稀疏阵是在不明显改变阵列波束宽度的情况下去掉一些阵元&#xff0c;可以用满阵列的几分之一的阵元构造一个减低了增益的高方向性阵列&#xff0c;符合大型阵列设计中降低成本…

【C++】哈希算法

目录 1.哈希映射 1.1哈希的概念 1.2哈希冲突 1.3哈希函数 1.31直接定值法 1.32除留余数法 2.解决哈希冲突 2.1闭散列法 2.11线性探测 2.12二次探测 3代码实现 3.1状态&#xff1a; 3.2创建哈希节点类 3.21哈希表扩容&#xff1a; 3.3数据插入 3.4查找与删除 3.…

数据可视化之设计经验分享:轻松三步教你学会制作数据可视化大屏思路

当看到屏幕上一个个炫酷&#xff0c;具有科技感的数据大屏时&#xff0c;很多人都会好奇这是怎么做出来的。自己在制作大屏时明明按着需求做了&#xff0c;可是做出来后总是觉得画面不好看&#xff0c;不够炫&#xff0c;感觉很糟糕。 那要如何才能设计那样的数据可视化大屏呢…

JS 的新一代日期/时间 API Temporal

众所周知&#xff0c;JS的Date是出了名的难用&#xff0c;一直以来我们都在使用momentjs&#xff0c;dayjs等第三方库来处理日期和时间格式&#xff0c;于是 TC39 组织开始了对 Date 的升级改造&#xff0c;他们找到了 moment.js 库的作者&#xff0c;Maggie &#xff0c;由她来…

【深度学习】实验5答案:滴滴出行-交通场景目标检测

DL_class 学堂在线《深度学习》实验课代码报告&#xff08;其中实验1和实验6有配套PPT&#xff09;&#xff0c;授课老师为胡晓林老师。课程链接&#xff1a;https://www.xuetangx.com/training/DP080910033751/619488?channeli.area.manual_search。 持续更新中。 所有代码…

代码随想录刷题| 01背包理论基础 LeetCode 416. 分割等和子集

目录 01背包理论基础 二维dp数组 1、确定dp数组以及下标的含义 2、确定递推公式 3、dp数组如何初始化 4、确定遍历顺序 5、打印dp数组 最终代码 一维dp数组 1、确定dp数组的定义 2、确定递推公式 3、初始化dp数组 4、遍历顺序 5、打印dp数组 最终代码 416. 分割…

一次搞懂SpringBoot核心原理:自动配置、事件驱动、Condition

前言 SpringBoot是Spring的包装&#xff0c;通过自动配置使得SpringBoot可以做到开箱即用&#xff0c;上手成本非常低&#xff0c;但是学习其实现原理的成本大大增加&#xff0c;需要先了解熟悉Spring原理。如果还不清楚Spring原理的&#xff0c;可以先查看博主之前的文章&…

Vue实现简易购物车功能

用Vue写一个列表案例&#xff0c;页面布局什么的dom&#xff0c;不需要自己事先全部排好&#xff0c;而是通过li遍历&#xff0c;把数据遍历出来&#xff1b;先定义好div标签&#xff0c;li根据数组的长度datalist进行遍历&#xff0c;图片的链接要用“&#xff1a;”&#xff…

算法设计与分析 SCAU8597 石子划分问题

8597 石子划分问题 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC;JAVA Description 给定n个石子&#xff0c;其重量分别为a1,a2,a3,…,an。 要求将其划分为m份&#xff0c;每一份的划分费用定义为这份石子中最大重量与最小重量差…

nRF52832闪存FDS使用(SDK17.1.0)

陈拓 2022/10/29-2022/11/22 1. 简介 对于Nordic芯片内部FLASH存储管理有两种方式&#xff0c;FS (Flash Storage)和FDS (Flash Data Storage) 。FS是FDS的底层实现&#xff0c;FDS是对FS的封装&#xff0c;使用更容易。 Flash Data Storage&#xff08;FDS&#xff09;模块是…

容器与容器编排系统

Docker公司发明的「容器镜像」技术&#xff0c;创造性地解决了应用打包的难题。改变了一大批诸如容器编排、服务网格和云原生等技术&#xff0c;深刻影响了云计算领域的技术方向。 一、Docker 容器技术 概括起来&#xff0c;Docker 容器技术有3个核心概念容器、镜像和镜像仓库…

当3A射击游戏遇上Play to Earn,暴躁兔带你了解MetalCore

MetalCore是一款具有机甲风格的战斗射击类的Play to Earn & Free to Play游戏&#xff0c;暴躁兔对这款游戏之前也有做过分析&#xff0c;MetalCore在近期启动了alpha开放世界测试&#xff0c;之前有NFT的玩家获得key code之后可以在PC端下载后进行体验。alpha阶段在10月20…

如何使IOT2050成为PN设备

Profinet Driver&#xff08;PNDriver&#xff09;从V2.3开始支持IO设备(IOD)功能&#xff0c;支持通用网络接口和Linux操作系统&#xff0c;最小支持2ms的通讯周期。本文介绍如何编译PNDriver并运行在IOT2050上。 1. 编译PNDriver 因为PNDriver只支持32位模式&#xff0c;因…

TiDB ——TiKV

TiDB ——TiKV TiKV持久化 TiKV架构和作用TiKV数据持久化和读取TiKV如何提供MVCC和分布式事务支持TiKV基于Raft算法的分布式一致性TiKV的coprocessor TiKV架构和作用 数据持久化分布式一致性MVCC分步式事务Coprocessor RocksDB 单机持久化引擎&#xff0c;单机key-value的…

L2十档行情API接口的开发原理是什么?

L2十档行情API接口的开发原理不知道大家有没有了解过&#xff0c;其实在现实的股市量化交易中&#xff0c;就有不少的投资者也在思考这个问题&#xff0c;并且也有的部分交易者会选择自己开发来使用&#xff0c;不仅支持A股所有的股票数据&#xff0c;也能对期货、外汇、黄金等…

个人项目-部署手册

前言 一、RDS和ECS购买与配置 https://www.aliyun.com/?spm5176.12818093.top-nav.dlogo.3be916d0u0Ncp9 购买RDS(MYSQL)和ECS(规格族&#xff1a;突发性能实例 t6 )的时候尽量选择一个大区》如&#xff1a;华东&#xff08;杭州&#xff09;配置不需要太高(够自己使用就行了…

干货分享 | B站SLO由失败转成功,B站SRE做对了什么?

最近几年&#xff0c;Google SRE在国内非常流行。 Google SRE方法论中提出了SLO是SRE实践的核心&#xff0c;SLO为服务可靠性设定了一个目标级别&#xff0c;它是量化线上质量的关键因素&#xff0c;它是用来回答一个服务到底“什么时候叫做挂了”的根本依据&#xff0c;也是可…

Python网络爬虫入门篇

1. 预备知识 学习者需要预先掌握Python的数字类型、字符串类型、分支、循环、函数、列表类型、字典类型、文件和第三方库使用等概念和编程方法。 2. Python爬虫基本流程 a. 发送请求 使用http库向目标站点发起请求&#xff0c;即发送一个Request&#xff0c;Request包含&am…