TEINet: Towards an Efficient Architecture for Video Recognition(AAAI2020)
AAAI2020 南京大学+腾讯优图实验室
1 摘要
在视频动作识别的架构设计中,效率是一个重要的问题。3D CNNs在视频动作识别方面取得了显著的进展。然而,与二维卷积相比,三维卷积往往引入大量的参数,导致计算量大。为了解决这个问题,我们提出了一个有效的时序模块,称为Temporal Enhancement-and-Interaction(TEI模块),它可以插入到现有的2D CNNs中。TEI模块通过分离通道相关和时间交互的建模,提出了一种不同的学习时间特征的范式。首先,它包含一个运动增强模块(MEM),该模块在抑制无关信息(例如背景)的同时增强与运动相关的特征。
然后,介绍了一个时序交互模块(TIM),它以通道方式补充时序上下文信息。该两阶段建模方案不仅能够灵活有效地捕捉时间结构,而且能够有效地进行模型推理。我们进行了大量的实验来验证TEINet在Something-Something V1&V2, Kinetics, UCF101 and HMDB51几个基准上的有效性。TEINet可以在这些数据集上达到很好的识别精度,同时保持很高的效率。
2 相关背景
视频处理中,数据量太大是当前这一领域发展的一大主要瓶颈。从图像领域目标识别迁移过来的2DCNN在早期工作中主要是将视频当成一帧一帧的图片来做,缺乏时序信息的处理,因为准确率较低。
随后结合了时序信息的3DCNN成为另一主流方案,准确率提升了,但是参数量也上去了,训练代价很大。为此,很多工作都集中在对这两张方案的融合,即构造一种位于2D和3D之间的架构。代表工作有我之前组会介绍过的P3D(伪3D)、R(2+1)D等。
TEINet是这一方向新的思路和方案,由南京大学和腾讯优图实验室联合完成。
3 方案原理
TEINet也是设计2D Module的工作,包括MEM和TIM两个部分。MEM利用动作信息实现注意力机制,加强重要特征;TIM对时序信息建模。将两个模块先后拼接形成TEINet,在各个数据集上都得到了不错的效果。
3.1 Motion Enhanced Module (MEM)
MEM目的在于通过使用相邻帧特征的差异来在通道上增强运动相关的特征。
输入序列:
,
首先通过全局平均池化(GAP),聚合输入的空间特征,卷积输出的结果为:
再通过一层卷积,获得channel间的权重,且输出通道为C/r,r在实验中设置为8。
为了使用相邻帧特征的差异,设计了两路卷积(图中的蓝色和黄色),分别对应输入的前后相邻两帧:,分别通过各自卷积之后的结果进行相减得到差异信息,即为运动信息。
接着,再通过一层卷积(图中的conv3),将通道数从C/r变回到C,目的是为了保持和输入Xt通道一致。
最后再通过sigmoid层,得到0~1范围的激活,即对应的通道权重:
将与原来的特征进行通道点乘,获得运动显著(motion-salient)的特征。
3.2 Temporal Interaction Module (TIM)
通过MEM获得了运动显著的特征,但是模型仍然不能捕捉时序信息,因而设计了TIM模块,希望以较低的计算成本获取时序文本信息。
对于输入U=
首先将维度从
变为
然后对每一个通道单独进行通道级卷积操作来学习每个通道的时序变化。
V是通道级卷积的卷积核,与3DCNN相比,计算量大幅降低。V的大小设计为,使得特征只和相邻时间的特征相关,但是时序接收场会随着特征图的越来越深而逐步增大。
卷积之后,再将Y的维度变为
3DCNN的计算量为:
TIM的计算量为:
此外,作者在论文中提到,TIM可学习,可以看做TSM(看成是[0,1,0][1,0,0][0,0,1]的卷积)的泛化版(TSM:Temporal shift module for efficient video understanding. CoRR 2018)
4 实验效果
4.1 Something-Something V1数据集
4.2 Something-Something V2数据集
4.3 Kinetics-400数据集
4.4 UCF101 and HMDB51数据集
5 结论
作者设计了两个模块分别捕捉运动信息和时序信息,都是2D模块的巧妙设计,可以直接插入现有的2DCNN结构。同时因为是2D,所以可以使用ImageNet的预训练模型,值得后期借鉴。对视频研究的基本框架仍有改进空间。
也欢迎感兴趣的朋友关注公。众号StrongerTang更多交流讨论,相互学习!
推荐阅读:
P-GCN:Graph Convolutional Networks for Temporal Action Localization 2019 ICCV
G-TAD: Sub-Graph Localization for Temporal Action Detection
ActivityNet数据集简介及下载分享(百度网盘)
TEINet: Towards an Efficient Architecture for Video Recognition(AAAI2020)相关推荐
- 【论文翻译】SlowFast Networks for Video Recognition
目录 其它参考资料 Abstract 1,Introduction 2,Related Work 3. SlowFast Networks 3.1. Slow pathway 3.2. Fast pa ...
- 【论文翻译】X3D: Expanding Architectures for Efficient Video Recognition
参考 X3D: Expanding Architectures for Efficient Video Recognition个人论文笔记 X3D: Expanding Architectures f ...
- 【X3D: Expanding Architectures for Efficient Video Recognition】
X3D: Expanding Architectures for Efficient Video Recognition 一.综述 二.网络结构 三.结论 一.综述 Feichtenhofer受机 ...
- 精读《X3D: Expanding Architectures for Efficient Video Recognition》论文
文章目录 1 背景说明 2 之前方法存在的问题 3 文章要解决的核心问题 4 文章的贡献 5 结论 6 X3D Networks 6.1 Basis instantiation 6.2 Expansi ...
- 12【mmaction2 行为识别商用级别】X3D复现 demo实现 检测自己的视频 Expanding Architecturesfor Efficient Video Recognition
github(新版):https://github.com/Whiffe/mmaction2_YF 码云(新版):https://gitee.com/YFwinston/mmaction2_YF.gi ...
- 论文笔记 Semantics-Guided Neural Networks for Efficient Skeleton-Based Human Action Recognition - CVPR
Semantics-Guided Neural Networks for Efficient Skeleton-Based Human Action Recognition 2020 CVPR | c ...
- Central Similarity Quantization for Efficient Image and Video Retrieval
哈希图像检索文章学习笔记 Central Similarity Quantization for Efficient Image and Video Retrieval 摘要:现在哈希算法通常只是从成 ...
- 视频检测分割--Deep Feature Flow for Video Recognition
Deep Feature Flow for Video Recognition CVPR2017 Code: https://github.com/msracver/Deep-Feature-Flow ...
- 【slowfast复现 训练】训练过程 制作ava数据集 复现 SlowFast Networks for Video Recognition 训练 train
目录 前言 一,ava相关文件准备 1.1 空间准备(500G) 1.2 整体ava文件结构 1.3 frames文件 1.4 frame_lists 文件 1.5 annotations 文件 二, ...
最新文章
- 终于有人把如何精通C++讲明白了!
- altium designer PCB把板子翻过来看
- iphone开发之轻松搞定原生socket 编程,阻塞与非阻塞,收发自如
- stm32核心板可以点亮灯吗_STM32库函数点亮LED
- Android ListView不响应OnItemClickListener解决办法
- 【转】基于jquery,bootstrap数据验证插件bootstrapValidator 教程
- js的tree数组对象扁平化思否_JS专题之数组展开
- 【网络安全】从零开始的CTF生活
- zeppelin 配置 spark
- Linux下有趣的命令
- 服务器端口连通性测试
- 8核、6核、4核、双核CPU是什么意思
- Pytorch创建多任务学习模型
- yum 下载并切换到本地源(银河麒麟V10,中标麒麟V5)
- TrafficMonitor:最好用的网速/内存/CPU监控软件
- 狼来了 【dfs】【树】
- linux下c使用lzma_lzma文件及命令简介
- 升级JDK8的坎坷之路
- shell语法(2)
- 为什么许多芯片的CS信号(片选信号)经常都是低电平有效?
热门文章
- Redis Cluster 伪集群的搭建
- PL/SQL学习(五)异常处理
- WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效...
- LeetCode: Word Search
- linux shell 基本规范
- ASP.Net Jquery 随机验证码 文本框判断
- sql_action
- 什么是线程安全和线程不安全
- ORA-00257归档日志写满的解决方法 - xwdreamer - 博客园
- KETTLE调度第三篇:Windows下调度Dos脚本编写和遇到的一些问题解决