本文 是C3D作者Du Tran+IDT作者Heng Wang发表在CVPR2018的新作。来自Facebook Resaerch &Dartmouth Colledge。文章主要对是动作识别中的各种卷积块进行了深度探究,然后提出了用于视频动作识别的新型网络结构:R(2+1)D。
阅读这篇文章之前,可以看一下对比文章《Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks》。关于3维卷积,可以看一下文章《Learning Spatiotemporal Features with 3D Convolutional Networks》

摘要

本文讨论了针对视频分析的不同形式的时空卷积,并研究了其在动作识别方面的效果。本文的灵感来源是,对单帧视频进行2D 卷积仍然可以获得接近3D 时空卷积方法中state-of-the-art的结果本文首先经验性展示3D CNN 比2DCNN 在残差学习框架中的精确度优势,然后展示了将3维时空卷积分解成单独的时间和空间卷积可以在精确度上涨点许多。并通过实验和经验,设计了一种新的时空卷积块“R(2+1)D”。这种新卷积块在数据集如Sports-1M,Kinetics,UCF101,HMDB51上可以取得甚至超过state-of-the-art。

引言

深度学习对静态图像领域产生了深远影响,但在视频领域,深度学习方法并没有吊打最好的传统手提特征工程(iDT)。另外,2D卷积(ResNet-152)在视频单帧上的表现十分接近3D卷积的最佳表现。这一结果就让视频界哭笑不得了。之前的观点是,2D卷积不能对视频分析中的时间信息和动作模式建模。但基于2D卷积的实验,说明temporal reasoning未必就是精确动作识别的必要条件,因为重要的动作类别信息已经包含在了视频的一个个静态视频帧中。
但是话说回来,之前很多3D CNN模型实验结果同样表明其在相同网络深度下在大规模数据集下效果还是优于2D CNN模型的。
基于这些结果,本文打了个太极,安利了介于2D,3D之间的两款时空卷积新品。
要安利的第一款是一种混合型卷积(MixedConvolution)——在浅层使用3维卷积,在深层接上2维卷积。这种设计是有道理的,因为我们一直认为,动作(motion)建模是一种中低层的操作(low、mid-level operation),故在对应的网络浅层只使用3维卷积来操作一波,剩下的空间推断使用2维卷积在这些mid-level动作特征基础上在深层搞一搞就OK了。实验表明这一款混合香型卷积是比2维卷积操作的精确度涨点了大约3-4个百分点的。
第二款要安利的是2+1维卷积块,思路很明确,就是把3维卷积操作分解成两个接连进行的子卷积块—2维空间卷积和1维时间卷积

相关工作

文章中提及许多视频理解相关工作,并且向手提特征工程IDT致敬,CVPR2017的I3D是当前的state-of-the-art。这里主要介绍之前两种深度学习视频理解方法的基本款,为主体工作做铺垫。
先是Du Tran 的C3D(Learning Spatiotemporal Features with 3D Convolutional Networks)
首先介绍一下3D convolution:

(a)是2维卷积,(b)是3维卷积。3维卷积是通过堆叠多个连续的帧组成一个立方体,然后在立方体中运用3D卷积核。在这个结构中,卷积层中每一个特征map都会与上一层中多个邻近的连续帧相连,因此捕捉运动信息。一个卷积map的某一位置的值是通过卷积上一层的三个连续的帧的同一个位置的局部感受野得到的。假设输入的是RGB视频片段,(b)中时间维度上卷积核大小为3,并且在同一个颜色通道上共享权值。以下是C3D模型的网络结构。

接着说一下和本文提出的R(2+1)D十分相似的网络P3D(Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks),这个网络安利了3种3维残差卷积块,如下图,

分别是空间卷积串联时间卷积,时间和空间卷积平行,已经空间卷积后接时间卷积同事和残差块输出有skip connection。P3D网络随网络加深交错使用这三种块。
与P3D相比,本文安利的R(2+1)D有以下不同:整个网络只使用一种残差块;并且没有bottleneck;R(2+1)D进行了超参数设计,使得3维卷积分解前后参数量一致。

视频理解中的各种卷积残差块

本小节讨论时空卷积残差块各变种。本文所用残差块均为vanilla类型(没有bottleneck结构),每个残差块内有两个卷积层。输入视频片段尺寸是3×L×H×W,L是输入视频帧数,H,W是各帧高和款,视频片段是RGB,3指的是RGB3通道。第i个卷积块输出表示为

本文的网络结构是从浅层到深层残差块一把梭,然后接一个全局池化层和全连接层来分类。

R2D:2维卷积在视频中一把梭

2维卷积残差块处理视频,就忽略了视频的时间顺序,把L当作通道处理。所以2维模型就是把输入的4维张两reshape为3维张量:3L×H×W.

f-R2D:基于帧的2维卷积

另一种2维卷积方法用一系列的2维卷积残差块来处理独立的各帧,同一个卷积核作用到所有L个帧上。用时空GAP层融合来自各帧的信息,我们称这种2维卷积维framed-based R2D。

R3D:3维卷积

3维卷积保留了时间信息,并可以在层与层之间传播。3维卷积残差块的输出则是4维张量,大小是N×L×H×W,每一个卷积核也是4维的,尺寸是N‘×t×d×d,t是时间维度上的跨度,帧数。N’是上一层输出的3维卷积核个数。网络结构如下图

MCx&rMCx:2维,3维混合卷积

先跑出一个猜想:动作建模在浅层是有用的,但在高级语义抽象层(深层),动作建模是不必要的。所以就有了混合型结构如下图

当然作为对比,还是有一种可能的情况就是时间信息在深层仍然很重要,所以就在浅层空间建模,深层时空建模加入时间信息。这种结构称为rMCx,结构如下图

R(2+1)D

把3维时空卷积分解成2维空间卷积和1维时间卷积,那么卷积核大小变成了N’×1×d×d+M×t×1*1。超参数M决定了信号在时、空卷积之间投影的子空间个数。为了让(2+1)维卷积块参数和3维卷积块参数量一致,

将3维时空卷积分解成(2+1)维卷积的图示如下(这里输入为单通道)

这个分解的好处,第一就是两个子卷积之间多出来一个非线性操作,和原来同样参数量的3维卷积相比double了非线性操作,给网络扩容。第二个好处就是时空分解让优化的过程也分解开来,事实上之前发现,3维时空卷积把空间信息和动态信息拧巴在一起,不容易优化。2+1维卷积更容易优化,loss更低。

结构如下图

实验

基准数据集是Kinetics和Sports-1M,它们足够从头训练深度网络。当然一个好的视频模型还要支持迁移学习,所以本文在一说两个数据集上pretrain,在UCF01和HMDB51数据集上finetune.
####网络框架
我们实验所用网络全部是残差卷积块。下表给出了3D ResNet网络明细

两组网路是3D ResNet-18,3D ResNet-24.网络输入统一为3×L×112×112。在conv1,stride=(1,2,2),在conv3_1,conv4_1,conv5_1,stride=(2, 2, 2).
我们以R3D模型维baseline,通过将3维卷积替换维2维卷积,先时空再空间和先空间再时空混合卷积,以及分解的(2+1)维卷积,获得R2D,MCx,rMCx,和R(2+1)D网络结构。这里有一个小问题,替换3维为2维过程中,时间维度上的跨步就无法实现,因为没有了时间卷积。这种差别体现在最后一层卷积层的输出Tensor和原3维卷积模型最后一层卷积层输出的Tensor时间尺寸不一致。不过,我们的网络在卷积层之后接global spatiotemporal average pooling,然后传入全连接层。卷积层输出的时间、空间尺寸没有影响。

训练和测试

数据预处理

首先在数据集Kinetics上,划分出训练集和测试集,公平起见所有模型都统一成18层,在相同输入上从头开始训练。视频帧scale到128×171,然后每个视频片段都是用一个112×112的窗口随机crop产生。对视频进行时间抖动(temporal jittering),然后随机选取连续L帧。时间抖动的方法是把epoch size设为1M,而数据集只有0.24M个视频,故没一epoch就有了时长增广。

训练

初始学习率设为0.01,没10epoch 除以10,前10 epoch 使用了warm-up方法,一种分布式同步 SGD ,分布式同步 SGD 通过将小批量 SGD(SGD minibatches)分发到一组平行工作站而提供了一种很具潜力的解决方案。然而要使这个解决方案变得高效,每一个工作站的工作负载必须足够大,这意味着 SGD 批量大小会有很大的增长(nontrivial growth)。训练了45epoch。每一卷积层都使用了BN。使用caffe2框架。

实验对比


从这些结果中我们可以推断出一下几点:

  1. F-R2D,R2D 这些2维卷积和R3D或者MCx,rMCx之间是有显著差距的(2维较差),这个差距会在输入帧数为16时变大。说明动作建模对动作识别来说是十分重要的。(所以本文并没有挑战这一观点)
  2. 分解的时空卷积效果要比3维卷积和混合卷积好,更比2维卷积模型效果好。
  3. 在较长输入片段进行时间建模更加有效,但不能过长。
  4. 随着网络深度正增加,R(2+1)D比R3D更容易训练。

水平有限,欢迎大家斧正

HongYuSuiXinLang
Zhejiang University
Email: r_meng@zju.edu.cn

CVPR2018 | R(2+1)D结构:视频动作识别中的时空卷积深度探究相关推荐

  1. 计算机视觉和动作检测,计算机视觉技术深度解读之视频动作识别

    来源:雪球App,作者: 我是张康,(https://xueqiu.com/6964725465/135165468) 作者:极链AI研究院 徐宝函 视频的理解与识别是计算机视觉的基础任务之一.随着视 ...

  2. 视频动作识别--Temporal Segment Networks: Towards Good Practices for Deep Action Recognition

    Temporal Segment Networks: Towards Good Practices for Deep Action Recognition ECCV2016 https://githu ...

  3. 视频动作识别--Convolutional Two-Stream Network Fusion for Video Action Recognition

    Convolutional Two-Stream Network Fusion for Video Action Recognition CVPR2016 http://www.robots.ox.a ...

  4. 短视频动作识别技术简述

    1总体介绍 短视频在当前多媒体环境中占据着巨大流量,有效理解视频内容对于数据分发发挥着重要作用,动作识别是视频内容理解的一个重要方向.当前图像识别技术已趋于成熟,但动作识别仍未达到理想效果,相比于图像 ...

  5. Tensorflow C3D完成视频动作识别

    本文是视频动作识别领域经典的C3D网络的简易实现,可以作为动作识别的入门.论文为<Learning Spatiotemporal Features with 3D Convolutional N ...

  6. Facebook AI牛津提出带“轨迹注意力”的Video Transformer,在视频动作识别任务中性能SOTA!...

    关注公众号,发现CV技术之美 ▊ 写在前面 在视频Transformer中,时间维度通常与两个空间维度(W和H)的处理方式相同.然而,在对象或摄影机可以移动的场景中,在第t帧中的一个位置处的物体可能与 ...

  7. CNN(卷积神经网络)在视频动作分类中的应用

    简介 Large-scale Video Classification with Convolutional Neural Networks Fusion Method Multi-resolutio ...

  8. 视频数据集 | 视频动作识别video recognition常用数据集整理

    一 写在前面 未经允许,不得转载,谢谢~~~ 这篇文章主要整理一下视频动作识别领域常用的数据集~~~ 大概但不严格按照时间顺序排列. 二 视频分类数据集 HMDB51 来源:HMDB: a large ...

  9. 图卷积网络进行骨骼识别代码_深兰科学院:动作识别——人体骨架时空图卷积网络的关节图构造方法简介...

    港中文团队论文的主要内容 1 Introduction 近年来,人类动作识别已成为活跃的研究领域,因为它在视频理解中起着重要作用.一般而言,人类行为可以从多种形式中识别,例如外观.深度. 光流和人体骨 ...

最新文章

  1. 不对全文内容进行索引的 Loki 到底优秀在哪里
  2. proteus如何添加stm32_【Proteus】单片机H桥驱动24V直流有刷电机
  3. 高德地图 JS API - 根据地名实现标记定位
  4. 笔记本电脑性价比排行2019_办公笔记本电脑排名2019 五款适合办公的笔记本电脑推荐...
  5. CF724E Goods transportation
  6. cocos2dx CCLayerColor和CCLayerColor
  7. 最后一届90后毕业了 超485万人在抖音发布毕业视频
  8. java读取配置文件
  9. 软件设计师25-操作系统
  10. mysql mha好吗_MySQL高可用方案MHA的一些总结和思考
  11. Java对象创建、分配、布局、访问小析(HotSpot虚拟机)(二)
  12. asp.net2.0 发布网站选项说明
  13. ZZULIOJ 1010~1019(oj入门题)
  14. mysql外文文献中英文3千字_MySQL数据库管理外文中英文翻译文献.doc
  15. 【groovy #1】groovy的相关知识
  16. 服务器虚拟内存最佳设置范围,虚拟内存有什么用?虚拟内存设置多少合适?
  17. PDFBox实现图片转PDF --JAVA
  18. Re01:NerLTR-DTA: drug–target binding affinity prediction based on neighbor relationship and learning
  19. CSS去掉链接下划线的方法
  20. 一文速学数模-分类模型(二)决策树(Decision Tree)算法详解及python实现

热门文章

  1. nt和win2k源码模块位置
  2. Win正确关闭nginx服务(不要采坑了!!!)
  3. linux命令查进程,Linux常用命令(十)查看和控制进程
  4. 直播 | 电商智能推荐算法技术分享
  5. 掘金高端电子商务:奢侈品牌门户BaoTime.com上线
  6. umount时,目标忙解决办法
  7. C++ =default
  8. datagrid-detailview 使用总结
  9. 定位教程7---旋转中心标定之方法二
  10. 关键词词云怎么做_用Tagxedo在线制作个性化词云