时序动作定位 | ActionFormer: 使用Transformers动作时刻
目录
ActionFormer: Localizing Moments of Actions with Transformers
摘要
3 ActionFormer: A Simple Transformer Model for Temporal Action Localization
A Simple Representation for Action Localization(动作定位的一个简单表示)
Method Overview
3.1 使用Transformer对视频进行编码
3.2 Decoding Actions in Time
3.3 ActionFormer: Model Design
ActionFormer: Localizing Moments of Actions with Transformers
摘要
基于自我注意的Transformer模型在图像分类和目标检测方面展示了令人印象深刻的结果,最近在视频理解方面也展示了令人印象深刻的结果。受此启发,作者研究了Transformer网络在视频中用于时间动作定位的应用。
ActionFormer 一个简单而强大的模型,可以及时识别动作,并在一个镜头中识别它们的类别,不需要使用action proposals或依赖预定义的anchor windows。ActionFormer 将多尺度特征表示与局部自注意力相结合,使用轻型解码器对每个时刻进行分类并估计相应的动作边界。这种精心安排的设计结果在以前的工作上的重大改进。没有bells and whistles,ActionFormer 实现71.0% mAP在tIoU=0.5上的THUMOS14,超过最佳先验模型14.1个绝对百分点。此外,ActionFormer在ActivityNet 1.3(平均mAP 36.6%)和EPIC-Kitchens 100(平均mAP比之前的作品高出13.5%)上展示了强劲的结果。
论文:https://arxiv.org/pdf/2202.07925v2.pdf
代码:https://github.com/happyharrycn/ actionformer_release
# 在 linux 上下载代码
git clone https://github.com/happyharrycn/actionformer_release.git
3 ActionFormer: A Simple Transformer Model for Temporal Action Localization
给定一个输入视频X,假设X可以用一组特征向量X = {x1, x2,…, xT}定义在离散时间步长t ={1,2,…, T},其中总时长T随视频变化。例如,xt可以是从三维卷积网络中提取出时刻t的视频片段的特征向量。时间动作定位的目标是预测动作标签Y = {y1, y2,…, yN}基于输入视频序列x。Y包含N个动作实例yi,其中N也随视频变化。每个实例yi = (si, ei, ai)由其开始时间si(起始),结束时间ei(偏移)和其动作标签ai定义,其中si∈[1,T], ei∈[1,T], ai∈{1,.., C} (C个预定义类别)和si < ei。因此,TAL的任务是一个具有挑战性的结构化输出预测问题。
A Simple Representation for Action Localization(动作定位的一个简单表示)
该方法建立在动作定位的无anchor表示基础上,灵感来自[77,35]。关键思想是将每个时刻归类为动作类别或背景,并进一步回归这个时间步与动作开始和偏移之间的距离。在此过程中,我们将结构化输出预测问题(X = {x1, x2,…, xT}→Y = {y1, y2,…, yN})转化为一个更平易近人的序列标记问题:
在 t 时刻的输出 = (p(), ,)被定义为
• p()由C个值组成,每个值代表一个二项式变量,表示动作类别(∈{1,2,…, C}),这可以认为是C二进制分类的输出。
• >0 和 >0分别是当前时间t到动作开始和偏移的距离。如果时间步长t位于背景,则不定义和。
直观上,这个公式将视频X中的每一个时刻t视为候选动作,识别动作的类别,并估计当前步骤与动作边界( 和 )之间的距离(如果出现动作)。动作定位结果可以通过 = (p(), ,) 轻松解码:
Method Overview
ActionFormer 学习标记一个输入视频序列f(X)→。具体来说,f是通过一个深度模型来实现的。ActionFormer遵循编码器-解码器架构,在许多视觉任务中被证明是成功的,并分解为h◦g。这里g: X→Z将输入编码为潜在向量Z, h: Z→随后将Z解码为序列标签。
图2展示了我们的模型的概览。重要的是,我们的编码器g是由Transformer网络参数化的[64]。我们的解码器h采用轻量级卷积网络。为了捕捉不同时间尺度下的动作,我们设计了一个多尺度特征表示 Z = {, ,…, } 形成不同分辨率的特征金字塔。注意,模型运行在由特征网格定义的时间轴上,而不是绝对时间,这使得它能够适应不同帧率的视频。
3.1 使用Transformer对视频进行编码
模型首先编码了一个输入视频X = {x1, x2,…, xT}转化为多尺度特征表示Z = {Z1, Z2,…, ZL}使用编码器g。
编码器g包括:(1)一个投影函数,使用卷积网络将每个特征(xt)嵌入到d维空间;(2)将所述嵌入特征映射到所述输出特征金字塔Z的Transformer网络。
Projection. 投影E是一个以ReLU为激活函数的浅卷积网络,定义为
其中E(xi)∈RD是xi的嵌入特征。最近发现,在Transformer网络之前添加卷积有助于更好地合并时间序列数据[32]定位上下文,并有助于稳定视觉Transformer的训练[71]。位置嵌入[64]Epos∈RT ×D可选添加。然而,作者发现这样做会降低模型的性能,因此在默认情况下删除了模型中的位置嵌入。
Local Self-Attention. Transformer网络进一步将Z0作为输入。Transformer的核心是自我注意[64]。简要介绍了使论文完备的关键思想。具体来说,自我注意计算特征的加权平均值,权重与输入特征对之间的相似度分数成正比。给定Z0∈RT ×D, D维特征的时间步长为T,用WQ∈RD×Dq, WK∈RD×Dk, WV∈RD×Dv投影Z0,提取特征表示Q、K、V,分别称为查询、键、值,Dk = Dq。输出Q, K, V计算为
自注意力的输出是由
其中S∈RT ×D, softmax按行执行。多头自注意(MSA)进一步增加了多个并行的自注意力操作。
MSA的一个主要优点是能够跨整个序列集成时间上下文,但这种优点是以计算为代价的。普通MSA在内存和时间上的复杂度为O(T 2D + D2T),因此对于长视频来说效率很低。最近有一些关于有效自我注意的研究[73,5,67,16]。在这里,作者通过将注意力限制在局部窗口内来调整来自局部的自注意力[16]。作者的直觉是,超出一定范围的时间背景对动作定位的帮助较小。这种局部的自注意力显著降低了复杂程度为O(w2t D + D2T),而局部的窗口大小为W(≪T)。重要的是,局部自注意与多尺度特征表示Z = {Z1, Z2,…, ZL},在每个金字塔层使用相同的窗口大小。通过这种设计,下采样特征图(16x)上的小窗口(19)将覆盖大的时间范围(304)。
Multiscale Transformer. 作者的Transformer有L层,每层由局部多头自注意(MSA)和MLP块交替层组成。
此外,在每个MSA或MLP块之前应用LayerNorm (LN),在每个块之后添加残差连接。GELU用于MLP。为了捕获不同时间尺度上的动作,可选附加下采样算子↓(·)。这是由
其中Zℓ−1,¯Zℓ,Zℓ∈RTℓ−1×D, Zℓ∈RTℓ×D。Tℓ−1/Tℓ为下采样比。αℓ和¯αℓ是可学习的每通道缩放因子,如[62]。
下采样算子↓由于效率高,是使用跨步深度1D卷积实现的。模型使用2倍的下采样。作者的Transformer块如图2(右)所示。模型进一步结合了几个Transformer块之间的下采样,得到一个特征金字塔Z = {Z1, Z2,…, ZL}。
3.2 Decoding Actions in Time
模型的Decoder即简单的分类预测头和回归预测头,只是不同于一般的全连接层实现,而使用一个轻量级的1D卷积网络实现。这个检测头接在特征金字塔各层的特征Z后面,它们共享参数。分类和回归头架构相似,除了分类最后用的Sigmoid激活函数,而回归使用ReLU函数。
3.3 ActionFormer: Model Design
损失函数包括分类损失和回归损失,公式如下:
实验细节 数据预处理。首先使用一个经过 Kinetics[12] 数据集预训练的 I3D[3] 模型来提取视频特征。具体来说,将 16 个连续的图像帧作为 I3D 的输入,使用一个 stride(步幅) 为 4 的滑动窗口,在I3D 最后一个全连接层之前的层中提取 1024 维的特征。同时,光流帧也按上述操作得到 1024 维的特征。之后再将这两部分的特征进一步 concatenate(连接) 为 2048 维作为模型的输入。
实验参数设置及细节
训练 使用 AdamW[21] 优化器,训练了 30 个 epoch,其中进行了 5 个 epoch 的 linear warm-up(线性热身)。初始 learning rate(学习率) 为 10−3,使用余弦退火进行学习率衰减。batch size(批量大小) 被设置为 2,weight decay(重量衰减) 为 0,momentum(动量) 为 0.9。
测试 测试集输入模型的仍然是数据预处理部分提到的 2048 维度的特征,不能达到实时处理的效果,需要先提取视频的特征,这也是该模型的缺点之一。而 soft-NMS 中的 t-IoU 阈值设置为 0.5。
实验结果及分析 作为第一个 TAL 任务下的 Transformer 模型的 ActionFormer 在没有任何数据增广的前提下,mAP 高达 66.5%,也使得 TAL 任务的 mAP 首次达到 60% 以上,取得的 state-of-the-art 的 mAP。而 ActionFormer 本身的设计较为简单,仅仅由 Transformer 编码器和轻量级 CNN 解码器组成,就能取得如此好的TAL 任务效果,由此可见,Transformer 是十分强力的一种结构。
参考:Actionformer: Localizing moments of actions with transformers 论文阅读笔记_Encounter84的博客-CSDN博客
时序动作定位 | ActionFormer: 使用Transformers动作时刻相关推荐
- 百度飞将BMN时序动作定位框架 | 数据准备与训练指南 (上)
一.介绍 BMN模型是百度自研,2019年ActivityNet夺冠方案,为视频动作定位问题中proposal的生成提供高效的解决方案. 简单说,视频的时序动作定位就是给一段视频,分析出从xxx秒到x ...
- CVPR 2021 | 腾讯优图20篇论文入选,含人脸识别、时序动作定位、视频动作分割等领域...
编辑丨腾讯优图AI开放平台 计算机视觉世界三大顶会之一的CVPR 2021论文接收结果出炉!本次大会收到来自全球共7015篇有效投稿,最终有1663篇突出重围被录取,录用率约为23.7%.本次,腾讯优 ...
- 时序动作定位:Rethinking the Faster R-CNN Architecture for Temporal Action Localization(TAL-Net)
这篇是2018CVPR的文章,论文下载链接: http://cn.arxiv.org/pdf/1804.07667.pdf 1 背景 1.1 Faster R-CNN vs TAL-Net 得益于Fa ...
- 时序动作定位 | 面向时序行为定位任务的无监督预训练
论文链接:https://arxiv.org/abs/2203.13609 代码地址:https://github.com/zhang-can/UP-TAL 主要贡献: 首次面向时序行为定位任务进行 ...
- ICCV2021 新增数据集汇总 | 含时序动作定位、时空行为检测、弱光目标检测等!...
点击下方"计算机视觉联盟",一起进步!重磅干货,第一时间送达 ICCV 2021 数据集汇总 https://github.com/DWCTOD/ICCV2021-Papers-w ...
- Industry AI Live | 行为动作定位的算法流程介绍与分享
「Industry AI Live」是 biendata 与人工智能媒体 PaperWeekly 共同发起的学术直播栏目,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一 ...
- 动作定位、检测与理解,ICCV 2021 DeeperAction挑战赛开启~
本次ICCV 2021的DeeperAction挑战赛旨在推动人类动作理解领域研究从传统的动作识别转向更深入的动作理解任务,希望模型能够在不同视频中对人类动作的进行定位和详细理解. 具体来说,组织者提 ...
- 视频动作定位的分层自关注网络:ICCV2019论文解析
视频动作定位的分层自关注网络:ICCV2019论文解析 Hierarchical Self-Attention Network for Action Localization in Videos 论文 ...
- You Only Watch Once:实时人体动作定位网络
点击我爱计算机视觉标星,更快获取CVML新技术 今天跟大家介绍一篇YOLO风格浓郁的论文,来自慕尼黑工业大学的学者受人类视觉的启发,提出一种快速实时的视频动作定位方法You Only Watch On ...
最新文章
- PHP的优点和缺点分别是什么,CSS的优点和缺点分别是什么
- 爱奇艺基于SpringCloud的韧性能力建设
- Duilib技巧:背景图片平铺
- 深度学习核心技术精讲100篇(三十六)-EdgeRec:边缘计算在淘宝推荐系统中的大规模应用
- 2.2.4 调度算法: 先来先服务 最短作业优先 最高相应比优先
- 如何发布你的Android应用程序
- Linux 刻录光盘
- ACL2020 | FastBERT:放飞BERT的推理速度
- 阿里蚂蚁金服中间件(Java 4轮面试题含答案):Redis缓存+线程锁+微服务等
- oracle补丁类型
- MySQL游标循环取出空值的BUG
- js中addEventListener第三个参数涉及到的事件捕获与冒泡
- 七大江河水系--长江(一)
- obj文件格式学习(自用)
- Amcharts4使用笔记
- 关于微信表情及输入法emoji显示问题解决方案
- 创建ITable不能更新记录的问题
- Android第三方开发包值高德地图SDK使用介绍
- 【附下载】手摸手带你搭建广告需求平台DSP
- 最新7z,sdk下载地址
热门文章
- 陕师大的经济学类和计算机类,2018年陕师大专业录取分数分析
- ios、android 系统字体说明
- 解决 stack around the variable was corrupted 问题
- amd r7 2700u linux,AMD锐龙7 2700U四核八线程性能到底有多强悍?实测揭晓
- 获取子元素节点(children,childNodes)
- 这款网红编辑器竟然能约会谈恋爱,找对象不看脸,主要看编程水平!
- Linux nmon监控、分析系统性能使用
- Window.devicePixelRatio
- 计算机命令符号,给几个电脑常用的命令提示符
- 输入奇数,输出对应行数的菱形(练习题五)