【论文阅读】Rethinking Spatiotemporal Feature Learning For Video Understanding

这是一篇google的论文,它和之前介绍的一篇facebook的论文的研究内容非常相似链接地址,两篇论文放到ArXiv上只相差了一个月,但是个人感觉还是google的这篇写得好一些。(这篇博客解读的是早期版本的论文,后来新的版本的论文又在Something-something数据集上做了实验,所以一些图表和本文有些出入,旧版的论文10页,新版的论文17页。。
论文地址:下载地址
S3D-G代码(pytorch):下载地址

正文

3D卷积网络与2D卷积网络相比,始终存在着网络参数量太大而且计算效率不高的问题,但是3D卷积网络的准确率又明显好于2D卷积网络,所以为了解决这个问题,我们需要思考以下几个点:

  1. 3D卷积网络中是否需要全部都是3D卷积核?是否可以设计一个网络同时包含 2D卷积核和3D卷积核 来达到准确率与计算效率的 trade-off 呢?
  2. 是否可以通过分解3D卷积核为 2D+1D 卷积核的形式 来解决这个问题呢(虽然之前的P3D已经提出了(2D+1D)的方法,但是没有在kinetics数据集上做实验,不够完整)
  3. 我们如何使用上面思考的这些点来提升目前网络的性能?

对于第一个思考点,本文基于I3D来构建网络,在I3D网络中混合2D和3D卷积核,一种是Bottom-heavy-I3D-K,即前K个底层的卷积核为3D卷积核,其余为2D核,但是这种 bottom-heavy的结构可能计算效率也不是很高。另一种是 Top-heavy-I3D-K,即I3D网络的前K个顶层为3D核,其余为2D核。
对于第二个思考点,使用(2D+1D)卷积核来代替3D卷积核,这样的网络称为S3D网络,S3D网络参数少而且计算效率高,实验结果表明S3D网络的结果也要好于I3D网络。

各种网络结构

基本的I3D网络

本文的基础网络为I3D网络,之前也详细地介绍过链接地址,其基本的结构如下图所示:

I3D是基于3D Inception block的,3D Inception block 与 2D Inception block 的对比如下图所示:

Bottom-heavy-I3D-K网络和Top-heavy-I3D-K 网络

和之前介绍facebook那篇论文一样,对于同时包含3D卷积核与2D卷积核的网络,可以分为Bottom-heavy-I3D-K网络和Top-heavy-I3D-K 网络,其中Bottom-heavy-I3D-K表示把I3D网络中的前K个底层的3D卷积核保持,而其余的卷积核为2D卷积核。Top-heavy-I3D-K网络表示保持I3D网络中前K个顶层的3D卷积核不变,其余的卷积核为2D卷积核。其中Bottom-heavy网络与Top-heavy网络的结构如下图所示:

S3D网络

文章将因式分解3D卷积核为 2D+1D 卷积核的I3D网络称为S3D网络,其中分解的Inception block如下图所示:

使用分解的Inception block组成的I3D网络称为S3D网络,其结构如下图所示:

S3D-G网络

最后文章参考了17年ImageNet冠军提出的S-E block方案,提出了S3D-G block,并以此搭建了S3D-G网络,文章中说得gating其实相当于一种attention map,或者说是一种加权的方式,我们使用squeeze-excitation的方式来讲解gating的过程更容易理解。如下图所示:

根据上图就很容易理解论文中的gating操作了,首先对于尺寸为 CxTxHxW 的 feature map 进行 squeeze操作,也就是文章中的pooling操作,文章分别使用了 空间-时间池化、空间池化、时间池化、不做池化等方法,然后对squeeze的结果进行excitation操作,使用一个变换矩阵将上一步池化的结果变换为尺寸为 C 的加权向量或者说是注意力向量。变换矩阵的尺寸和池化的结果尺寸有关。最后使用该加权向量对原特征图中的channel维度进行加权。得到最终的 S3D-G模块。

各种网络的实验结果

3D卷积网络与2D网络的比较

首先我们看一下3D卷积核到底带来了多少价值,将I3D中的3D卷积核全部替换为2D卷积核,称该网络为I2D,理论上I2D不会捕获视频的时间动态,所以其应该对视频的顺序不敏感,于是作者在正常的顺序中分别训练I3D和I2D,然后测试的时候分别测试输入为正常顺序、随机打乱的顺序和倒序的情况,实验对比结果如下:

可以看到I2D完全不会捕获时间动态序列,打乱视频的帧顺序准确率也不会降低,有意思的是3DCNN 正向顺序数据训练后,测试反向顺序视频,其准确率差不多。文章认为是因为kinetics数据集并不需要因果推理。

Bottom-heavy-I3D-K网络和Top-heavy-I3D-K 网络的结果

文章实验了Bottom-heavy-I3D-K网络与Top-heavy-I3D-K的网络实验结果,如下图所示:

上图中蓝色的实线和蓝色的虚线分别表示Top-heavy与Bottom-heavy网络,可以看到很明显Top-heavy的性能要远远地好于Bottom-heavy,说明在视频的语义抽象层捕获视频的时间动态信息要好于在视频的像素级捕获视频的时间动态信息(与之前的facebook的论文的结论刚好相反,不知道是不是因为那一篇是Res3D,而这一篇是I3D,但是这篇论文的观点很让人信服)。为了进一步了解3D卷积网络不同层对于时间动态信息的学习,文章对从底层到顶层的卷积核进行了可视化,如下图所示:

在训练之前,同一个3D卷积核的不同时间的权值都是按照同一套方法初始化的(如图每一个小方格中的彩色块,可以看到不同时间的宽度值一样),然后训练之后的的权值使用两端封闭的线表示,可以看到在底层的卷积核中,卷积核中间时刻的权值很突出,所以其对时间不敏感,顶层的卷积核中,不同时刻的卷积核值的分布相似,所以学习到了时间动态特征。
所以在目前的3D卷积网络中,网络顶层的3D卷积核更容易学习到视频中的时间动态,我在想会不会是因为目前的视频包含大量的相机抖动,所以卷积核底层像素级的时间动态很混乱。

S3D的实验结果

文章同样实验了S3D网络的结果,如下表所示:

可以看到S3D网络无论是准确率、模型容量、还是计算效率都比原始的I3D要好。同时也可以根据之前介绍的2D+3D网络来构建Bottom-heavy-S3D-K网络和Top-heavy-S3D-K 网络,其结果如下图中的橙色线段,可以看到以S3D为基础的网络整体上优于以I3D为基础的网络,其中标记的 Fast-S3D网络是准确率与计算效率 trade-off最优的结果。

gating中最优的池化方法

之前介绍gating时讲到本文不同gating之间的区别就是池化方法的不同,文章当然也做了不同的池化方法的对比实验,实验结果如下表所示:

可以看到最优的池化方法还是空间和时间同时池化。

S3D-G的最终结果

最后的S3D-G 在kinetics上与之前的I3D相比,计算效率更高,准确率更高。
RGB输入的结果如下表所示:

光流输入的结果如下表所示:

【论文阅读】Rethinking Spatiotemporal Feature Learning For Video Understanding相关推荐

  1. 论文阅读|node2vec: Scalable Feature Learning for Networks

    论文阅读|node2vec: Scalable Feature Learning for Networks 文章目录 论文阅读|node2vec: Scalable Feature Learning ...

  2. Collaborative Spatiotemporal Feature Learning for Video Action Recognition 论文笔记

    论文笔记 1 引子 ​ 在本文中,我们提出了一种新颖的协作时空(CoST)特征学习操作,它与权重共享共同学习时空特征. ​ 给定3D体积视频张量,我们通过从不同角度观看它们,将其展平为三组2D图像. ...

  3. 【论文阅读】Spatio-Temporal Graph Convolutional Networks:...Traffic Forecasting[时空图卷积网络:用于交通预测的深度学习框架](1)

    [论文阅读]Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecastin ...

  4. 论文阅读笔记:SCAN: Learning to Classify Images without Labels

    论文阅读笔记:SCAN: Learning to Classify Images without Labels 摘要 简介和相关工作 方法 表征学习 语义聚类损失 2.3 通过自标记进行微调 3 实验 ...

  5. Zero-shot Learning零样本学习 论文阅读(一)——Learning to detect unseen object classes by between-class attribute

    Zero-shot Learning零样本学习 论文阅读(一)--Learning to detect unseen object classes by between-class attribute ...

  6. 年龄论文阅读——Deep Label Distribution Learning With Label Ambiguity

    论文阅读--Deep Label Distribution Learning With Label Ambiguity 版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.c ...

  7. 【论文笔记】Spatiotemporal Residual Networks for Video Action Recognition

    目录 摘要 1 介绍 3. 技术方法 3.1 Two-Stream residual 网络 3.2跨时间的卷积剩余连接 3.3建议结构 (Proposed architecture) 参考文献 参考 ...

  8. 【论文阅读】Occupancy Networks: Learning 3D Reconstruction in Function Space

    论文题目:Occupancy Networks: Learning 3D Reconstruction in Function Space(占据网络:在函数空间内学习三维重建,简称ONet) 论文作者 ...

  9. 【论文阅读】Weakly Supervised Learning of Instance Segmentation with Inter-pixel Relations

    一篇经典的弱监督分割论文,发表在CVPR2019上面 论文标题: Weakly Supervised Learning of Instance Segmentation with Inter-pixe ...

最新文章

  1. 12、Kubernetes核心技术Ingress
  2. Java vararg(动态参数)的应用
  3. SCCM 2007系列7 补丁分发上
  4. MusicXML 3.0 (7) - 连线、延音线
  5. intel 汇编中断解释
  6. Python——文本中读取到【\ufeff】解决方案
  7. 理解单例模式、单例类
  8. ionic4安卓真机调试
  9. jdbc mysql user_tab_comments_mysql/jdbc:设置useInformationSchema=true读取表注释信息(table_comment)...
  10. leetcode - 统计封闭岛屿的数目
  11. ERC721藏品合约详解,附代码实现
  12. 圆角进度条,带数字居中显示的圆角进度条
  13. 模拟多线程给多用户发送短信
  14. matlab中变量类型
  15. 互联网开放医疗之中医
  16. 教你如何赚取你的第一桶金 - 2048(含源码)
  17. CommandLineRunner接口介绍
  18. 怎么用照片制作MV视频?把照片合集做成MV视频的软件,实用制作教程!
  19. 非常出色的数字音乐编辑器-Cool Edit Pro提供下载
  20. 手游平台如何正确运营?

热门文章

  1. 深度学习核心词汇-英文
  2. 与或非逻辑运算符用法详解
  3. Android安卓反编译apk源代码,移动应用开发课程
  4. Ubuntu 复制文件到远端时错误,Permission denied 失败原因深度探索
  5. 拼多多店铺销量达到多少适合做付费推广?
  6. ubuntu进行MNN编译
  7. golang 获取当天0点时间_golang 获取当天是周几(两种方法)
  8. Nlog日志记录组件使用
  9. 决定物联网安全的有哪些因素
  10. 美国研究生院计算机数据科学排名,美国研究生数据科学专业排名