热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【论文阅读】时序动作检测系列论文精读(2017年下)

文章目录4.CascadedBoundaryRegressionforTemporalActionDetection论文目的——拟解决问题贡献——创新实现流程详细方法5.R-C3D



文章目录


  • 4. Cascaded Boundary Regression for Temporal Action Detection
    • 论文目的——拟解决问题
    • 贡献——创新
    • 实现流程
    • 详细方法

  • 5. R-C3D: Region Convolutional 3D Network for Temporal Activity Detection
    • 论文目的——拟解决问题
    • 贡献——创新
    • 实现流程
    • 详细方法

  • 6. Single Shot Temporal Action Detection
    • 论文目的——拟解决问题
    • 贡献——创新
    • 实现流程
    • 详细方法


上一篇:【论文阅读】时序动作检测系列论文精读(2017年 上)

4. Cascaded Boundary Regression for Temporal Action Detection

论文目的——拟解决问题


  • 滑窗得到的proposal可能包含动作中具有显著特征的部分,但可能无法包含完整动作

贡献——创新


  • 提出了一种新型的两阶段动作检测网络,采用Cascaded Boundary Regression(CBR)进行级联式的渐进边界回归。

实现流程

在这里插入图片描述
提出two-stage的CBR网络,输入动作片段snippet,一阶段的proposal网络输出对边界回归(开始/结束时刻)的offset和该片段的动作得分(无视动作类别),若得分高于阈值,将校正后的片段输入二阶段的detection网络,输出n+1类动作下的具体动作得分和n类动作对应的boundary offset。两阶段内均对候选框的边界进行串联的渐进回归。

详细方法


  • Feature Extraction:
    将视频裁剪成多个不重叠的单元(unit),采用C3D和双流网络进行对应片段的特征提取。一个片段(clip)由多个unit组成,这些unit称为内部单元(internal unit);clip前后的、用于边界回归的unit被称为语义单元(context unit), 这对时间边界推断很重要。内部特征、语义特征通过均值汇集操作P分别从单元级特征中汇集出来。
    在这里插入图片描述
    其中||代表矢量串联(concatenation)。通过多尺度的时间滑动窗口来扫描视频。时间滑动窗口由两个参数来模拟:窗口长度l_i和窗口重叠o_i。请注意,虽然多尺度的片段会有时间上的重叠,但片段级的特征是由单位级的特征计算出来的,而单位级的特征只计算一次。

  • Temporal Coordinate Regression:
    对于边界回归,以往的工作主要使用参数化的坐标偏移量(parameterized coordinates offsets),即先对候选框的中心位置和长度进行参数化(由此可推导得到候选框边界坐标),再基于中心和长度坐标表示具体的偏移量。例如
    在这里插入图片描述
    本文的思路是直接进行具体坐标的回归。由于GT的标注单位常常是秒,故先乘以FPS计算得到开始/结束时刻对应帧,再通过unit长度和取整操作确定开始/结束时刻对应的unit索引,随后进行精细的坐标回归:
    在这里插入图片描述
    s_clip和e_clip既可以是unit-level标注,也可对应frame-level标注,论文最后选用前者。unit-level坐标回归背后的直觉是,由于基本的unit-level feature被提取来编码Nu帧,该特征可能没有足够的辨别力来回归帧级的坐标。与帧级回归相比,单元级坐标回归更容易学习,尽管其边界更粗略。

  • Two-Stage Proposal and Detection Pipeline:在这里插入图片描述
    在proposal和detection的两个阶段中,边界回归都是以级联的方式进行的:输出的边界作为反馈再输回网络进行进一步的校正。(迭代的思想)如图所示,每个校正流程由K次回归构成,最终的框是K次校正的结果,最终的动作得分也是K次得分的乘积。两阶段的网络是分开训练的,但每一阶段内出于简便性考量共享了网络参数

Loss Function:
在这里插入图片描述
其中L_cls是分类的损失,是标准的交叉熵损失。对于proposal网络,L_cls是二元分类交叉熵损失;对于检测网络,L_cls是标准的多类交叉熵损失。 L_reg是用于时间坐标回归,λ是一个超参数,根据经验设定。回归损失为:
在这里插入图片描述
实验结果表明,坐标的直接回归优于参数化后的回归(作者认为这是因为视频时长不像图像中的目标一样可以随意放缩);基于unit-level的回归优于基于frame-level的回归(作者认为frame-level的坐标可能包含了不必要的信息);使用双流网络提取的特征作为输入优于C3D网络。
在这里插入图片描述

同时,对于CBR模块的内部回归次数,不同阶段、不同特征,其最优值是不同的,且不是越多越好的。但实验也表明了一些缺陷,对于不同数据集,滑窗的尺度、CBR内部回归次数等参数均需手动调整。

手工特征太明显了,并且网络对不同数据集的泛化性很差。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



5. R-C3D: Region Convolutional 3D Network for Temporal Activity Detection

论文目的——拟解决问题


  • 目前的方法依赖于外部proposal的生成或详尽的滑动窗口(Temporal Aaction Proposal),导致计算效率低下。
  • VGG、ResNet、C3D等深度特征,在图像/视频分类任务中单独学习。这种现成的表征对于在不同的视频领域中定位活动可能不是最理想的,从而导致性能低下。(即迁移效果差)

贡献——创新


  • 一个端到端的3D区域卷积网络模型(Region Convolutional 3D Network, R-C3D),它结合了候选框生成和分类阶段,可以检测任意长度的活动;
  • 通过在网络的候选框生成和分类部分之间共享完全卷积的C3D特征来实现快速的检测速度(比目前的方法快5倍);

总体来说,作者认为TAP(Temporal Aaction Proposal)和分类不应分开,故设立一个端到端网络同时学习两部分知识;作者认为2D卷积的特征提取法缺少时序信息,故采用3D卷积希望学到新的联系。

官方实现代码

实现流程

在这里插入图片描述
该网络用完全卷积的三维滤波器对帧进行编码,提出活动候选框,然后根据其边界内的集合特征对其进行分类和细化。

详细方法

如下图所示,主要具体分为三个部分:3D卷积特征提取模块,候选框生成模块、动作框校正与分类模块。
在这里插入图片描述
Temporal Proposal Subnet:

  • 对于3* L* H* W维度的视频输入,将其通过C3D提出的3D ConvNet网络的卷积层(conv1a-conv5b),得到512*(L/8)* (H/16)* (W/16)维度的输出。其中输入视频时长L只取决于内存。
  • 在Proposal Subnet部分基于anchor思路生成候选框。具体为,对512*(L/8)* (H/16)* (W/16)维度的输入,过一个3* 3* 3的3D卷积层和一个1*(H/16)* (W/16)的3D最大池化层,得到512* (L/8)* 1* 1维度的输出,再在每个时间点采用K个pre-defined的anchor,最终得到(L/8) *K个512维的候选片段。
  • 将IoU>0.7或最大IoU的片段标注为包含动作的正样本,将IoU小于0.3的片段标注为背景负样本,选取1:1的正负样本进行训练。

Activity Classification Subnet:

  • 在Classification Subnet部分,先对上一步得到的片段进行greedy NMS操作;

  • 随后对得到的任意长的片段进行3DRoI池化操作 (近似Faster R-CNN,将任意维度的输入切块、池化以得到特定维度的输出,具体输入为3D ConvNet在特定片段区域下的特征)

  • 最后在特定大小的特征后接全连接层,分别进行类别判断和边界回归。

  • 将IoU>0.5或最大IoU的片段标记其动作类别,将IoU小于0.5的片段标记为背景负样本,选取1:3的正负样本进行训练

Optimization:

  • 分类时采用softmax损失函数,边界回归采用Smooth L1损失函数,二者联合进行优化。其中边界回归的输入指向anchor框与ground truth框在中心位置和持续时长的差异。
    在这里插入图片描述
    λ是损失权衡参数,设置为1值。上述损失函数同时适用于时间性提议子网和活动分类子网。

在Temporal Proposal Subnet中,二元分类损失L-cls预测提议是否包含活动,而回归损失L-reg则优化候选框和ground truth之间的相对位移。损失是与活动类别无关的。
对于Activity Classification Subnet,多类分类损失L-cls预测了候选框的具体活动类别,而类别的数量是活动的数量加上背景的数量。回归损失L-reg优化了活动和ground truth之间的相对位移。两个子网的所有四个损失都是联合优化的。

补充:在这里插入图片描述
注意两个subnet的边界回归结果均使用的是中心和长度的相对位置形式,为了得到真实的起止时间,需要使用前文所述的的坐标转换公式的反变换。




6. Single Shot Temporal Action Detection

作者亲自写的论文笔记

论文目的——拟解决问题


  • 现有的模型,检测网络和识别网络需要分开训练,理想情况是可以进行联合训练得到最优模型
  • 检测网络生成proposal需要额外的计算时间
  • 使用滑窗生成的proposal边界通常都不够精确,并且滑窗方法需要事先确定窗口大小,只能处理固定长度的片段,不能灵活应用于变长片段。

贡献——创新


  • 论文中提出的Single Shot Action Detector (SSAD)网络,为了更好地编码视频中的空间和时间信息,采用多个动作识别模型(动作分类器)来提取多粒度的特征。
  • SSAD网络是one-stage的网络,不需要先生成预测proposal,直接预测动作的时序边界以及置信度。

代码

实现流程

在这里插入图片描述
给定未裁剪的长视频,通过多个动作分类器提取片段级的动作得分(Snippet-level Action Score,SAS)特征序列,将特征输入SSAD网络并直接输出多尺寸的动作实例(起始时刻+类别)。

详细方法

在这里插入图片描述
(a)特征提取:

在这里插入图片描述
对于不同长度视频,先用特定长度窗口截得等长视频,再将其转为片段(snippet)。第t个片段包括第t帧的图像信息,以第t帧为中心的8帧的光流信息,以第t帧为中心的16帧的视频信息。(对等长视频进行padding操作使snippet个数与等长视频帧数相同)

随后以多个动作分类模型 (双流网络的空间流和时间流、C3D网络) 去提取多粒度的特征,第t帧及对应光流信息进双流网络的Spatial和Temporal分支,连续的视频信息进C3D网络。对每个片段,三个独立的分类器都给出了该片段对应K+1类的概率(K类动作+背景),随后对结果进行简单的concatenate操作构建SAS特征(Snippet-level Action Score)。对一段时长为T的视频,提取后的特征大小是是T* 3* (K+1)。

(b)SSAD网络包含三个子模块:

(1) Base layers 的作用为缩短特征序列的长度,并增大特征序列中每个位置的感受野
在这里插入图片描述
在base layer中,连续进行两次conv(9/1)+pool(4/4)操作,输出(T/16)*256大小的特征;

(2)Anchor layer渐进地降低特征维度,从而使网络在多尺度上进行预测。

锚层的输出锚点特征图尺寸分别为(Tw /32 × 512)、(Tw /64 × 512)和(Tw /128 × 512)。多个锚层逐渐减少了特征图的时间维度,使SSAD能够从多分辨率的特征图中获得预测结果。
下层锚点特征图比上层锚点特征图具有更高的分辨率和更小的感受野。所以我们让下层锚层检测短动作实例,上层锚层检测长动作实例。

在这里插入图片描述
(3)预测层生成这些锚定动作实例的类别概率、位置偏移和重叠分数。

(c)训练和预测:
训练: SSAD网络的训练目标是解决一个多任务优化问题。总体损失函数包括以下几个部分,基于softmax的动作分类损失、基于MSE的overlap损失、基于Smooth L1的边界回归损失和L2正则损失,其中overlap是为了进行后续的NMS操作;
在这里插入图片描述
预测和后处理: 沿用前述训练过程中的数据准备方法来准备测试数据,但有以下两点变化:(1)窗口的重叠率降低到25%,以提高预测速度,减少冗余预测;(2)在预测过程中,不删除没有注释的窗口,而是保留所有窗口,因为删除操作实际上是注释信息的泄露。
在获得了一段视频所有的预测action instance后,本文采用NMS(非极大化抑制)对重叠的预测进行去重。从而获得最终的temporal action detection结果。

Feature encoding methods such as Fisher Vector [38] and VAE [24] are widely used
in action recognition task to improve performance.
诸如Fisher Vector[38]和VAE[24]等特征编码方法被广泛用于动作识别任务中,以提高性能。未来我需要学习的地方







推荐阅读
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • TPL实现Task.WhileAll扩展方法
    文章翻译整理自NikolaMalovic两篇博文:Task.WhileAllAwaitabletaskprogressreporting当Task.WhenAll遇见 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • css div中文字位置_超赞的 CSS 阴影技巧与细节
    本文的题目是CSS阴影技巧与细节。CSS阴影,却不一定是box-shadow与filter:drop-shadow,为啥?因为使用其他属性 ... [详细]
author-avatar
没有结果的爱请你收好
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有